Leancrypto Version 1.8.0

Code

Changes 1.8.0

  • X.509: provide a common automated serial number generator which is the 20 leftmost bytes of the SHA3-256 hash of the certificate DER blob with the serial number being 20 bytes of 0xff and the signature part equally a range of 0xff bytes

  • Add full support for internal IV generation with GCM - this allows AES-GCM to be used in FIPS mode

  • Curve448: Fix AVX2 ABI issue

  • Rust: add X25519 / X448 API to support rustls

  • Rust: add HKDF API

  • Rust: add ED25519 API to support rustls

  • X.509: Add support for ED25519 and ED448 certificates to support rustTLS for a smooth transition to PQC

  • HMAC: deentangle key and hash management

  • Remove VLA in the entire library

  • Fixes to ChaCha20-Poly1305 and HKDF based on Wycheproof

  • Add first drop of rustls-leancrypto provider - this code is not production-ready, but it works with OpenSSL via localhost as well as AWS-provider procedurally

  • Add lc_kyber_[x25519|448]_[enc|dec] API

  • BIKE: fix bug on 32-bit Intel systems

  • Rust: add status API

  • Harden various functions, add defense in depth checks suggested by LLMs

  • Bug fix: ML-KEM KDF helper ingested only ML-KEM part and skipped X25519

  • Add return code checker defending against fault injections

  • ML-DSA / SLH-DSA: slicing the implementation to allow keygen, siggen and sigver to be compiled independently - together with dead code stripping, only the desired functionality is present (e.g. in secure boot mode, only sigver is of interest) - build-script/shim_support.sh compiles only signature verification

  • Linux kernel: add HMAC support

  • Ascon: add support and tests for NULL AAD and NULL PT

  • symmetric ciphers: return error codes for encrypt/decrypt

  • PBKDF2: add FIPS140-3 compliance checks

  • AEAD / Symmetric ciphers; add support for parallel use of cipher contexts - this fixes issues with the AES symmetric support in the Linux kernel

  • ChaCha20: increment only the 32 bit counter to be 100% compliant with RFC7539 - but that implies that for one given setiv only 2^32 - 1 bytes are allowed to be en/decrypted

  • All production and test code is now subject to regular UBSAN tests

  • Add Wycheproof compliance testing using Rust interface

  • Linux kernel: fix all UBSAN reports - the leancrypto.ko and all tests now work do not show any report with ASAN/UBSAN/kmemleak detector tested on X86 and ARMv8.