Skip to content

docs: correct ML-DSA-65 signing-mode description across spec, SDK, and demos - #57

Merged
chuks merged 1 commit into
mainfrom
docs/signing-mode-accuracy
Aug 4, 2026
Merged

docs: correct ML-DSA-65 signing-mode description across spec, SDK, and demos#57
chuks merged 1 commit into
mainfrom
docs/signing-mode-accuracy

Conversation

@chuks

@chuks chuks commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

What

Accuracy pass reconciling the ML-DSA-65 signing-mode description with actual
signer behavior across the SDKs.

Why

The spec (8.3, T10, the witness-fixture note) and several code comments stated
that v1 uses deterministic ML-DSA-65 signing. In practice only the Go reference
fixture generator is deterministic; the TypeScript, Python, Rust, and C SDKs sign
with hedged randomization, the default of their ML-DSA-65 libraries. Deterministic
and hedged signatures over identical canonical bytes are accepted interchangeably
by conforming verifiers, so interop and conformance are unaffected. This is a
documentation fix.

Scope

  • SPEC 8.3 restated as a signature-mode section with the canonical rule.
  • SPEC T10 and the witness-fixture note reconciled.
  • crypto.go and TypeScript crypto.ts comments corrected.
  • TypeScript README gains the signing-mode note the Python README already carries.
  • demos README scoped to signable-byte and hash reproduction plus signature verification.

No signer code changes and no extraEntropy flag added. Gates pass: readme-sync,
release-sync, Go build, TypeScript build.

…d demos

Only the Go reference fixture generator signs ML-DSA-65 deterministically; the
TypeScript, Python, Rust, and C SDKs sign with hedged randomization by default.
Both produce valid signatures accepted interchangeably by conforming verifiers,
so this corrects the documentation, not any behavior.

- SPEC 8.3: signing MAY be deterministic or hedged; canonical signable bytes and
  verification outcomes MUST match; the reference generator is deterministic only
  to make fixtures reproducible.
- SPEC T10 threat model and the witness-fixture note: reconcile the wording with
  actual signer behavior.
- crypto.go, TypeScript crypto.ts, TypeScript README, demos README: describe the
  actual signing mode, and note hedged signing as side-channel hardening that
  depends on trustworthy host entropy.

No signer code changes.

Signed-off-by: chuks <891251+chuks@users.noreply.github.com>
@chuks
chuks force-pushed the docs/signing-mode-accuracy branch from 53cd8bc to f90f4ad Compare August 4, 2026 03:07
@chuks
chuks merged commit 185cea3 into main Aug 4, 2026
14 checks passed
@chuks
chuks deleted the docs/signing-mode-accuracy branch August 4, 2026 03:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant