@@ -7,11 +7,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ### Added
11+ - ** Streaming AEAD Encryption** - High-performance streaming encryption for large files
12+ - ` Aes256GcmStreamEncryptor ` and ` Aes256GcmStreamDecryptor ` for AES-256-GCM
13+ - ` ChaCha20Poly1305StreamEncryptor ` and ` ChaCha20Poly1305StreamDecryptor `
14+ - Uses RustCrypto's ` aead::stream ` module (STREAM construction from RFC)
15+ - Implements EncryptorBE32/DecryptorBE32 with proper nonce derivation
16+ - Auto-generates 7-byte nonces (12-byte AEAD nonce - 5 bytes for counter/flag)
17+ - Methods: ` new() ` , ` nonce() ` , ` encrypt_next() ` , ` encrypt_last() ` , ` from_nonce() ` , ` decrypt_next() ` , ` decrypt_last() `
18+ - Proper ownership semantics (encrypt_last/decrypt_last consume self)
19+ - Each chunk independently authenticated with nonce-reuse resistance
20+ - Maximum 2^32 chunks per stream
21+ - Default chunk size: 64 KB, max chunk size: 1 MB
22+ - 5 comprehensive tests covering roundtrip, large data, authentication failures, and edge cases
23+ - Total test count increased to 108 tests (from 103)
24+
25+ - ** Comprehensive RFC/NIST Test Vectors** - 13 new test cases covering 28 test vectors from 8 standards
26+ - NIST CAVP vectors for AES-128/256-GCM (3 test cases)
27+ - RFC 7539 vectors for ChaCha20-Poly1305 (2 test cases)
28+ - RFC 4634 vectors for SHA-256/512 (7 test vectors)
29+ - RFC 4231 vectors for HMAC-SHA256/512 (10 test vectors)
30+ - RFC 6070 vectors for PBKDF2 (4 test cases, adapted for security minimums)
31+ - RFC 5869 vectors for HKDF (2 test cases)
32+
33+ - ** Constant-Time Operations Audit** - Complete review and documentation
34+ - Added ` subtle ` crate v2.6 for constant-time comparisons
35+ - Updated ` constant_time_eq() ` to use industry-standard ` subtle::ConstantTimeEq `
36+ - Created comprehensive ` CONSTANT_TIME_AUDIT.md ` documentation
37+ - Verified all MAC and AEAD operations use constant-time tag verification
38+ - Added security notes to MAC verification functions
39+ - Documented guidelines for when to use constant-time comparisons
40+
41+ - ** Serde Serialization Support** (behind ` serde-support ` feature flag)
42+ - Full serialization/deserialization for ` Ciphertext ` (encrypted data)
43+ - Serialization for Ed25519 public keys and signatures
44+ - Support for JSON, TOML, bincode, and all serde formats
45+ - Comprehensive example demonstrating usage patterns
46+ - Binary serialization ~ 55% more compact than JSON
47+ - Perfect for storing encrypted data and cryptographic keys
48+
49+ - ** Dependency Updates** - Updated 21 packages to latest stable versions
50+ - RustCrypto: aes-gcm 0.10.3, chacha20poly1305 0.10.1, pbkdf2 0.12.2, argon2 0.5.3
51+ - Asymmetric: ed25519-dalek 2.2.0 (from 2.1), x25519-dalek 2.0.1
52+ - Security: zeroize 1.8.2, subtle 2.6.1 (new), pkcs8 0.10.2 (new)
53+ - Encoding: base64 0.22.1
54+ - Dev deps: proptest 1.9.0 (from 1.5.0), hex-literal 1.1.0, serde_json 1.0.141, serde_bytes 0.11.19
55+ - All tests passing (193 with all features: 103 unit + 6 integration + 7 interop + 13 RFC vectors + 64 doc tests)
56+ - Avoided breaking changes: getrandom stays on 0.2.x, rand_core on 0.6.x for RustCrypto compatibility
57+
58+ - ** PKCS#8 Key Import/Export** (RFC 5208, RFC 5958, RFC 8410)
59+ - Full PKCS #8 DER/PEM support for Ed25519 and X25519 private keys
60+ - SPKI (SubjectPublicKeyInfo) DER/PEM support for public keys
61+ - Standards-compliant implementation using ` pkcs8 ` crate v0.10.2
62+ - OpenSSL-compatible key formats
63+ - Algorithm OIDs: Ed25519 (1.3.101.112), X25519 (1.3.101.110)
64+ - 8 new methods: ` to_pkcs8_der/pem ` , ` from_pkcs8_der/pem ` for keypairs
65+ - 8 new methods: ` to_public_key_der/pem ` , ` from_public_key_der/pem ` for public keys
66+ - Comprehensive example in ` examples/pkcs8_example.rs `
67+ - All doc tests passing with roundtrip verification
68+
1069### Planned
11- - RSA encryption and signatures (optional feature)
12- - PKCS #8 key import/export
1370- Streaming encryption API
1471- SHA-3 and BLAKE2 support
72+ - Property-based testing with proptest
73+
74+ ## [ 0.2.0] - 2025-10-29
75+
76+ ### Added
77+ - ** RSA Support** (behind ` rsa-support ` feature flag)
78+ - RSA-OAEP encryption with SHA-256
79+ - RSA-PSS signatures with SHA-256
80+ - 2048-bit and 4096-bit key generation
81+ - PEM/DER import/export (PKCS #8 )
82+ - Complete test suite with RFC test vectors
83+ - Benchmarks for RSA operations
84+ - Example code demonstrating usage
85+
86+ ### Security
87+ - ⚠️ ** IMPORTANT** : RSA implementation has known vulnerability (RUSTSEC-2023-0071 - Marvin timing attack)
88+ - Added prominent security warnings in documentation
89+ - Recommend Ed25519 for signatures and X25519+AEAD for encryption unless RSA is required for compatibility
90+
91+ ### Changed
92+ - Excluded development files from published crate (` .github/ ` , ` fuzz/ ` , ` TODOs.md ` , etc.)
93+ - Updated documentation to include RSA examples and security warnings
1594
1695## [ 0.1.0] - 2025-10-28
1796
0 commit comments