|
UltrafastSecp256k1 3.68.0
Ultra high-performance secp256k1 elliptic curve cryptography library
|
#include <ufsecp.h>
Public Attributes | |
| uint8_t | msg [32] |
| uint8_t | sig_r [32] |
| uint8_t | sig_s [32] |
| uint8_t | pub_x [32] |
| uint8_t | pub_y [32] |
| uint8_t | s_inv [32] |
| uint8_t | u1 [32] |
| uint8_t | u2 [32] |
| uint8_t | result_x [32] |
| uint8_t | result_y [32] |
| uint8_t | result_x_mod_n [32] |
| ufsecp_ff_limbs_t | lmb_sig_r |
| ufsecp_ff_limbs_t | lmb_sig_s |
| ufsecp_ff_limbs_t | lmb_pub_x |
| ufsecp_ff_limbs_t | lmb_pub_y |
| ufsecp_ff_limbs_t | lmb_s_inv |
| ufsecp_ff_limbs_t | lmb_u1 |
| ufsecp_ff_limbs_t | lmb_u2 |
| ufsecp_ff_limbs_t | lmb_result_x |
| ufsecp_ff_limbs_t | lmb_result_y |
| ufsecp_ff_limbs_t | lmb_result_x_mod_n |
| int | valid |
ECDSA-in-SNARK prover witness (eprint 2025/695 §5).
Contains every intermediate value required by a PLONK circuit to verify one secp256k1 ECDSA signature using foreign-field arithmetic. Values are provided in canonical 32-byte big-endian encoding AND in 5×52-bit limb form (ufsecp_ff_limbs_t) for direct PLONK gate wiring.
ECDSA verify circuit steps: s_inv = sig_s^{-1} mod n u1 = msg * s_inv mod n u2 = sig_r * s_inv mod n R = u1*G + u2*pubkey valid = (R ≠ ∞) AND (R.x mod n == sig_r)
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_pub_x |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_pub_y |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_result_x |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_result_x_mod_n |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_result_y |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_s_inv |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_sig_r |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_sig_s |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_u1 |
| ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_u2 |
| uint8_t ufsecp_ecdsa_snark_witness_t::msg[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::pub_x[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::pub_y[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::result_x[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::result_x_mod_n[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::result_y[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::s_inv[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::sig_r[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::sig_s[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::u1[32] |
| uint8_t ufsecp_ecdsa_snark_witness_t::u2[32] |
| int ufsecp_ecdsa_snark_witness_t::valid |