Hardware AES for wolfCrypt on the TI C2000 C28x

The TI C2000 family is TI’s real-time control line: the MCUs inside motor drives, solar inverters, EV chargers and digital power supplies. wolfCrypt now drives the hardware AES accelerator on the LAUNCHXL-F28P55X (TMS320F28P550SJ), a 150 MHz C28x DSP with 133 KB RAM and 1088 KB flash.

The F28P550SJ carries an on-chip AESA block, a TI EIP-120t supporting ECB, CBC, CTR, CFB, GCM and CCM at 128, 192 and 256-bit key lengths. wolfCrypt drives it through the crypto-callback framework rather than replacing aes.c. Software AES stays compiled in, and a context opts into hardware simply by passing a device ID to wc_AesInit(). Anything the block cannot do returns CRYPTOCB_UNAVAILABLE and falls back to software automatically. The reference example runs the same NIST vectors through both paths in a single image, which is how the port is validated.

Enable it with WOLFSSL_C2000_AES. The example in wolfSSL Examples turns it on with make HWAES=1. The port ships in wolfSSL PR #11202.

AES throughput at 150 MHz

Operation Software AESA Speedup
AES-128-ECB encrypt 471 KiB/s 2.39 MiB/s 5.2x
AES-256-ECB encrypt 377 KiB/s 2.34 MiB/s 6.3x
AES-128-CBC encrypt 405 KiB/s 2.37 MiB/s 6.0x
AES-128-CBC decrypt 388 KiB/s 2.36 MiB/s 6.2x
AES-256-CBC encrypt 333 KiB/s 2.32 MiB/s 7.1x
AES-256-CBC decrypt 322 KiB/s 2.29 MiB/s 7.3x
AES-128-CTR 408 KiB/s 1.45 MiB/s 3.6x
AES-256-CTR 335 KiB/s 1.45 MiB/s 4.4x

Hardware throughput is essentially key-length independent. The speedup therefore grows with key size, because software pays for the extra rounds while the accelerator does not.

Questions about wolfCrypt on TI C2000, or about a port to your own hardware? Email facts@wolfssl.com or call us at +1 425 245 8247.

Download wolfSSL Now