
davidherranandClaude Opus 4.7
d652a3d6e4
feat(provenance): Phase 2.1 v0.0.16 — Real Ed25519 verification (PROV-4 COMPLETE)
PROV-4 sub-decision COMPLETE end-to-end canonical via ed25519-dalek directly
en pallet. Pattern análogo Slice 3 mock-WASM: no esperar Ergon Cap 42+ sub-crate,
ship real impl con interim SCALE encoding (swap canonical post sub-crate land).
Real verify implementation:
- VerifyingKey::from_bytes(&validator_oit.public_key) — InvalidSignature si reject
- Signature::from_bytes(&attestation.signature) reconstruct
- signing_payload() compute (SCALE encoding interim Option B)
- verify_strict(payload, signature) — InvalidSignature si fail (rejects malleable + zero-key attacks)
4 nuevos tests Ed25519 verify real canonical:
- ed25519_verify_real_valid_signature_canonical — signed attestation verifies
- ed25519_verify_tampered_signature_rejected_canonical — bit-flipped sig rejected
- ed25519_verify_tampered_payload_rejected_canonical — tampered asset_id rejected
- ed25519_zero_signature_fails_verify_canonical — zero sig rejected verify_strict
- Helper signed_attestation() function canonical para test setup
Honest disclosure canonical: mi signing_payload usa SCALE encoding (vendor
copy interim Option B). Ergon arkhe-noesis-attestation-types Cap 42+ usará
postcard encoding canonical per Slice 7.0r spec. Swap canonical será 1-line
change en signing_payload() — zero impact en pallet verify logic.
PROV sub-decisions status v0.0.16: 6/8 COMPLETE (PROV-1+2+3+4+5+6+7 done,
PROV-8 Runtime API verify_provenance = v0.0.17 next slice).
Verification:
- cargo check workspace verde 1.55s
- 6/6 pallet tests pass (4 nuevos Ed25519 real)
- NO REGRESSION runtime/node/chain_spec builder
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 14:10:57 -05:00
..
2026-05-19 22:08:49 -05:00
2026-05-19 22:08:49 -05:00
2026-05-19 22:08:49 -05:00
2026-05-24 14:07:19 -05:00
2026-05-24 14:10:57 -05:00
2026-05-24 14:07:19 -05:00
2026-05-24 14:07:19 -05:00
2026-05-19 22:08:49 -05:00