Parent: #28 · Track A (cert-side) · No dependencies · Blocks PRs 2, 3, 6
Scope
Teach the Rust SPKI parser to recognize post-quantum signature/key algorithm OIDs so PQ certs no longer collapse to PublicKeyAlgorithm::Unknown. Pure additive change.
In scope
- ML-DSA-44 / 65 / 87 (FIPS-204) OIDs
- SLH-DSA variants (FIPS-205) OIDs
- Falcon OIDs (when codepoints are stable; otherwise stub with TODO)
- Hybrid composite signature OIDs (draft-ietf-lamps-pq-composite-sigs — note in code that this table will need updates as registry stabilizes)
- Extend
PublicKeyAlgorithm enum with new variants
- Update
pyobj.rs to translate new variants into the Python-facing dict
Out of scope
- Any Python validator changes (those land in subsequent PRs)
- TLS-side OIDs (those land in Track B)
Files to touch
Tests
- One unit test per OID in
spki.rs#tests building a synthetic SPKI and asserting the parsed variant.
- Round-trip the Python-facing dict for at least one PQ algorithm to confirm
pyobj.rs mapping.
Definition of Done
Parent: #28 · Track A (cert-side) · No dependencies · Blocks PRs 2, 3, 6
Scope
Teach the Rust SPKI parser to recognize post-quantum signature/key algorithm OIDs so PQ certs no longer collapse to
PublicKeyAlgorithm::Unknown. Pure additive change.In scope
PublicKeyAlgorithmenum with new variantspyobj.rsto translate new variants into the Python-facing dictOut of scope
Files to touch
parsed()Tests
spki.rs#testsbuilding a synthetic SPKI and asserting the parsed variant.pyobj.rsmapping.Definition of Done
make ciclean (ruff, cargo fmt, clippy-D warnings, pytest, mypy, cargo audit, bandit)developfromfeat/pq-spki-oids