mirror of
https://github.com/luxfi/pulsar.git
synced 2026-09-24 00:25:52 +00:00
Initial commit. Holds the technical specification (LaTeX), the design docs, the build/test/bench scripts, the package layout, and the empty ref/go/pkg/pulsarm skeleton. The spec at spec/pulsar-m.tex (11,300 words of LaTeX) is the canonical description of the protocol. docs/nist-mptc-category.md states the Class N1 + N4 claim. CONTRIBUTING.md and SECURITY.md pin the IP and disclosure posture. Subsequent commits land the reference implementation in stages. Signed-off-by: Lux Industries <[email protected]>
2.5 KiB
2.5 KiB
Contributing to Pulsar-M
What we accept
This is a NIST-MPTC-track repository. Until the 2026-Nov-16 package submission, contributions that align with the MPTC submission are highest priority:
- Specification clarity — text edits that disambiguate
spec/*.tex. - Reference implementation —
ref/go/. Boring, clear, no assembly, no clever abstractions. Match the spec section-by-section. - Test vectors —
vectors/*.json. Cross-validate against the FIPS 204 reference (output interchangeability is the headline claim). - Constant-time analysis —
ct/dudect/. Show, don't claim. - Lattice-estimator runs —
estimator/. Concrete classical + quantum security-strength tables. - Cryptanalysis — open an issue. We track external review explicitly.
What we don't accept
Until after the MPTC submission lands:
- New protocol features. Spec freeze is hard.
- Optimized implementations (AVX2, SIMD, hand-rolled assembly).
- HSM integration patches.
- Production-deployment patches.
- BLAKE3 hash-suite changes — the NIST profile uses SHAKE/cSHAKE/KMAC
exclusively. BLAKE3 deltas land in upstream
luxfi/pulsar, not here.
These reopen post-submission.
Process
- Open an issue first. Discuss the change before implementing.
- One concern per PR. Don't bundle spec edits with implementation changes. The MPTC review process treats them as separate artifacts.
- CI must pass. Build, test, KAT regeneration, dudect, lattice-estimator all green before merge.
- Sign your commits. GPG-signed, real name in
Signed-off-by. Patent-claim disclosures attach to commits.
Development setup
git clone https://github.com/luxfi/pulsar-m
cd pulsar-m
./scripts/build.sh
./scripts/test.sh
Spec build requires LaTeX (TeX Live 2024+):
cd spec/
latexmk -pdf pulsar-m.tex
Coding standards (Go reference)
- Go 1.22+.
- All logging via
github.com/luxfi/log. Nolog.Println,log.Fatalf,fmt.Printfin code that touches a secret. - All secret comparison via
crypto/subtleor local constant-time helpers. - All sampling via the central
pkg/samplinginterface. Directmath/randis forbidden. - Errors carry context via
fmt.Errorf("%w", err)not bare panics.
License
By contributing, you agree your contribution is licensed under Apache-2.0 and grant the patent license described in the Apache 2.0 §3.
For NIST MPTC submission: contributions are subject to the patent-claim
disclosures collected in docs/patent-notes-draft.md.