Changelog¶
All notable changes to qcrypto are documented here.
v1.0.0 — Stable Release¶
Released: January 2026
This release marks qcrypto as stable for experimental and research use.
- All features from v0.5.0 are stable and tested
- No breaking API changes from v0.5.0
- Comprehensive documentation site
v0.5.0 — Complete PQC Toolkit¶
Released: January 2026
Key Discovery & Default Keypaths¶
Keys are now automatically discovered at default locations:
~/.qcrypto/kem/private.keyand~/.qcrypto/kem/public.keyfor encryption~/.qcrypto/sig/private.keyand~/.qcrypto/sig/public.keyfor signatures
This follows conventions from OpenSSH (~/.ssh/), age, and GPG.
ASCII-Armored Key Format¶
Human-readable, copy/paste friendly keys and messages:
Use --armored flag in CLI or encoding="armor" in Python.
Digital Signatures via CLI¶
New qcrypto sign and qcrypto verify commands:
qcrypto sign --key priv.key --in message.txt --out message.sig
qcrypto verify --pub pub.key --in message.txt --sig message.sig
Supports Dilithium, Falcon, and SPHINCS+ algorithms.
Key Fingerprints¶
Stable key identity derived from public key:
Fingerprints are displayed in CLI output for verification.
Header Checksums¶
Ciphertext format v2 includes CRC32 checksum for nicer error messages:
- Detects corrupted headers
- Distinguishes wrong algorithm from file corruption
- Identifies truncated files early
Other Improvements¶
- Full CLI with
gen-key,encrypt,decrypt,sig-gen-key,sign,verify - Passphrase-protected private keys (PBKDF2-HMAC-SHA256 + AES-GCM)
- Interactive passphrase prompting
encrypt_message_armored()anddecrypt_message_armored()helpers
v0.4.0 — File Encryption & Streaming AES-GCM¶
Released: December 2025
New Features¶
- Added
encrypt_file()anddecrypt_file()for real file encryption workflows - Introduced streaming AES-256-GCM, allowing encryption/decryption of large files without loading the entire file into memory
- File ciphertext format matches the existing
encrypt()API for full compatibility
Ciphertext Format¶
[1 byte] version
[1 byte] algorithm id
[2 bytes] Kyber ciphertext length
[N bytes] Kyber ciphertext
[12 bytes] AES-GCM nonce
[M bytes] AES-GCM ciphertext + 16-byte GCM tag
Other Improvements¶
- Added round-trip file encryption tests
- Updated
__init__.pyto expose file encryption helpers - Internal refactoring to support chunked I/O
v0.3.0 — Expanded PQC Support¶
Released: December 2025
New Algorithms¶
- Falcon signatures (
FalconSig) - SPHINCS+ signatures (
SphincsSig) - Classic McEliece KEM (
ClassicMcElieceKEM)
Unified Signature Interface¶
- Added
SignatureSchemesupporting any liboqs signature algorithm
Examples¶
- Added Falcon, SPHINCS+, McEliece, and generic signature examples
Internal Improvements¶
- Restructured signatures/KEMs for easier future expansion
v0.2.0 — Hybrid API Rewrite¶
Released: November 2025
- Added new high-level hybrid
encrypt()anddecrypt() - Introduced standardized single-blob ciphertext format
- Added key serialization helpers
- Improved decapsulation API
- Legacy API preserved for compatibility
v0.1.0 — Initial Release¶
Released: October 2025
- Kyber KEM support
- Dilithium signature support
- Basic hybrid encryption with
encrypt_for_recipient()/decrypt_from_sender()