Releases: turkananation/pqcrypto
Releases · turkananation/pqcrypto
Release list
pqcrypto v0.4.1
Immutable
release. Only release title and notes can be modified.
What's Changed
- docs: define release branch flow by @turkananation in #35
- docs: plan FIPS 202 and SP 800-185 completion by @turkananation in #49
- feat: establish SLH-DSA M1 foundation by @turkananation in #51
- release: promote pqcrypto 0.4.0 (develop → main) by @turkananation in #52
- refactor(slhdsa): address PR #52 review nits (byte-identical) by @turkananation in #53
- Main by @turkananation in #54
- Fix PR 54 follow-up and improve release surfaces by @turkananation in #55
- Promote pqcrypto 0.4.0 release to main by @turkananation in #56
Full Changelog: v0.3.1...v0.4.1
pqcrypto 0.4.0
Immutable
release. Only release title and notes can be modified.
Added
- Added FIPS 205 SLH-DSA for all 12 parameter sets — both hash families
(SHAKE and SHA-2) across 128/192/256 and the small/fasts/fvariants —
exported at the package root asSlhDsa,SlhDsaParams,SlhDsaParameter,
andSlhDsaPreHash. Internal Algorithms 18-20 stay source-only for ACVP
execution; WOTS+/XMSS/hypertree/FORS remain internal components, not public
APIs. - Added the pinned official NIST ACVP SLH-DSA sample corpus for all 12
parameter sets (1,248 keyGen/sigGen/sigVer cases), with source provenance,
SHA-256 integrity checks, and ACVP structure/coverage tests. A VM-only ACVP
runner is byte-exact on all 1,248 cases. - Vendored the SHA-2-family primitives beneath the six SHA-2 sets: HMAC-SHA-256/512
(RFC 4231) and MGF1-SHA-256/512 (RFC 8017), each independently KAT-gated, plus
the 22-byte compressed address (ADRS^c) and the security-category 1 vs 3/5
SHA-256/SHA-512 instantiation split. Added SHA-224, SHA-512/224, and
SHA-512/256 to the vendored FIPS 180-4 core for the complete HashSLH-DSA
pre-hash matrix. - Implemented the FIPS 205 component and signature algorithms (5-25) with
portableBigInttree indices, hedged-by-default signing, explicit
deterministic and slow-signing (allowSlowSigning) paths, context binding
(<= 255 bytes), HashSLH-DSA pre-hash with DER OIDs, optional verify-after-sign
fault detection, best-effort secret zeroization, and total malformed-input
verification (length-checked before parsing). - Added component, negative, and package-root API/misuse tests, and a portable
SLH-DSA benchmark harness covering all 12 sets. Published single-sample
keygen/sign/verify baselines under VM JIT, compiled JavaScript, and compiled
Wasm. - Added SHA3-224 and SHA3-384 to the vendored FIPS 202 implementation, direct
Keccak-f[1600] constants/profile tests, and a normalized selected NIST
byte-example corpus with source provenance.
Changed
- Added explicit Keccak sponge/output validation and broader VM/web regression
coverage for rate boundaries and incremental XOF squeezing. - Surfaced the SLH-DSA message-bound (BUFF), deterministic-signing,
slow-parameter, RBG, and best-effort zeroization boundaries in API and release
documentation. This remains KAT/regression evidence, not a CMVP/FIPS 140
validation claim. - Promoted SLH-DSA to a first-class released algorithm alongside ML-KEM and
ML-DSA: the package version is now0.4.0, and the generated website,
AI-discovery files, and coding-agent rules list all 12 SLH-DSA sets with
1,248/1,248 ACVP evidence as part of the 0.4.0 surface.
pqcrypto v0.3.1
📝 Metadata Update
Updated pubspec.yaml description to accurately reflect full FIPS 204 ML-DSA support, removing the "experimental" label, and highlighting the zero-dependency architecture.
No code changes.
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