SDAA498 September   2026 AM62L

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Platform
  5. 2Yocto Integration (TI SDK Wrynose)
    1. 2.1 Layer Stack
    2. 2.2 OpenSSL 3.5 Native PQC: No Extra Steps Required
    3. 2.3 liboqs / oqs-provider Integration
    4. 2.4 Recovering From Build Errors
    5. 2.5 wolfSSL Integration
      1. 2.5.1 Choosing a Path
      2. 2.5.2 Step A1 — Option A: meta-wolfssl
      3. 2.5.3 Step A2 — Option B: meta-oe wolfssl (Library Only)
    6. 2.6 Step B — Build
    7. 2.7 Step C — OpenSSL Provider Configuration
  6. 3Performance Benchmarks
    1. 3.1 ML-KEM — All implementations
    2. 3.2 ML-DSA — All implementations
    3. 3.3 FrodoKEM (liboqs only)
    4. 3.4 Hybrid KEM — TLS overhead
    5. 3.5 armasm Impact on wolfSSL Performance
  7. 4NEON and HW Acceleration Analysis
    1. 4.1 Acceleration Status per Implementation
    2. 4.2 Recommendation by Algorithm
  8. 5Algorithm Availability Summary
  9. 6References

armasm Impact on wolfSSL Performance

--enable-armasm on aarch64 enables wolfSSL assembly for: hardware AES, hardware SHA-256/SHA-512, and NEON Keccak/SHAKE (sha3_asm.S). The table below shows the performance delta for PQC algorithms.

Algorithm Operation Without armasm (ops/s) With armasm (ops/s) Improvement
ML-KEM-512keygen11,89618,897 +59%
ML-KEM-512encaps10,31618,355 +78%
ML-KEM-512decaps7,25812,876 +77%
ML-KEM-768keygen6,14511,881 +93%
ML-KEM-768encaps6,13511,727 +91%
ML-KEM-768decaps4,5808,521 +86%
ML-KEM-1024keygen3,8237,820 +105%
ML-KEM-1024encaps3,8846,423 +65%
ML-KEM-1024decaps3,0615,572 +82%
ML-DSA-44keygen3,0803,606+17%
ML-DSA-44sign918834-9% †
ML-DSA-44verify2,9383,061+4%
ML-DSA-65keygen1,7652,044+16%
ML-DSA-65sign558532-5% †
ML-DSA-87keygen1,1731,275+9%
ML-DSA-87sign401438+9%
ML-DSA-87verify1,0961,171+7%

† ML-DSA signing uses rejection sampling — iteration count is stochastic and causes benchmark variance of ±10% to ±15%. The observed sign regression for ML-DSA-44/65 is within noise.

Note: Why ML-KEM benefits most from armasm:

ML-KEM uses SHAKE-128/256 (Keccak) as its primary primitive: key generation is approximately 60% Keccak, encapsulation is approximately 70% Keccak. wolfSSL's sha3_asm.S provides a NEON-optimized Keccak-f[1600] permutation, giving 60% to 100% speedup on all ML-KEM operations. ML-DSA uses SHAKE more sparingly (for hashing, not for the dominant NTT polynomial arithmetic), so the SHAKE speedup translates to a smaller overall improvement.