In the aerospace and defense (A&D) sectors, security, performance, and deterministic assurance are mission-critical. And as various industries prepare for the Post-Quantum Cryptography transition, embedded developers need development tools and security libraries that don’t compromise on constrained system resources. wolfSSL and IAR provide a proven complementary solution that combines an optimized embedded toolchain with lightweight, high-performance security.
IAR, part of Qt Group, provides highly performant compilation, functional safety certification (including ISO 26262 and IEC 61508 standards), and code-size minimization. Meanwhile, wolfSSL delivers lightweight, high-performance security protocols including TLS 1.3, DTLS 1.3, and support for the latest NIST-standardized post-quantum algorithms. Engineers building mission-critical A&D systems can readily pair wolfSSL’s FIPS 140-3 validated cryptographic module with IAR’s hardened toolchain to meet strict compliance and security mandates.
To evaluate this combination, wolfSSL benchmarked wolfCrypt on an STM32H753 (ARM Cortex-M7) using both IAR Embedded Workbench and Arm GCC with identical build settings, including wolfSSL’s in-line assembly acceleration for the THUMB2 architecture. Testing focused on cryptographic performance commonly required in secure embedded communications.
Benchmark Results
wolfCrypt with arm-none-eabi-gcc -Ofast and ARM ASM acceleration
wolfCrypt Benchmark (block bytes 1024, min 1.0 sec each) RNG 4 MiB took 1.004 seconds, 4.474 MiB/s AES-128-GCM-enc 7 MiB took 1.000 seconds, 7.056 MiB/s AES-128-GCM-dec 7 MiB took 1.000 seconds, 7.080 MiB/s AES-192-GCM-enc 6 MiB took 1.000 seconds, 6.494 MiB/s AES-192-GCM-dec 6 MiB took 1.000 seconds, 6.470 MiB/s AES-256-GCM-enc 6 MiB took 1.000 seconds, 6.006 MiB/s AES-256-GCM-dec 6 MiB took 1.000 seconds, 5.981 MiB/s AES-128-GCM-enc-no_AAD 7 MiB took 1.000 seconds, 7.153 MiB/s AES-128-GCM-dec-no_AAD 7 MiB took 1.000 seconds, 7.129 MiB/s AES-192-GCM-enc-no_AAD 7 MiB took 1.000 seconds, 6.543 MiB/s AES-192-GCM-dec-no_AAD 7 MiB took 1.000 seconds, 6.543 MiB/s AES-256-GCM-enc-no_AAD 6 MiB took 1.000 seconds, 6.030 MiB/s AES-256-GCM-dec-no_AAD 6 MiB took 1.000 seconds, 6.030 MiB/s GMAC ARM ASM 14 MiB took 1.000 seconds, 13.989 MiB/s CHACHA 37 MiB took 1.000 seconds, 36.816 MiB/s CHA-POLY 22 MiB took 1.000 seconds, 21.924 MiB/s POLY1305 112 MiB took 1.000 seconds, 111.865 MiB/s SHA-256 15 MiB took 1.000 seconds, 15.015 MiB/s SHA3-224 6 MiB took 1.000 seconds, 6.470 MiB/s SHA3-256 6 MiB took 1.004 seconds, 6.128 MiB/s SHA3-384 5 MiB took 1.000 seconds, 4.712 MiB/s SHA3-512 3 MiB took 1.004 seconds, 3.283 MiB/s SHAKE128 7 MiB took 1.000 seconds, 7.495 MiB/s SHAKE256 6 MiB took 1.000 seconds, 6.128 MiB/s HMAC-SHA256 15 MiB took 1.000 seconds, 14.868 MiB/s RSA 2048 public 422 ops took 1.000 sec, avg 2.370 ms, 422.000 ops/sec RSA 2048 private 12 ops took 1.051 sec, avg 87.583 ms, 11.418 ops/sec DH 2048 key gen 25 ops took 1.012 sec, avg 40.480 ms, 24.704 ops/sec DH 2048 agree 26 ops took 1.055 sec, avg 40.577 ms, 24.645 ops/sec ML-KEM 512 128 key gen 1420 ops took 1.000 sec, avg 0.704 ms, 1420.000 ops/sec ML-KEM 512 128 encap 1428 ops took 1.000 sec, avg 0.700 ms, 1428.000 ops/sec ML-KEM 512 128 decap 1056 ops took 1.000 sec, avg 0.947 ms, 1056.000 ops/sec ML-KEM 768 192 key gen 890 ops took 1.000 sec, avg 1.124 ms, 890.000 ops/sec ML-KEM 768 192 encap 862 ops took 1.000 sec, avg 1.160 ms, 862.000 ops/sec ML-KEM 768 192 decap 666 ops took 1.000 sec, avg 1.502 ms, 666.000 ops/sec ML-KEM 1024 256 key gen 552 ops took 1.000 sec, avg 1.812 ms, 552.000 ops/sec ML-KEM 1024 256 encap 536 ops took 1.000 sec, avg 1.866 ms, 536.000 ops/sec ML-KEM 1024 256 decap 438 ops took 1.000 sec, avg 2.283 ms, 438.000 ops/sec ECC [ SECP256R1] 256 key gen 812 ops took 1.000 sec, avg 1.232 ms, 812.000 ops/sec ECDHE [ SECP256R1] 256 agree 370 ops took 1.004 sec, avg 2.714 ms, 368.526 ops/sec ECDSA [ SECP256R1] 256 sign 436 ops took 1.000 sec, avg 2.294 ms, 436.000 ops/sec ECDSA [ SECP256R1] 256 verify 240 ops took 1.004 sec, avg 4.183 ms, 239.044 ops/sec Benchmark complete
wolfCrypt with IAR CC (speed) and ARM ASM acceleration
wolfCrypt Benchmark (block bytes 1024, min 1.0 sec each) RNG 5 MiB took 1.000 seconds, 5.005 MiB/s AES-128-GCM-enc 7 MiB took 1.000 seconds, 7.031 MiB/s AES-128-GCM-dec 7 MiB took 1.000 seconds, 7.031 MiB/s AES-192-GCM-enc 6 MiB took 1.000 seconds, 6.445 MiB/s AES-192-GCM-dec 6 MiB took 1.000 seconds, 6.445 MiB/s AES-256-GCM-enc 6 MiB took 1.000 seconds, 5.981 MiB/s AES-256-GCM-dec 6 MiB took 1.000 seconds, 5.957 MiB/s AES-128-GCM-enc-no_AAD 7 MiB took 1.000 seconds, 7.080 MiB/s AES-128-GCM-dec-no_AAD 7 MiB took 1.000 seconds, 7.080 MiB/s AES-192-GCM-enc-no_AAD 6 MiB took 1.000 seconds, 6.494 MiB/s AES-192-GCM-dec-no_AAD 7 MiB took 1.000 seconds, 6.519 MiB/s AES-256-GCM-enc-no_AAD 6 MiB took 1.000 seconds, 6.030 MiB/s AES-256-GCM-dec-no_AAD 6 MiB took 1.000 seconds, 6.030 MiB/s GMAC ARM ASM 14 MiB took 1.000 seconds, 13.989 MiB/s CHACHA 37 MiB took 1.000 seconds, 36.865 MiB/s CHA-POLY 24 MiB took 1.000 seconds, 23.682 MiB/s POLY1305 112 MiB took 1.000 seconds, 111.865 MiB/s SHA-256 15 MiB took 1.004 seconds, 15.003 MiB/s SHA3-224 6 MiB took 1.000 seconds, 6.445 MiB/s SHA3-256 6 MiB took 1.000 seconds, 6.079 MiB/s SHA3-384 5 MiB took 1.000 seconds, 4.688 MiB/s SHA3-512 3 MiB took 1.000 seconds, 3.271 MiB/s SHAKE128 7 MiB took 1.000 seconds, 7.471 MiB/s SHAKE256 6 MiB took 1.000 seconds, 6.079 MiB/s HMAC-SHA256 15 MiB took 1.000 seconds, 14.771 MiB/s RSA 2048 public 426 ops took 1.000 sec, avg 2.347 ms, 426.000 ops/sec RSA 2048 private 12 ops took 1.051 sec, avg 87.583 ms, 11.418 ops/sec DH 2048 key gen 25 ops took 1.012 sec, avg 40.480 ms, 24.704 ops/sec DH 2048 agree 26 ops took 1.051 sec, avg 40.423 ms, 24.738 ops/sec ML-KEM 512 128 key gen 1626 ops took 1.000 sec, avg 0.615 ms, 1626.000 ops/sec ML-KEM 512 128 encap 1532 ops took 1.000 sec, avg 0.653 ms, 1532.000 ops/sec ML-KEM 512 128 decap 1122 ops took 1.000 sec, avg 0.891 ms, 1122.000 ops/sec ML-KEM 768 192 key gen 1010 ops took 1.000 sec, avg 0.990 ms, 1010.000 ops/sec ML-KEM 768 192 encap 922 ops took 1.000 sec, avg 1.085 ms, 922.000 ops/sec ML-KEM 768 192 decap 704 ops took 1.000 sec, avg 1.420 ms, 704.000 ops/sec ML-KEM 1024 256 key gen 614 ops took 1.000 sec, avg 1.629 ms, 614.000 ops/sec ML-KEM 1024 256 encap 574 ops took 1.000 sec, avg 1.742 ms, 574.000 ops/sec ML-KEM 1024 256 decap 462 ops took 1.003 sec, avg 2.171 ms, 460.618 ops/sec ECC [ SECP256R1] 256 key gen 816 ops took 1.000 sec, avg 1.225 ms, 816.000 ops/sec ECDHE [ SECP256R1] 256 agree 386 ops took 1.004 sec, avg 2.601 ms, 384.462 ops/sec ECDSA [ SECP256R1] 256 sign 438 ops took 1.000 sec, avg 2.283 ms, 438.000 ops/sec ECDSA [ SECP256R1] 256 verify 242 ops took 1.004 sec, avg 4.149 ms, 241.036 ops/sec Benchmark complete
One of the most notable findings was the performance of ML-KEM, the first post-quantum cryptography algorithm standardized by NIST in FIPS 203. Across all tested security levels, IAR outperformed Arm GCC during ML-KEM key generation.

Additional performance gains were observed in the wolfCrypt random number generator and ChaCha20-Poly1305 operations.
As organizations prepare for the transition to post-quantum cryptography, performance remains a key consideration for resource-constrained embedded systems. These results demonstrate that developers can achieve measurable gains in post-quantum workloads while maintaining the security and portability required for embedded deployments.
The results demonstrate how wolfSSL and IAR can work together to build embedded applications with cutting edge security, while maximizing performance and minimizing resource usage. This combination is particularly well suited for aerospace and defense systems where secure communications, compliance requirements, and efficient resource utilization are critical.
Ready to evaluate the results yourself?
Access the wolfSSL source code on GitHub to explore wolfCrypt’s lightweight cryptographic implementations and benchmarking capabilities.
You can also download a free evaluation version of IAR Embedded Workbench for Arm, part of the IAR Platform, to explore the optimization technology used in these benchmarks, including compiler, debugger, runtime analysis, and code quality tools.
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

