All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.3.0 - 2026-02-25
- X.509 certificate parsing with SAN type support
- CSR (Certificate Signing Request) generation and parsing
- SHAKE128 and SHAKE256 extensible-output hash algorithms
hash.is_supportedfor runtime algorithm detection
- Support both OTP 27 and OTP 28
1.2.0 - 2026-01-19
- Concat KDF (NIST SP 800-56A) for key derivation
- ECDSA R||S format support with DER conversion utilities
- Made
BlockCipher,CipherContext, andAeadContextopaque types for better encapsulation
1.1.0 - 2026-01-16
- XChaCha20-Poly1305 with extended 192-bit nonces
- AES Key Wrap (RFC 3394) for secure key encapsulation
- Key introspection methods for all key types
- RSA CRT parameter computation for private keys
- EC key introspection (curve parameters, public point coordinates)
- Migrated tests to qcheck property-based testing
- Wycheproof tests now tagged and excluded from default test runs
- Erlang FFI refactored to use Gleam-generated .hrl records
1.0.0 - 2026-01-09
- SHA-1, SHA-256, SHA-384, SHA-512
- SHA-512/224, SHA-512/256
- SHA3-224, SHA3-256, SHA3-384, SHA3-512
- BLAKE2b, BLAKE2s
- Streaming API with
new/update/final
- HMAC with all supported hash algorithms
- Incremental and one-shot APIs
- Constant-time verification with
verify
- HKDF (RFC 5869) with extract-expand pattern
- PBKDF2 (RFC 8018) with configurable iterations
- AES-GCM (128, 192, 256-bit keys)
- AES-CCM (RFC 3610) with configurable nonce and tag sizes
- ChaCha20-Poly1305 (RFC 8439)
- AES in ECB, CBC, and CTR modes
- PKCS7 padding support for CBC mode
- ECDSA signing and verification (P-256, P-384, P-521, secp256k1)
- ECDH key agreement
- EC point import/export (compressed and uncompressed SEC1 format)
- Multiple hash algorithm support for signatures
- EdDSA signing and verification (Ed25519, Ed448)
- Deterministic signatures (no nonce required)
- Key import/export in raw bytes and PEM formats
- XDH key agreement (X25519, X448)
- Key import/export in ASN.1/DER/PEM formats
- Low-order point validation
- RSA-PSS signing with configurable salt length
- RSA PKCS#1 v1.5 signing (legacy support)
- RSA-OAEP encryption with configurable hash and MGF
- RSA PKCS#1 v1.5 encryption (legacy support)
- Key generation and PEM import/export
- Cryptographically secure random byte generation
- Constant-time byte comparison
- UUID v4 generation
- Dual runtime support (Erlang and JavaScript)
- Erlang target wraps OTP
:cryptoand:public_keymodules - JavaScript target wraps Node.js
cryptomodule
- Wycheproof test vector validation for ECDSA, AES-GCM, AES-CBC, ChaCha20-Poly1305, XDH, and ECDH