mirror of
https://github.com/luxfi/corona.git
synced 2026-09-24 00:25:54 +00:00
- 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.
57 lines
2.2 KiB
Plaintext
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;
|