Files
zeekay f4765ea61c proofs/frost: Tier A EC theories + Lean bridges + Jasmin CT scaffolds
Adds the Tier A formal-artifact cluster for protocols/frost (Lux profile
of Komlo-Goldberg / IETF FROST). Mirrors luxfi/pulsar's Tier A structure
adapted to Schnorr threshold signing.

- proofs/easycrypt/FROST_N1.ec — Class N1 byte-equality reduction
- proofs/easycrypt/FROST_N1_Refinement.ec — round-1/2/combine refinement
- proofs/easycrypt/FROST_Ciphersuite_Ed25519.ec — Ed25519 ciphersuite
- proofs/easycrypt/FROST_Ciphersuite_Secp256k1_Taproot.ec — BIP-340 ciphersuite
- proofs/easycrypt/FROST_N4.ec — DKG public-key preservation
- proofs/easycrypt/lemmas/FROST_CT.ec — constant-time obligations
- proofs/easycrypt/AXIOM-INVENTORY.md — honest enumeration
- proofs/lean-easycrypt-bridge.md — Lean↔EC bridge map
- jasmin/lib/ + jasmin/single-party/ + jasmin/threshold/ — Jasmin scaffolds

Plus shared scripts/check-high-assurance.sh that gates all three
protocols (frost, cmp, bls) at admit budget 1/1 with skip-friendly
jasminc and easycrypt invocations.

Admit budget: 1/1 (one-line group-identity admit in FROST_N4 closure).
2026-05-19 08:34:13 -07:00

31 lines
1.1 KiB
Plaintext

// FROST shared parameters.
//
// These constants are shared by both pinned ciphersuites. The
// ciphersuite-specific scalar field, curve, and hash are in the
// single-party/ subdirectory.
// Number of bytes per scalar (both Ed25519 and secp256k1).
param int FROST_SCALAR_BYTES = 32;
// Number of bytes per group element (compressed encoding).
// Ed25519: 32-byte y-with-sign encoding (RFC 8032 §5.1.2).
// secp256k1 BIP-340: 32-byte x-only encoding (BIP-340 §2).
param int FROST_POINT_BYTES = 32;
// Signature byte length (R || s for both ciphersuites).
param int FROST_SIG_BYTES = 64;
// Maximum supported quorum size for the threshold layer.
// Matches the Lux profile cap in SPEC.md §2.3.
param int FROST_MAX_QUORUM = 1024;
// Maximum supported message length for the threshold layer.
// Bounded to keep stack allocations static.
param int FROST_MAX_MSG = 4096;
// Round-1 commit byte length per party: D_i || E_i = 32 + 32 = 64.
param int FROST_R1_COMMIT_BYTES = 64;
// Round-2 response byte length per party: z_i = 32 bytes.
param int FROST_R2_RESPONSE_BYTES = 32;