UltrafastSecp256k1 3.68.0
Ultra high-performance secp256k1 elliptic curve cryptography library
Loading...
Searching...
No Matches
ufsecp_ecdsa_snark_witness_t Struct Reference

#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
 

Detailed Description

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)

Definition at line 1129 of file ufsecp.h.

Member Data Documentation

◆ lmb_pub_x

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_pub_x

pub_x limbs

Definition at line 1148 of file ufsecp.h.

◆ lmb_pub_y

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_pub_y

pub_y limbs

Definition at line 1149 of file ufsecp.h.

◆ lmb_result_x

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_result_x

R.x limbs

Definition at line 1153 of file ufsecp.h.

◆ lmb_result_x_mod_n

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_result_x_mod_n

R.x mod n limbs

Definition at line 1155 of file ufsecp.h.

◆ lmb_result_y

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_result_y

R.y limbs

Definition at line 1154 of file ufsecp.h.

◆ lmb_s_inv

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_s_inv

s_inv limbs

Definition at line 1150 of file ufsecp.h.

◆ lmb_sig_r

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_sig_r

sig_r limbs

Definition at line 1146 of file ufsecp.h.

◆ lmb_sig_s

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_sig_s

sig_s limbs

Definition at line 1147 of file ufsecp.h.

◆ lmb_u1

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_u1

u1 limbs

Definition at line 1151 of file ufsecp.h.

◆ lmb_u2

ufsecp_ff_limbs_t ufsecp_ecdsa_snark_witness_t::lmb_u2

u2 limbs

Definition at line 1152 of file ufsecp.h.

◆ msg

uint8_t ufsecp_ecdsa_snark_witness_t::msg[32]

message hash e (big-endian)

Definition at line 1131 of file ufsecp.h.

◆ pub_x

uint8_t ufsecp_ecdsa_snark_witness_t::pub_x[32]

public key P.x (Fp element)

Definition at line 1134 of file ufsecp.h.

◆ pub_y

uint8_t ufsecp_ecdsa_snark_witness_t::pub_y[32]

public key P.y (Fp element)

Definition at line 1135 of file ufsecp.h.

◆ result_x

uint8_t ufsecp_ecdsa_snark_witness_t::result_x[32]

R.x (Fp)

Definition at line 1141 of file ufsecp.h.

◆ result_x_mod_n

uint8_t ufsecp_ecdsa_snark_witness_t::result_x_mod_n[32]

R.x mod n (Fr)

Definition at line 1143 of file ufsecp.h.

◆ result_y

uint8_t ufsecp_ecdsa_snark_witness_t::result_y[32]

R.y (Fp)

Definition at line 1142 of file ufsecp.h.

◆ s_inv

uint8_t ufsecp_ecdsa_snark_witness_t::s_inv[32]

s^{-1} mod n

Definition at line 1138 of file ufsecp.h.

◆ sig_r

uint8_t ufsecp_ecdsa_snark_witness_t::sig_r[32]

signature r

Definition at line 1132 of file ufsecp.h.

◆ sig_s

uint8_t ufsecp_ecdsa_snark_witness_t::sig_s[32]

signature s

Definition at line 1133 of file ufsecp.h.

◆ u1

uint8_t ufsecp_ecdsa_snark_witness_t::u1[32]

e * s^{-1} mod n

Definition at line 1139 of file ufsecp.h.

◆ u2

uint8_t ufsecp_ecdsa_snark_witness_t::u2[32]

r * s^{-1} mod n

Definition at line 1140 of file ufsecp.h.

◆ valid

int ufsecp_ecdsa_snark_witness_t::valid

1 = signature valid, 0 = invalid

Definition at line 1158 of file ufsecp.h.


The documentation for this struct was generated from the following file: