libsodium's roadmap is driven by its user community and new ideas are always welcome.
New features will be gladly implemented provided that they are not redundant and solve common problems.
- AEAD construction (ChaCha20Poly1305)
- API to set initial counter value in ChaCha20/Salsa20
- Big-endian compatibility
- BLAKE2
- ChaCha20
- Constant-time comparison
- Cross-compilation support
- Detached authentication for
crypto_box()
andcrypto_secretbox()
- Detached signatures
- Deterministic key generation for
crypto_box()
- Deterministic key generation for
crypto_sign()
- Documentation
- Ed25519 signatures
- Emscripten support
- FP rounding mode independent poly1305 implementation
- Faster portable curve25519 implementation
- Fix undefined behaviors for C99
- Guarded memory
- HMAC-SHA512, HMAC-SHA256
- Hex codec
- Hide specific implementations, expose wrappers
- Higher-level API for crypto_box
- Higher-level API for crypto_secretbox
- Lift
ZEROBYTES
requirements - Make all constants accessible via public functions
- MingW port
- Minimal build mode
- NuGet packages
- Password hashing
- Pluggable random number generator
- Portable memory locking
- Position-independent code
- Replace the build system with autotools/libtool
- Runtime CPU features detection
- Secure memory zeroing
- Seed and public key extraction from an ed25519 secret key
- SipHash
- Streaming support for hashing and authentication
- Streaming support for one-time authentication
- Support for arbitrary HMAC key lengths
- Support for architectures requiring strict alignment
- Visual Studio port
- 100% code coverage, static and dynamic analysis
arc4random*()
compatible API- ed25519 to curve25519 keys conversion
- iOS/Android compatibility
- Constant-time bin2hex() [DONE] and hex2bin() [DONE]
- Improve consistency and clarity of function prototypes
- Improve documentation
- Consider
getrandom(2)
[DONE] - Consider Gitian
- Complete the sodium-validation project [IN PROGRESS]
- Optimized implementations for ARM w/NEON
- AVX optimized Curve25119 [DONE]
- Precomputed interface for crypto_box_easy() [DONE]
- First-class support for Javascript [DONE]
- SIMD implementations of ChaCha20 [DONE]
- SIMD implementations of Poly1305 [DONE]
- chacha20 and chacha20poly1305 with a 96 bit nonce and a 32 bit counter [DONE]
- IETF-compatible chacha20poly1305 implementation [DONE]
- Ed448-Goldilocks
- SSE-optimized BLAKE2b implementation [DONE]
- AES-GCM [DONE]
- AES-GCM detached mode [DONE]
- ChaCha20-Poly1305 detached mode [DONE]
- Argon2i as crypto_pwhash [DONE]
- Multithreaded crypto_pwhash
- High-level key exchange API
- Generic subkey derivation API
- HS1-SIV or other nonce-misuse resistant scheme
- Consider SHAKE256
- BLAKE2 AVX2 implementations [DONE]
- Keyed (hash-then-encrypt) crypto_pwhash