forked from nconsigny/SPHINCS-
-
Notifications
You must be signed in to change notification settings - Fork 0
Full adoption of nconsigny/main (237ab69 + verity FIPS FORS) #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Th0rgal
wants to merge
39
commits into
main
Choose a base branch
from
integrate/nconsigny-full-adoption
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
39 commits
Select commit
Hold shift + click to select a range
237ab69
FORS addressing: key by per-message hypertree leaf; migrate C7/C9 to …
2b49d38
docs: record C7/C9/C13 on the FIPS 205 uncompressed ADRS layout
71c9007
test: add FORS per-hypertree-leaf keying regression test
1d3abd3
docs: add C13 + SLH-DSA-SHA2 security review report
f5ff68c
C13: secret-key the message randomizer R (review C13-X-f2)
6f5eabe
docs/test: WOTS+C / FORS+C few-time analysis + reuse guard (review C1…
8a873eb
C13: repair the Rust<->Python cross-impl oracle (review C13-S-f1, C13…
a80cfc2
SLH-DSA-SHA2: FIPS 205 external mode + pinned KAT (review SLH-X-f1, S…
924537b
docs: correct SLH-DSA-SHA2 conformance + signature-budget claims (rev…
16732a7
C13 verifier + accounts: hardening (review C13-V-f1/f2, C13-evm-f1/f2…
0212ab4
ci: add GitHub Actions (cargo + forge + Python/C crosscheck) (review …
49dac7b
docs: retitle security report as agent-assisted review
3818245
fixes
363d741
docs(C13): finish ADRS-layout note — C7/C9 migrated, JARDIN retired t…
09aea99
docs(README): record 2026-06-04 C13 redeploy accounts + factories
aedfada
test(SLH-DSA-SHA2): pin Vulkan GPU KAT as JSON fixture + Forge check
5a3482f
verity(C13): FIPS 205 uncompressed ADRS FORS helpers (start of full C…
Th0rgal 0511c60
Resolve C13Concrete.lean conflict (keep main version)
Th0rgal 38d0a87
Merge remote-tracking branch 'origin/main' into integrate/nconsigny-f…
Th0rgal 3ea1d6b
verity: FIPS 205 §11.2.2 FORS address layout (model + spec + frame R0…
Th0rgal 82531be
verity(BindingFrame): update txOrigin / PR-1983 note post-merge
Th0rgal 7f2e380
verity: R2 SegmentForsSetup WIP (FORS pre-loop hoist)
Th0rgal 8a34396
verity: R2 SegmentForsSetup complete — match-pattern transformer, spe…
Th0rgal 650e5ad
verity: R3a/R3b — ClimbStepSpec 5-arg adrsForsNode, SegmentS4Finalize…
Th0rgal 0a54acf
verity: R3c ClimbMemFrameMerkle fors spec-fold lifts; memory-safe bui…
Th0rgal a6a53e7
verity: R3d — generalize spec forsClimb/fors*C13 to FIPS idxTree0/idx…
Th0rgal a7c2755
verity: R3e — SegmentS4ForsMerkleFrame node-correspondence half on FI…
Th0rgal 5bfeca3
verity: R4a — SegmentCompose threads stepForsSetup (afterForsSetup st…
Th0rgal b9ed42a
verity: R4b WIP — CurrentNodeFrame on FIPS digits: afterForsSetup fra…
Th0rgal 36e8986
verity: R4c — CurrentNodeFrame green on FIPS digits: forced-root/comp…
Th0rgal 9923081
verity: R4d — RootFrame on FIPS forsClimbBody (merkleClimbBodyA_pres,…
Th0rgal 3e73d91
verity: R4e — SegmentAcceptSpec green on FIPS digits: hR threading th…
Th0rgal af13b5e
verity: R4f — RejectSpec forsSetup hop; C13BridgePrep restored to las…
Th0rgal 48d766b
verity: update CLAUDE.md FIPS-FORS migration status (R2-R4 complete; …
Th0rgal 7a7b3ba
verity: Proofs.lean green — digit args at compress sites, hypothesis-…
Th0rgal c521231
verity: cleanup — generalize InitialNodeKeccak.fors_leaf_node_eq_spec…
Th0rgal 9fee891
Fix Bugbot findings on PR #6: crosscheck signs the external empty-ctx…
Th0rgal 5f12098
CI: CalldataGas FFI uses ambient python3 like every other FFI test (.…
Th0rgal aa6ead2
verity: prove all 16 residual composition-glue obligations (axioms → …
Th0rgal File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| name: CI | ||
|
|
||
| # Added per security-review remediation (steps 3/4/7): there was previously NO automated | ||
| # test/KAT/cross-implementation check. These jobs catch: | ||
| # - C13 Rust↔Python signer desync and the full-param cross-impl oracle (C13-S-f1, | ||
| # C13-V-f4) — via cargo test, including the #[ignore]d full-height tests; | ||
| # - SLH-DSA-SHA2 FIPS-205-external conformance — via a pinned, reproducible KAT | ||
| # forge test and real-signature FFI round-trips (SLH-X-f1, SLH-X-f4/f5); | ||
| # - SLH-DSA-SHA2 Python↔C (FIPS reference) primitive parity — via crosscheck.py. | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| pull_request: | ||
|
|
||
| jobs: | ||
| # ── C13 signer: fast unit tests + the previously-dead cross-impl oracle + | ||
| # WOTS+C / FORS+C reuse guards + the full-parameter sign (was #[ignore]d). ── | ||
| rust-signer: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 20 | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: dtolnay/rust-toolchain@stable | ||
| - name: cargo build (also builds the signer-c13 CLI used by the forge FFI fast path) | ||
| working-directory: signer-wasm | ||
| run: cargo build --release | ||
| - name: cargo test (cross_validate oracle, fors_reuse_poc, wots_reuse_poc) | ||
| working-directory: signer-wasm | ||
| run: cargo test --release | ||
| - name: cargo test --ignored (full-param C13 sign + full-height cross-impl checks) | ||
| working-directory: signer-wasm | ||
| run: cargo test --release -- --ignored | ||
|
|
||
| # ── Solidity verifiers + accounts. Sets up every FFI dependency so the full | ||
| # suite runs, including the pinned SLH external-FIPS KAT and real-signature | ||
| # round-trips. ── | ||
| solidity: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 40 | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: foundry-rs/foundry-toolchain@v1 | ||
| - uses: dtolnay/rust-toolchain@stable | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: '3.12' | ||
| - name: Python signer deps | ||
| run: pip install eth-account eth-abi requests pycryptodome | ||
| - name: Build C13 Rust signer CLI (fast path for the C13 FFI tests) | ||
| working-directory: signer-wasm | ||
| run: cargo build --release | ||
| - name: Build SLH-DSA-SHA2 C reference signer (FIPS oracle / fast signer backend) | ||
| run: make -C signers/sphincsplus-128-24 | ||
| - name: forge build | ||
| run: forge build | ||
| - name: forge test | ||
| run: forge test -vv | ||
|
|
||
| # ── SLH-DSA-SHA2 Python↔C (FIPS reference) parity. Run at REDUCED parameters: | ||
| # a full-param pure-Python sign/verify is hours (see README), and the C | ||
| # binary's params are compile-time — so we build a REDUCED-parameter C binary | ||
| # (params.h is -D-overridable) and run crosscheck.py at the matching small | ||
| # tree, where C and Python must agree bit-for-bit on the shared primitives | ||
| # (ADRSc packing, Hmsg/MGF1, MSB-first digest parse, WOTS checksum). This is | ||
| # a fast parity smoke test; full-param C↔Python parity is a manual/offline | ||
| # step. Validated locally to produce MATCH (identical pk_seed/pk_root/sig). | ||
| slh-crosscheck: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 15 | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: '3.12' | ||
| - name: Python deps | ||
| run: pip install pycryptodome eth-abi eth-account | ||
| - name: Build REDUCED-parameter C reference signer (h=6, a=8) for a fast crosscheck | ||
| run: make -C signers/sphincsplus-128-24 CFLAGS="-O3 -std=c99 -I. -DSPX_FULL_HEIGHT=6 -DSPX_FORS_HEIGHT=8" | ||
| - name: Python vs C bit-exact parity at the reduced params | ||
| run: | | ||
| SEED=$(python3 -c "print('11'*48)") | ||
| OPTRAND=$(python3 -c "print('00'*16)") | ||
| MSG=deadbeef00000000000000000000000000000000000000000000000000000000 | ||
| python3 signers/sphincsplus-128-24/crosscheck.py "$SEED" "$MSG" "$OPTRAND" --h 6 --a 8 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.