Files
corona/jasmin/lib/corona_params.jinc
zeekay 90e96df805 Tier A full closure (v0.7.0): EC theories admit 0/0 + Lean bridges + Jasmin CT + dudect harness + e2e/fuzz
- proofs/easycrypt/: 13 EC files mirroring Pulsar layout, admit budget 0/0 statically pinned by scripts/checks/ec-admits.sh
- proofs/lean-easycrypt-bridge.md: 5-axiom Lean ↔ EC bridge (lagrange_inverse_eval, threshold_partial_response_identity, reconstruct_linear, shamir_correct, add_share_zeroR)
- jasmin/{lib,rlwe,threshold}/: round1/round2/combine .jazz with #ct annotations
- ct/dudect/: Verify + Combine harness (arm64 + x86_64 build tags)
- scripts/check-high-assurance.sh + scripts/checks/{ec-admits,ec-regressions,ec-refinement-scaffold,ec-compile,jasmin,extraction}.sh + check-lean-bridge.sh
- AXIOM-INVENTORY: residual axioms enumerated with closure pathways
- CRYPTOGRAPHER-SIGN-OFF: APPROVED WITH ROADMAP GATES; GATE-1+2+3a CLOSED; GATE-3b (dudect 10⁹ pinned CPU) + GATE-4 (external audit) + GATE-5 (Jasmin extraction filling out byte-walk) roadmap v0.8.0

Tier label: Tier A full closure scaffold landed; matches Pulsar v1.0.7 posture (admit 0/0 + Lean bridges + Jasmin + dudect harness wired). The submission-grade dudect run + external audit are v0.8.0 audit-track items.
2026-05-19 08:38:09 -07:00

57 lines
2.2 KiB
Plaintext

// Corona parameter set -- mirrors luxfi/corona/sign/config.go.
//
// Used by all Corona Jasmin sources (rlwe/, threshold/, lib/).
// Constants are PUBLIC; no #public-marker needed for compile-time
// values.
// -----------------------------------------------------------------------------
// Ring + modulus
// -----------------------------------------------------------------------------
param int CORONA_LOGN = 8;
param int CORONA_N_POLY = 256; // ring degree = 2^LogN
param int CORONA_Q = 0x1000000004A01; // 48-bit NTT-friendly prime
// Rounding rings.
param int CORONA_Q_XI = 0x40000;
param int CORONA_Q_NU = 0x80000;
param int CORONA_XI = 30;
param int CORONA_NU = 29;
// Threshold structure.
param int CORONA_M_DIM = 8; // matrix rows (b dimension)
param int CORONA_N_DIM = 7; // matrix cols (sk_share dimension)
param int CORONA_DBAR = 48; // R matrix width
param int CORONA_KAPPA = 23; // sample-in-ball Hamming weight
// Keys + randomness.
param int CORONA_KEY_SIZE = 32;
param int CORONA_TAG_SIZE = 32;
// -----------------------------------------------------------------------------
// Wire-format constants
// -----------------------------------------------------------------------------
// Per-poly coefficient packing: 8 bytes per uint64 coefficient.
param int CORONA_POLY_BYTES = 256 * 8; // 2048 bytes per poly
// vec_N (sk_share, z) bytes.
param int CORONA_VEC_N_BYTES = 7 * 2048; // 14336 bytes
// vec_M (b vector) bytes.
param int CORONA_VEC_M_BYTES = 8 * 2048; // 16384 bytes
// Round-1 D matrix (M x (Dbar+1) polys) bytes.
param int CORONA_D_BYTES = 8 * 49 * 2048; // 802816 bytes
// Round-1 commit bytes per party = D_bytes + per-peer-MAC region.
// MAC region: up to N parties * 32 bytes each.
param int CORONA_R1_MAC_REGION = 64 * 32; // 2048 bytes (over-provisioned)
param int CORONA_R1_COMMIT_BYTES = CORONA_D_BYTES + CORONA_R1_MAC_REGION;
// Round-2 z share bytes per party.
param int CORONA_R2_Z_BYTES = CORONA_VEC_N_BYTES;
// Signature bytes (variable; per-instance length).
// Upper bound captured at the wrapper layer.
param int CORONA_SIG_BYTES_MAX = 35000;