-
Notifications
You must be signed in to change notification settings - Fork 16
Bouncy Castle Rust Roadmap
This alpha release includes the following cryptographic primitives:
- Hex (constant-time)
- Base64 (constant-time)
- SHA-2
- SHA-3
- HMAC
- HKDF
- The NIST HashDRBG random number generator
- ML-DSA
- ML-DSA_lowmemory
- ML-KEM
- ML-KEM_lowmemory
- Provider-style factory objects, and a command-line interface for all of the above.
But more than anything, the alpha release focuses on the design of the public trait and error type system contained in the core-interface sub-crate.
Next up will be to round out the set of cryptographic primitives:
- Block ciphers (AES and maybe ASCON and ChaChaPoly1305)
- Signatures (RSA, ECDSA, Ed25519, Ed448)
- Key Establishment (RSA, ECDH, X25519, X448)
- Hybrids / composites of the above
Stretch goals for 1.0 release:
- SLH-DSA
- LMS/HSS, XMSS -- implementing the verifier is probably higher priority than a signer since signers should probably use HSMs)
- Merkle Tree Certificates
- HQC, FrodoKEM
- Password hashing: PBKDF2, Argon2
After that, we'll tackle in some kind of order (depending on public interest and funding):
- PKIX (DER, X.509, CMS, CMP)
- integration with openssl and rustls for TLS 1.3
- PKCS#11 passthrough -- ie high-level APIs work the same regardless of whether it's using local software keys and crypto, or hardware-backed crypto.
- Softening the
#[forbid(unsafe)stance to be able to make use of hardware acceleration such as AVX, AESNI, SHA2. Will require some formal methods work. - JWT & CWT
- Refining the library's build system (no_std, feature granularity, build and release packaging, etc)
Bouncy Castle Rust is built to be FIPS certified, so as soon as we have a stable set of cryptographic algorithms, we will be first obtaining an ACVP certificate and then beginning the (long) process of obtaining a CMVP certificate. Hopefully we will be in a position to begin this by the end of 2026, but it will depend on our progress at completing the cryptographic algorithms.
As this is an alpha release, we're eagerly looking for feedback from the community. We would especially like feedback on the following areas:
- Public API ergonomics and granularity of exposed functionality.
- Certification / compliance concerns.
- Prioritization of roadmap items above.
You can reach us at office@bouncycastle.org or mike@bouncycastle.org.
Sincerely, Mike Ounsworth Lead Maintainer of BC-Rust, on behalf of the Legion of the Bouncy Castle and the entire Bouncy Castle community