Repository navigation
This release adds support for the new AlphaRNG PQ device, which sets up its secure session with
post-quantum key exchange. Stock AlphaRNG devices keep working exactly as before.
New
- AlphaRNG PQ device support on Linux, FreeBSD, macOS and Windows, including device discovery
(USB product ID 0x0006, and the new udev rule for non-root access on Linux). - ML-KEM-1024 key exchange (FIPS 203) for secure sessions, using the bundled
mlkem-native library. No newer OpenSSL is required.
Session keys are sent AES-256-GCM encrypted with the ML-KEM shared secret;-cand-mstill select
how commands and data are protected after that. - Automatic device detection: the API identifies AlphaRNG and AlphaRNG PQ before any key exchange.
AlphaRNG PQ devices always use ML-KEM-1024; requesting ML-KEM-1024 on a stock AlphaRNG gives a clear error. -p MLKEM1024option inalrng,alseqgenandentropy-server(Windows).-k FILEaccepts ML-KEM-1024 public keys as well as RSA keys, as do the C API'spub_key_file
and the OpenSSL provider'skey_filesetting.alrng -lnow shows the reason when a device can't be connected.alperftestreports ML-KEM-1024 on AlphaRNG PQ devices and picks the RSA key size by device version.
Fixes and hardening
- Constant-time MAC comparison, initialized API members and checks on the session layout (#48).
- C API: device ID and model strings are now always null-terminated.
- API classes that own device or crypto resources can no longer be copied by mistake.
bitgrpsrejects directories, pipes and other non-regular files instead of hanging.
Windows
windows-x64sources are synced with the Linux/macOS sources; the ML-KEM sources are part of theapiproject.
Build, tests and documentation
- CMake,
MakefileandMakefile.bsdbuild the ML-KEM sources (C99). make testtarget for the unit tests (no device needed).- README: new section on RSA and ML-KEM-1024 sessions, and a note on setting
OPENSSL_CONFper command
when using the OpenSSL provider. - New
THIRD-PARTY-NOTICES.txt(mlkem-native, OpenSSL);LICENSEupdated. - Utility versions:
alrng2.6,alseqgen1.4,bitgrps1.2,entropy-server1.10. - Comment, Doxygen and version-tag cleanups throughout.
Compatibility
- C API: unchanged.
- C++ API:
AlphaRngConfighas a new last field,e_key_exchange. Code that creates it with braces and
leaves the field out still compiles and gets RSA, which the API switches to ML-KEM-1024 automatically on
AlphaRNG PQ devices. Code that declares anAlphaRngConfigand assigns its fields one by one must also set
e_key_exchange(for example toKeyExchange::rsa).
Software kit content description can be found at this address.
AlphaRNG quick start guide can be found at this location.
Full Changelog: v2.15...v3.0