pqcrypto v0.3.0
🔐 ML-DSA (FIPS 204) — NEW
Full FIPS 204-aligned ML-DSA digital signature support:
- ML-DSA-44, ML-DSA-65, ML-DSA-87 — all three parameter sets
- Byte-exact against the official NIST KAT corpus (300 keygen + 1800 signatures)
- External API:
sign/verifywith context strings, hedged-by-default signing - HashML-DSA:
hashSign/hashVerifywith FIPS 204 §5.4 SHA-2 pre-hash - Deterministic and hedged modes, both raw and external flavors
🛡️ ML-KEM Hardening
- Constant-time branchless output selection in decapsulation
- Secret intermediate zeroization in
finallyblocks - 3000-vector KAT corpus remains byte-exact
📦 Zero Dependencies
- Vendored FIPS 180-4 SHA-2 (SHA-256/384/512) with web-safe 64-bit arithmetic
- Pure Dart, no external runtime dependencies
- Flutter and Web (Wasm/JS) compatible
🔧 Additional
- Project-level Universal Multi-Agent PQC Framework setup
example/main.dartnow demonstrates ML-KEM + ML-DSA handshakedoc/SERVERPOD_FLUTTER_GUIDE.mdfor Serverpod/Flutter integration
🐛 Fixed
RejBoundedPoly(ExpandS) for η=2: correct half-byte acceptance per FIPS 204, fixing key generation divergence- ML-DSA verification no longer overflows with 32-bit left shift on
dart2js
⚠️ Claim Boundary
This release makes no CMVP/FIPS 140 module validation claim. Conformance evidence is the checked-in KAT corpus and regression suite. See doc/FIPS_140_BOUNDARY.md for details.
Install: dart pub add pqcrypto or add pqcrypto: ^0.3.0 to your pubspec.yaml
pub.dev: https://pub.dev/packages/pqcrypto