Improved NXP MMCAU Crypto hardware performance

The NXP Memory-Mapped Cryptographic Acceleration Unit (mmCAU) is on many Kinetis and ColdFire microcontrollers. It improves symmetric AES and SHA performance as compared to our software based implementation. The v4.2.0 enhanced the MMCAU support to use multiple blocks against hardware and optimizes to avoid memory copies (memcpy) when able. This resulted in a 20-78% improvement.

Features:

  • Enhancement for NXP MMCAU to process more than one block at a time.
  • Added optional buffer alignment detection macro WC_HASH_DATA_ALIGNMENT to avoid memcpy.
  • Added MD5 and SHA-1 support for XTRANSFORM_LEN to process blocks.
  • Cleanups for consistency between algorithms and code commenting.

Improved MMCAU performance: SHA-1 by 35%, SHA-256 by 20% and MD5 by 78%.

NXP K64 MMCAU with wolfSSL v4.2.0:

MD5                  8 MB took 1.000 seconds,    7.910 MB/s

SHA                  4 MB took 1.005 seconds,    3.644 MB/s

SHA-256              2 MB took 1.006 seconds,    2.306 MB/s
NXP K64 MMCAU with wolfSSL v4.1.0:

MD5                  4 MB took 1.004 seconds,    4.450 MB/s

SHA                  3 MB took 1.006 seconds,    2.670 MB/s

SHA-256              2 MB took 1.008 seconds,    1.913 MB/s

Changes are in GitHub pull request #2481 and in the wolfSSL v4.2.0 release.

For more information please email us at facts@wolfssl.com.