HW Crypto Support for the NXP LPC55S69

wolfSSL announces wolfBoot / wolfCrypt support for hardware crypto acceleration in the NXP LPC55S69, available now in the following PR’s:

This includes TRNG, SHA1, SHA-256, AES-CBC, AES-ECB, AES-OFB, AES-CFB, and AES-CTR. AES supports key sizes of 128, 192, and 256.

About the NXP LPC55S69

The LPC55S69 is a general-purpose edge computing device with dual ARM Cortex-M33 cores running up to 150 MHz, 640/320 KB internal flash/ram, TrustZone-M, a DSP accelerator, and extensive cryptographic acceleration. The LPC55S69 strikes a good balance between high performance and low power operation.

wolfBoot on the NXP LPC55S69

wolfBoot provides three sample configurations for quick start of development:

lpc55s69.config

  • Non-secure wolfBoot and application, smallest footprint

lpc55s69-benchmark.config

  • Same as lpc55s69.config, but with test and benchmarking turned on, in a larger footprint

lpc55s69-tz.config

  • wolfBoot in the Secure World, application in the Non-Secure World
  • wolfBoot provides a PKCS #11 cryptographic API to the non-secure world
  • wolfBoot footprint: 200 KB partition, 80 KB keyvault, 114 KB ram

In all three config files, hardware acceleration is turned off by default. Use PKA=1 in each config file, to turn on the hardware acceleration.

LPC55S69 Benchmark

The following table captures the throughput improvement of various crypto algorithms with hardware acceleration on the LPC55S69, per use of lpc55s69-benchmark.config. All measurements were taken with the core CPU running at 96 MHz on the LPCXpresso55S69 board (LPC55S69-EVK).

Algorithm PKA=0 PKA=1 x Increase
RNG SHA-256 DRBG 311.3 KiB/s 642.3 KiB/s 2.1
AES-128-CBC-enc 333.0 KiB/s 23.7 MiB/s 71.0
AES-128-CBC-dec 331.1 KiB/s 22.1 MiB/s 66.7
AES-192-CBC-enc 289.9 KiB/s 23.5 MiB/s 81.1
AES-192-CBC-dec 288.5 KiB/s 19.5 MiB/s 67.7
AES-256-CBC-enc 258.5 KiB/s 21.6 MiB/s 83.5
AES-256-CBC-dec 258.7 KiB/s 17.5 MiB/s 67.7
AES-128-GCM-enc 265.2 KiB/s 928.6 KiB/s 3.5
AES-128-GCM-dec 265.4 KiB/s 929.5 KiB/s 3.5
AES-192-GCM-enc 236.5 KiB/s 922.2 KiB/s 3.9
AES-192-GCM-dec 236.7 KiB/s 923.2 KiB/s 3.9
AES-256-GCM-enc 214.9 KiB/s 914.0 KiB/s 4.3
AES-256-GCM-dec 215.1 KiB/s 914.9 KiB/s 4.3
AES-128-GCM-enc-no_AAD 266.0 KiB/s 939.7 KiB/s 3.5
AES-128-GCM-dec-no_AAD 266.2 KiB/s 940.6 KiB/s 3.5
AES-192-GCM-enc-no_AAD 237.2 KiB/s 934.1 KiB/s 3.9
AES-192-GCM-dec-no_AAD 237.4 KiB/s 936.0 KiB/s 3.9
AES-256-GCM-enc-no_AAD 215.5 KiB/s 925.0 KiB/s 4.3
AES-256-GCM-dec-no_AAD 215.7 KiB/s 925.9 KiB/s 4.3
GMAC Table 1208.0 KiB/s 1.2 MiB/s
AES-128-ECB-enc 364.2 KiB/s 24.5 MiB/s 67.3
AES-128-ECB-dec 374.9 KiB/s 24.0 MiB/s 64.0
AES-192-ECB-enc 311.2 KiB/s 24.3 MiB/s 78.2
AES-192-ECB-dec 323.8 KiB/s 21.0 MiB/s 64.8
AES-256-ECB-enc 276.1 KiB/s 22.3 MiB/s 80.7
AES-256-ECB-dec 284.0 KiB/s 18.7 MiB/s 65.7
AES-128-CFB-enc 328.9 KiB/s 3.1 MiB/s 9.5
AES-128-CFB-dec 331.1 KiB/s 3.1 MiB/s 9.5
AES-192-CFB-enc 286.5 KiB/s 3.1 MiB/s 10.8
AES-192-CFB-dec 288.5 KiB/s 3.1 MiB/s 10.7
AES-256-CFB-enc 256.1 KiB/s 3.0 MiB/s 11.8
AES-256-CFB-dec 257.5 KiB/s 3.0 MiB/s 11.7
AES-128-OFB-enc 343.1 KiB/s 3.0 MiB/s 8.8
AES-128-OFB-dec 343.1 KiB/s 3.0 MiB/s 8.8
AES-192-OFB-enc 297.3 KiB/s 3.0 MiB/s 10.0
AES-192-OFB-dec 297.3 KiB/s 3.0 MiB/s 10.0
AES-256-OFB-enc 264.7 KiB/s 2.9 MiB/s 11.1
AES-256-OFB-dec 264.4 KiB/s 2.9 MiB/s 11.1
AES-128-CTR 346.2 KiB/s 17.7 MiB/s 51.1
AES-192-CTR 299.1 KiB/s 17.6 MiB/s 59.0
AES-256-CTR 266.0 KiB/s 16.5 MiB/s 62.1
SHA-256 1000.0 KiB/s 57.4 MiB/s 57.4
SHA-384 400.6 KiB/s 400.0 KiB/s
SHA-512 400.6 KiB/s 400.0 KiB/s
SHA-512/224 400.2 KiB/s 400.0 KiB/s
SHA-512/256 400.6 KiB/s 400.0KiB/s
HMAC-SHA256 991.1 KiB/s 48.8 MiB/s 49.2
HMAC-SHA384 394.1 KiB/s 393.7 KiB/s
HMAC-SHA512 394.1 KiB/s 393.7 KiB/s

If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.

Download wolfSSL Now