purify
C++ Purify implementation with native circuit and BPP support
Loading...
Searching...
No Matches
bppp_bridge.c File Reference

C bridge that binds Purify's lightweight ABI to secp256k1-zkp internals and BPPP helpers. More...

#include "purify.h"
#include "bppp_bridge.h"
#include "purify/secp_bridge.h"
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include "third_party/secp256k1-zkp/include/secp256k1_extrakeys.h"
#include "third_party/secp256k1-zkp/include/secp256k1_schnorrsig.h"
#include "third_party/secp256k1-zkp/src/secp256k1.c"
#include "third_party/secp256k1-zkp/src/precomputed_ecmult.c"
#include "third_party/secp256k1-zkp/src/precomputed_ecmult_gen.c"
#include "src/legacy_bulletproof/circuit_impl.h"

Go to the source code of this file.

Data Structures

struct  purify_secp_context
 
struct  purify_bulletproof_backend_resources
 
struct  purify_bppp_backend_resources
 
struct  purify_bppp_mutable_generators_guard
 

Macros

#define SECP256K1_BUILD
 
#define ENABLE_MODULE_GENERATOR   1
 
#define ENABLE_MODULE_BPPP   1
 
#define ENABLE_MODULE_EXTRAKEYS   1
 
#define ENABLE_MODULE_SCHNORRSIG   1
 

Typedefs

typedef struct purify_bppp_mutable_generators_guard purify_bppp_mutable_generators_guard
 

Functions

static void purify_bridge_secure_clear (void *data, size_t size)
 
static secp256k1_context * purify_context_handle (const purify_secp_context *context)
 
purify_secp_contextpurify_secp_context_create (void)
 Creates one reusable secp256k1 context for the Purify bridge and public APIs.
 
void purify_secp_context_destroy (purify_secp_context *context)
 Destroys a context returned by purify_secp_context_create.
 
static int purify_bridge_checked_mul_size (size_t lhs, size_t rhs, size_t *out)
 
static int purify_bridge_checked_add_size (size_t lhs, size_t rhs, size_t *out)
 
static void * purify_malloc_array (size_t count, size_t elem_size)
 
static void * purify_calloc_array (size_t count, size_t elem_size)
 
static secp256k1_bppp_generators * purify_bppp_generators_clone (const secp256k1_bppp_generators *generators)
 
static int purify_bppp_backend_resources_reset_scratch_gens (purify_bppp_backend_resources *resources)
 
static secp256k1_bppp_generators * purify_bppp_backend_resources_acquire_scratch_gens (purify_bppp_backend_resources *resources, purify_bppp_mutable_generators_guard *guard)
 
static void purify_bppp_backend_resources_release_scratch_gens (purify_bppp_mutable_generators_guard *guard)
 
purify_bulletproof_backend_resourcespurify_bulletproof_backend_resources_create (purify_secp_context *context, size_t n_gates)
 
purify_bulletproof_backend_resourcespurify_bulletproof_backend_resources_clone (const purify_bulletproof_backend_resources *resources)
 
void purify_bulletproof_backend_resources_destroy (purify_bulletproof_backend_resources *resources)
 
purify_bppp_backend_resourcespurify_bppp_backend_resources_create (purify_secp_context *context, const unsigned char *generators33, size_t generators_count)
 
purify_bppp_backend_resourcespurify_bppp_backend_resources_clone (const purify_bppp_backend_resources *resources)
 
void purify_bppp_backend_resources_destroy (purify_bppp_backend_resources *resources)
 
static secp256k1_scalar * purify_scalar_cast (purify_scalar *scalar)
 
static const secp256k1_scalar * purify_scalar_cast_const (const purify_scalar *scalar)
 
void purify_scalar_set_int (purify_scalar *out, unsigned int value)
 Initializes a scalar from an unsigned integer.
 
void purify_scalar_set_u64 (purify_scalar *out, uint64_t value)
 Initializes a scalar from a 64-bit unsigned integer.
 
void purify_scalar_set_b32 (purify_scalar *out, const unsigned char input32[32], int *overflow)
 Parses a big-endian 32-byte scalar.
 
void purify_scalar_get_b32 (unsigned char output32[32], const purify_scalar *value)
 Serializes a scalar as 32 big-endian bytes.
 
int purify_scalar_is_zero (const purify_scalar *value)
 Returns nonzero when the scalar is zero.
 
int purify_scalar_is_one (const purify_scalar *value)
 Returns nonzero when the scalar is one.
 
int purify_scalar_is_even (const purify_scalar *value)
 Returns nonzero when the scalar is even.
 
int purify_scalar_eq (const purify_scalar *lhs, const purify_scalar *rhs)
 Returns nonzero when two scalars are equal.
 
void purify_scalar_negate (purify_scalar *out, const purify_scalar *value)
 Computes the additive inverse of a scalar.
 
void purify_scalar_inverse (purify_scalar *out, const purify_scalar *value)
 Computes the multiplicative inverse of a scalar in constant time.
 
void purify_scalar_inverse_var (purify_scalar *out, const purify_scalar *value)
 Computes the multiplicative inverse of a scalar.
 
int purify_scalar_add (purify_scalar *out, const purify_scalar *lhs, const purify_scalar *rhs)
 Adds two scalars modulo the backend field.
 
void purify_scalar_mul (purify_scalar *out, const purify_scalar *lhs, const purify_scalar *rhs)
 Multiplies two scalars modulo the backend field.
 
void purify_scalar_cmov (purify_scalar *dst, const purify_scalar *src, int flag)
 Conditionally assigns src into dst when flag is nonzero.
 
void purify_sha256 (unsigned char output32[32], const unsigned char *data, size_t data_len)
 Computes SHA-256 over a byte string.
 
int purify_sha256_many (unsigned char output32[32], const unsigned char *const *items, const size_t *item_lens, size_t items_count)
 Computes SHA-256 over a set of byte strings.
 
void purify_hmac_sha256 (unsigned char output32[32], const unsigned char *key, size_t key_len, const unsigned char *data, size_t data_len)
 Computes HMAC-SHA256 over a byte string.
 
int purify_bip340_key_from_seckey (purify_secp_context *context, unsigned char seckey32[32], unsigned char xonly_pubkey32[32])
 Canonicalizes a valid secp256k1 secret key for BIP340 and derives its x-only public key.
 
int purify_bip340_nonce_from_scalar (purify_secp_context *context, unsigned char scalar32[32], unsigned char xonly_nonce32[32])
 Canonicalizes a valid secp256k1 nonce scalar for BIP340 and derives its x-only public nonce.
 
int purify_bip340_xonly_from_point (purify_secp_context *context, const unsigned char point33[33], unsigned char xonly32[32], int *parity_out)
 Converts a compressed secp256k1 point into its x-only public key encoding.
 
int purify_bip340_validate_xonly_pubkey (purify_secp_context *context, const unsigned char xonly_pubkey32[32])
 Returns nonzero when the x-only public key encoding parses successfully.
 
int purify_bip340_validate_signature (purify_secp_context *context, const unsigned char sig64[64])
 Returns nonzero when the 64-byte BIP340 signature has a syntactically valid encoding.
 
static int purify_fixed_nonce_function (unsigned char *nonce32, const unsigned char *msg, size_t msglen, const unsigned char *key32, const unsigned char *xonly_pk32, const unsigned char *algo, size_t algolen, void *data)
 
int purify_bip340_sign_with_fixed_nonce (purify_secp_context *context, unsigned char sig64[64], const unsigned char *msg, size_t msglen, const unsigned char seckey32[32], const unsigned char nonce32[32])
 Signs a message with a caller-supplied BIP340 nonce scalar.
 
int purify_bip340_verify (purify_secp_context *context, const unsigned char sig64[64], const unsigned char *msg, size_t msglen, const unsigned char xonly_pubkey32[32])
 Verifies a BIP340 signature against a serialized x-only public key.
 
static int purify_parse_scalar (const unsigned char input32[32], secp256k1_scalar *scalar, int reject_zero)
 
static int purify_parse_scalar_array (const unsigned char *input32, size_t count, secp256k1_scalar *out)
 
static int purify_serialize_point (unsigned char out33[33], secp256k1_ge *point)
 
static int purify_parse_fast_scalar (const unsigned char input32[32], secp256k1_fast_scalar *scalar)
 
static int purify_parse_generator_as_ge (const secp256k1_context *ctx, const unsigned char generator33[33], secp256k1_ge *out)
 
static int purify_parse_point_as_ge (const unsigned char point33[33], secp256k1_ge *out)
 
static void purify_free_bulletproof_circuit (secp256k1_bulletproof_circuit *circuit)
 
static void purify_free_bulletproof_assignment (secp256k1_bulletproof_circuit_assignment *assignment)
 
static size_t purify_total_row_entries (const purify_bulletproof_row_view *rows, size_t count, int *ok)
 
static int purify_build_row_family (secp256k1_bulletproof_wmatrix_row *out_rows, size_t row_count, const purify_bulletproof_row_view *in_rows, size_t n_constraints, secp256k1_bulletproof_wmatrix_entry *entries, size_t *offset)
 
static void purify_bulletproof_circuit_evaluate_sum_row (secp256k1_scalar *acc, const secp256k1_bulletproof_wmatrix_row *row, const secp256k1_scalar *assn)
 
static int purify_bulletproof_circuit_evaluate (const secp256k1_bulletproof_circuit *circuit, const secp256k1_bulletproof_circuit_assignment *assignment)
 
static int purify_build_bulletproof_circuit (const purify_bulletproof_circuit_view *view, secp256k1_bulletproof_circuit *out)
 
static int purify_build_bulletproof_assignment (const purify_bulletproof_assignment_view *view, secp256k1_bulletproof_circuit_assignment *out)
 
size_t purify_bulletproof_required_proof_size (size_t n_gates)
 
static int purify_bulletproof_prove_circuit_impl (const purify_bulletproof_circuit_view *circuit, const purify_bulletproof_assignment_view *assignment, const unsigned char *blind32, const unsigned char value_gen33[33], const unsigned char nonce32[32], const unsigned char *extra_commit, size_t extra_commit_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len, int require_valid_assignment, purify_secp_context *context, purify_bulletproof_backend_resources *resources)
 
int purify_bulletproof_prove_circuit (purify_secp_context *context, const purify_bulletproof_circuit_view *circuit, const purify_bulletproof_assignment_view *assignment, const unsigned char *blind32, const unsigned char value_gen33[33], const unsigned char nonce32[32], const unsigned char *extra_commit, size_t extra_commit_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len)
 
int purify_bulletproof_prove_circuit_with_resources (purify_bulletproof_backend_resources *resources, const purify_bulletproof_circuit_view *circuit, const purify_bulletproof_assignment_view *assignment, const unsigned char *blind32, const unsigned char value_gen33[33], const unsigned char nonce32[32], const unsigned char *extra_commit, size_t extra_commit_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len)
 
int purify_bulletproof_prove_circuit_assume_valid (purify_secp_context *context, const purify_bulletproof_circuit_view *circuit, const purify_bulletproof_assignment_view *assignment, const unsigned char *blind32, const unsigned char value_gen33[33], const unsigned char nonce32[32], const unsigned char *extra_commit, size_t extra_commit_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len)
 
int purify_bulletproof_prove_circuit_assume_valid_with_resources (purify_bulletproof_backend_resources *resources, const purify_bulletproof_circuit_view *circuit, const purify_bulletproof_assignment_view *assignment, const unsigned char *blind32, const unsigned char value_gen33[33], const unsigned char nonce32[32], const unsigned char *extra_commit, size_t extra_commit_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len)
 
static int purify_bulletproof_verify_circuit_impl (purify_secp_context *context, purify_bulletproof_backend_resources *resources, const purify_bulletproof_circuit_view *circuit, const unsigned char commitment33[33], const unsigned char value_gen33[33], const unsigned char *extra_commit, size_t extra_commit_len, const unsigned char *proof, size_t proof_len)
 
int purify_bulletproof_verify_circuit (purify_secp_context *context, const purify_bulletproof_circuit_view *circuit, const unsigned char commitment33[33], const unsigned char value_gen33[33], const unsigned char *extra_commit, size_t extra_commit_len, const unsigned char *proof, size_t proof_len)
 
int purify_bulletproof_verify_circuit_with_resources (purify_bulletproof_backend_resources *resources, const purify_bulletproof_circuit_view *circuit, const unsigned char commitment33[33], const unsigned char value_gen33[33], const unsigned char *extra_commit, size_t extra_commit_len, const unsigned char *proof, size_t proof_len)
 
static void purify_norm_arg_commit_initial_data (secp256k1_sha256 *transcript, const secp256k1_scalar *rho, const secp256k1_bppp_generators *gens_vec, size_t g_len, const secp256k1_scalar *c_vec, size_t c_vec_len, const secp256k1_ge *commit)
 
static int purify_copy_vectors_into_scratch (const secp256k1_context *ctx, secp256k1_scratch_space *scratch, secp256k1_scalar **ns, secp256k1_scalar **ls, secp256k1_scalar **cs, secp256k1_ge **gs, const secp256k1_scalar *n_vec, const secp256k1_scalar *l_vec, const secp256k1_scalar *c_vec, const secp256k1_ge *gens_vec, size_t g_len, size_t h_len)
 
static int purify_bppp_rangeproof_norm_product_prove_const (const secp256k1_context *ctx, secp256k1_scratch_space *scratch, unsigned char *proof, size_t *proof_len, secp256k1_sha256 *transcript, const secp256k1_scalar *rho, const secp256k1_ge *g_vec, size_t g_vec_len, const secp256k1_scalar *n_vec, size_t n_vec_len, const secp256k1_scalar *l_vec, size_t l_vec_len, const secp256k1_scalar *c_vec, size_t c_vec_len)
 
size_t purify_bppp_required_proof_size (size_t n_vec_len, size_t c_vec_len)
 Computes the maximum serialized size of a BPPP norm proof.
 
int purify_bppp_base_generator (purify_secp_context *context, unsigned char out33[33])
 Serializes the secp256k1 base generator into compressed form.
 
int purify_bppp_value_generator_h (purify_secp_context *context, unsigned char out33[33])
 Serializes the alternate value generator used by Pedersen commitments.
 
int purify_bppp_create_generators (purify_secp_context *context, size_t count, unsigned char *out, size_t *out_len)
 Expands the generator list required by the BPPP prover and verifier.
 
int purify_pedersen_commit_char (purify_secp_context *context, const unsigned char blind32[32], const unsigned char value32[32], const unsigned char value_gen33[33], const unsigned char blind_gen33[33], unsigned char commitment_out33[33])
 Computes a Pedersen commitment to an arbitrary 32-byte scalar value.
 
static int purify_bppp_commit_norm_arg_impl (purify_secp_context *context, purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, unsigned char commitment_out33[33])
 
int purify_bppp_commit_norm_arg (purify_secp_context *context, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, unsigned char commitment_out33[33])
 
int purify_bppp_commit_norm_arg_with_resources (purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, unsigned char commitment_out33[33])
 
static int purify_bppp_commit_witness_only_impl (purify_secp_context *context, purify_bppp_backend_resources *resources, const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, unsigned char commitment_out33[33])
 
int purify_bppp_commit_witness_only (purify_secp_context *context, const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, unsigned char commitment_out33[33])
 
int purify_bppp_commit_witness_only_with_resources (purify_bppp_backend_resources *resources, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, unsigned char commitment_out33[33])
 
int purify_bppp_offset_commitment (purify_secp_context *context, const unsigned char commitment33[33], const unsigned char scalar32[32], unsigned char commitment_out33[33])
 
int purify_point_scale (purify_secp_context *context, const unsigned char point33[33], const unsigned char scalar32[32], unsigned char out33[33])
 
int purify_point_add (purify_secp_context *context, const unsigned char lhs33[33], const unsigned char rhs33[33], unsigned char out33[33])
 
static int purify_bppp_prove_norm_arg_impl (purify_secp_context *context, purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len)
 
int purify_bppp_prove_norm_arg (purify_secp_context *context, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len)
 Produces a standalone BPPP norm argument.
 
int purify_bppp_prove_norm_arg_with_resources (purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, unsigned char commitment_out33[33], unsigned char *proof_out, size_t *proof_len)
 
static int purify_bppp_prove_norm_arg_to_commitment_impl (purify_secp_context *context, purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, const unsigned char commitment33[33], unsigned char *proof_out, size_t *proof_len)
 
int purify_bppp_prove_norm_arg_to_commitment (purify_secp_context *context, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, const unsigned char commitment33[33], unsigned char *proof_out, size_t *proof_len)
 
int purify_bppp_prove_norm_arg_to_commitment_with_resources (purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *n_vec32, size_t n_vec_len, const unsigned char *l_vec32, size_t l_vec_len, const unsigned char *c_vec32, size_t c_vec_len, const unsigned char commitment33[33], unsigned char *proof_out, size_t *proof_len)
 
static int purify_bppp_verify_norm_arg_impl (purify_secp_context *context, purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *c_vec32, size_t c_vec_len, size_t n_vec_len, const unsigned char commitment33[33], const unsigned char *proof, size_t proof_len)
 
int purify_bppp_verify_norm_arg (purify_secp_context *context, const unsigned char rho32[32], const unsigned char *generators33, size_t generators_count, const unsigned char *c_vec32, size_t c_vec_len, size_t n_vec_len, const unsigned char commitment33[33], const unsigned char *proof, size_t proof_len)
 Verifies a standalone BPPP norm argument.
 
int purify_bppp_verify_norm_arg_with_resources (purify_bppp_backend_resources *resources, const unsigned char rho32[32], const unsigned char *c_vec32, size_t c_vec_len, size_t n_vec_len, const unsigned char commitment33[33], const unsigned char *proof, size_t proof_len)
 

Macro Definition Documentation

◆ ENABLE_MODULE_BPPP

#define ENABLE_MODULE_BPPP   1

Definition at line 12 of file bppp_bridge.c.

◆ ENABLE_MODULE_EXTRAKEYS

#define ENABLE_MODULE_EXTRAKEYS   1

Definition at line 13 of file bppp_bridge.c.

◆ ENABLE_MODULE_GENERATOR

#define ENABLE_MODULE_GENERATOR   1

Definition at line 11 of file bppp_bridge.c.

◆ ENABLE_MODULE_SCHNORRSIG

#define ENABLE_MODULE_SCHNORRSIG   1

Definition at line 14 of file bppp_bridge.c.

◆ SECP256K1_BUILD

#define SECP256K1_BUILD

Definition at line 10 of file bppp_bridge.c.

Typedef Documentation

◆ purify_bppp_mutable_generators_guard

Function Documentation

◆ purify_bip340_key_from_seckey()

int purify_bip340_key_from_seckey ( purify_secp_context context,
unsigned char  seckey32[32],
unsigned char  xonly_pubkey32[32] 
)

The input/output seckey32 buffer is rewritten in place to the even-Y canonical secret scalar corresponding to the returned x-only public key. Returns zero when the input scalar is invalid.

Definition at line 525 of file bppp_bridge.c.

References purify_bridge_secure_clear(), and purify_context_handle().

Referenced by purify_derive_bip340_key().

◆ purify_bip340_nonce_from_scalar()

int purify_bip340_nonce_from_scalar ( purify_secp_context context,
unsigned char  scalar32[32],
unsigned char  xonly_nonce32[32] 
)

The input/output scalar32 buffer is rewritten in place to the even-Y representative corresponding to the returned x-only public nonce. Returns zero when the input scalar is invalid or zero.

Definition at line 564 of file bppp_bridge.c.

References purify_bridge_secure_clear(), and purify_context_handle().

Referenced by purify_bip340_sign_with_fixed_nonce().

◆ purify_bip340_sign_with_fixed_nonce()

int purify_bip340_sign_with_fixed_nonce ( purify_secp_context context,
unsigned char  sig64[64],
const unsigned char *  msg,
size_t  msglen,
const unsigned char  seckey32[32],
const unsigned char  nonce32[32] 
)

seckey32 must be a valid secp256k1 secret key. nonce32 must be a non-zero canonical nonce scalar whose public point has even Y, for example the output of purify_bip340_nonce_from_scalar. Returns zero when any input is invalid.

Definition at line 707 of file bppp_bridge.c.

References purify_bip340_nonce_from_scalar(), purify_bridge_secure_clear(), purify_context_handle(), and purify_fixed_nonce_function().

Referenced by purify::puresign_plusplus::PreparedNonce::sign_message(), purify::puresign::PreparedNonce::sign_message(), purify::puresign_plusplus::PreparedNonce::sign_topic_message(), and purify::puresign::PreparedNonce::sign_topic_message().

◆ purify_bip340_validate_signature()

int purify_bip340_validate_signature ( purify_secp_context context,
const unsigned char  sig64[64] 
)

This only checks the standalone encoding shape (r as a valid x-only point and s as a scalar below the curve order). It does not verify the signature against a message or public key.

Definition at line 662 of file bppp_bridge.c.

References purify_bridge_secure_clear(), and purify_context_handle().

Referenced by purify::puresign_plusplus::Signature::deserialize(), purify::puresign::Signature::deserialize(), purify::puresign_plusplus::api_impl::verify_signature(), and purify::puresign::api_impl::verify_signature().

◆ purify_bip340_validate_xonly_pubkey()

◆ purify_bip340_verify()

int purify_bip340_verify ( purify_secp_context context,
const unsigned char  sig64[64],
const unsigned char *  msg,
size_t  msglen,
const unsigned char  xonly_pubkey32[32] 
)

◆ purify_bip340_xonly_from_point()

int purify_bip340_xonly_from_point ( purify_secp_context context,
const unsigned char  point33[33],
unsigned char  xonly32[32],
int *  parity_out 
)

Returns zero when the point encoding is invalid. When parity_out is not null it receives the original point parity as returned by secp256k1_xonly_pubkey_from_pubkey (0 for even Y, 1 for odd Y).

Definition at line 603 of file bppp_bridge.c.

References purify_bridge_secure_clear(), and purify_context_handle().

◆ purify_bppp_backend_resources_acquire_scratch_gens()

◆ purify_bppp_backend_resources_clone()

◆ purify_bppp_backend_resources_create()

◆ purify_bppp_backend_resources_destroy()

◆ purify_bppp_backend_resources_release_scratch_gens()

static void purify_bppp_backend_resources_release_scratch_gens ( purify_bppp_mutable_generators_guard guard)
static

◆ purify_bppp_backend_resources_reset_scratch_gens()

◆ purify_bppp_base_generator()

int purify_bppp_base_generator ( purify_secp_context context,
unsigned char  out33[33] 
)

Definition at line 1514 of file bppp_bridge.c.

References purify_context_handle().

Referenced by purify::bppp::base_generator().

◆ purify_bppp_commit_norm_arg()

int purify_bppp_commit_norm_arg ( purify_secp_context context,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
unsigned char  commitment_out33[33] 
)

◆ purify_bppp_commit_norm_arg_impl()

static int purify_bppp_commit_norm_arg_impl ( purify_secp_context context,
purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
unsigned char  commitment_out33[33] 
)
static

◆ purify_bppp_commit_norm_arg_with_resources()

int purify_bppp_commit_norm_arg_with_resources ( purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
unsigned char  commitment_out33[33] 
)

◆ purify_bppp_commit_witness_only()

int purify_bppp_commit_witness_only ( purify_secp_context context,
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
unsigned char  commitment_out33[33] 
)

Definition at line 1756 of file bppp_bridge.c.

References purify_bppp_commit_witness_only_impl().

◆ purify_bppp_commit_witness_only_impl()

static int purify_bppp_commit_witness_only_impl ( purify_secp_context context,
purify_bppp_backend_resources resources,
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
unsigned char  commitment_out33[33] 
)
static

◆ purify_bppp_commit_witness_only_with_resources()

int purify_bppp_commit_witness_only_with_resources ( purify_bppp_backend_resources resources,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
unsigned char  commitment_out33[33] 
)

◆ purify_bppp_create_generators()

int purify_bppp_create_generators ( purify_secp_context context,
size_t  count,
unsigned char *  out,
size_t *  out_len 
)
Parameters
countNumber of generators requested.
outOutput buffer for count compressed points.
out_lenIn/out serialized byte length.
Returns
Nonzero on success.

Definition at line 1539 of file bppp_bridge.c.

References purify_bridge_checked_mul_size(), and purify_context_handle().

Referenced by purify::bppp::create_generators().

◆ purify_bppp_generators_clone()

static secp256k1_bppp_generators * purify_bppp_generators_clone ( const secp256k1_bppp_generators *  generators)
static

◆ purify_bppp_offset_commitment()

int purify_bppp_offset_commitment ( purify_secp_context context,
const unsigned char  commitment33[33],
const unsigned char  scalar32[32],
unsigned char  commitment_out33[33] 
)

◆ purify_bppp_prove_norm_arg()

int purify_bppp_prove_norm_arg ( purify_secp_context context,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)
Parameters
rho32Fiat-Shamir seed.
generators33Serialized generator list.
generators_countNumber of generators in generators33.
n_vec32Serialized n vector.
n_vec_lenLength of the n vector.
l_vec32Serialized l vector.
l_vec_lenLength of the l vector.
c_vec32Serialized c vector.
c_vec_lenLength of the c vector.
commitment_out33Commitment output used by the proof.
proof_outOutput buffer for the serialized proof.
proof_lenIn/out proof buffer length.
Returns
Nonzero on success.

Definition at line 1937 of file bppp_bridge.c.

References purify_bppp_prove_norm_arg_impl().

◆ purify_bppp_prove_norm_arg_impl()

static int purify_bppp_prove_norm_arg_impl ( purify_secp_context context,
purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)
static

◆ purify_bppp_prove_norm_arg_to_commitment()

int purify_bppp_prove_norm_arg_to_commitment ( purify_secp_context context,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
const unsigned char  commitment33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)

◆ purify_bppp_prove_norm_arg_to_commitment_impl()

static int purify_bppp_prove_norm_arg_to_commitment_impl ( purify_secp_context context,
purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
const unsigned char  commitment33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)
static

◆ purify_bppp_prove_norm_arg_to_commitment_with_resources()

int purify_bppp_prove_norm_arg_to_commitment_with_resources ( purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
const unsigned char  commitment33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)

◆ purify_bppp_prove_norm_arg_with_resources()

int purify_bppp_prove_norm_arg_with_resources ( purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  n_vec32,
size_t  n_vec_len,
const unsigned char *  l_vec32,
size_t  l_vec_len,
const unsigned char *  c_vec32,
size_t  c_vec_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)

◆ purify_bppp_rangeproof_norm_product_prove_const()

static int purify_bppp_rangeproof_norm_product_prove_const ( const secp256k1_context *  ctx,
secp256k1_scratch_space *  scratch,
unsigned char *  proof,
size_t *  proof_len,
secp256k1_sha256 *  transcript,
const secp256k1_scalar *  rho,
const secp256k1_ge *  g_vec,
size_t  g_vec_len,
const secp256k1_scalar *  n_vec,
size_t  n_vec_len,
const secp256k1_scalar *  l_vec,
size_t  l_vec_len,
const secp256k1_scalar *  c_vec,
size_t  c_vec_len 
)
static

◆ purify_bppp_required_proof_size()

size_t purify_bppp_required_proof_size ( size_t  n_vec_len,
size_t  c_vec_len 
)
Parameters
n_vec_lenLength of the n vector.
c_vec_lenLength of the c vector.
Returns
Required output buffer size in bytes.

Definition at line 1499 of file bppp_bridge.c.

References purify_bridge_checked_add_size(), and purify_bridge_checked_mul_size().

Referenced by purify::bppp::prove_norm_arg_to_commitment_with_cache(), purify_bppp_prove_norm_arg_impl(), and purify_bppp_prove_norm_arg_to_commitment_impl().

◆ purify_bppp_value_generator_h()

int purify_bppp_value_generator_h ( purify_secp_context context,
unsigned char  out33[33] 
)

Definition at line 1528 of file bppp_bridge.c.

References purify_context_handle().

Referenced by purify::bppp::value_generator_h().

◆ purify_bppp_verify_norm_arg()

int purify_bppp_verify_norm_arg ( purify_secp_context context,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  c_vec32,
size_t  c_vec_len,
size_t  n_vec_len,
const unsigned char  commitment33[33],
const unsigned char *  proof,
size_t  proof_len 
)
Parameters
rho32Fiat-Shamir seed.
generators33Serialized generator list.
generators_countNumber of generators in generators33.
c_vec32Serialized c vector.
c_vec_lenLength of the c vector.
n_vec_lenLength of the hidden n vector.
commitment33Serialized compressed commitment point.
proofSerialized proof bytes.
proof_lenProof length in bytes.
Returns
Nonzero on success.

Definition at line 2133 of file bppp_bridge.c.

References purify_bppp_verify_norm_arg_impl().

Referenced by purify::bppp::verify_norm_arg_with_cache().

◆ purify_bppp_verify_norm_arg_impl()

static int purify_bppp_verify_norm_arg_impl ( purify_secp_context context,
purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  generators33,
size_t  generators_count,
const unsigned char *  c_vec32,
size_t  c_vec_len,
size_t  n_vec_len,
const unsigned char  commitment33[33],
const unsigned char *  proof,
size_t  proof_len 
)
static

◆ purify_bppp_verify_norm_arg_with_resources()

int purify_bppp_verify_norm_arg_with_resources ( purify_bppp_backend_resources resources,
const unsigned char  rho32[32],
const unsigned char *  c_vec32,
size_t  c_vec_len,
size_t  n_vec_len,
const unsigned char  commitment33[33],
const unsigned char *  proof,
size_t  proof_len 
)

◆ purify_bridge_checked_add_size()

◆ purify_bridge_checked_mul_size()

◆ purify_bridge_secure_clear()

◆ purify_build_bulletproof_assignment()

◆ purify_build_bulletproof_circuit()

◆ purify_build_row_family()

◆ purify_bulletproof_backend_resources_clone()

◆ purify_bulletproof_backend_resources_create()

◆ purify_bulletproof_backend_resources_destroy()

◆ purify_bulletproof_circuit_evaluate()

◆ purify_bulletproof_circuit_evaluate_sum_row()

static void purify_bulletproof_circuit_evaluate_sum_row ( secp256k1_scalar *  acc,
const secp256k1_bulletproof_wmatrix_row row,
const secp256k1_scalar *  assn 
)
static

◆ purify_bulletproof_prove_circuit()

int purify_bulletproof_prove_circuit ( purify_secp_context context,
const purify_bulletproof_circuit_view circuit,
const purify_bulletproof_assignment_view assignment,
const unsigned char *  blind32,
const unsigned char  value_gen33[33],
const unsigned char  nonce32[32],
const unsigned char *  extra_commit,
size_t  extra_commit_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)

Definition at line 1228 of file bppp_bridge.c.

References purify_bulletproof_prove_circuit_impl().

◆ purify_bulletproof_prove_circuit_assume_valid()

int purify_bulletproof_prove_circuit_assume_valid ( purify_secp_context context,
const purify_bulletproof_circuit_view circuit,
const purify_bulletproof_assignment_view assignment,
const unsigned char *  blind32,
const unsigned char  value_gen33[33],
const unsigned char  nonce32[32],
const unsigned char *  extra_commit,
size_t  extra_commit_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)

Definition at line 1260 of file bppp_bridge.c.

References purify_bulletproof_prove_circuit_impl().

◆ purify_bulletproof_prove_circuit_assume_valid_with_resources()

int purify_bulletproof_prove_circuit_assume_valid_with_resources ( purify_bulletproof_backend_resources resources,
const purify_bulletproof_circuit_view circuit,
const purify_bulletproof_assignment_view assignment,
const unsigned char *  blind32,
const unsigned char  value_gen33[33],
const unsigned char  nonce32[32],
const unsigned char *  extra_commit,
size_t  extra_commit_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)

Definition at line 1276 of file bppp_bridge.c.

References purify_bulletproof_prove_circuit_impl().

◆ purify_bulletproof_prove_circuit_impl()

static int purify_bulletproof_prove_circuit_impl ( const purify_bulletproof_circuit_view circuit,
const purify_bulletproof_assignment_view assignment,
const unsigned char *  blind32,
const unsigned char  value_gen33[33],
const unsigned char  nonce32[32],
const unsigned char *  extra_commit,
size_t  extra_commit_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len,
int  require_valid_assignment,
purify_secp_context context,
purify_bulletproof_backend_resources resources 
)
static

◆ purify_bulletproof_prove_circuit_with_resources()

int purify_bulletproof_prove_circuit_with_resources ( purify_bulletproof_backend_resources resources,
const purify_bulletproof_circuit_view circuit,
const purify_bulletproof_assignment_view assignment,
const unsigned char *  blind32,
const unsigned char  value_gen33[33],
const unsigned char  nonce32[32],
const unsigned char *  extra_commit,
size_t  extra_commit_len,
unsigned char  commitment_out33[33],
unsigned char *  proof_out,
size_t *  proof_len 
)

Definition at line 1244 of file bppp_bridge.c.

References purify_bulletproof_prove_circuit_impl().

◆ purify_bulletproof_required_proof_size()

size_t purify_bulletproof_required_proof_size ( size_t  n_gates)

◆ purify_bulletproof_verify_circuit()

int purify_bulletproof_verify_circuit ( purify_secp_context context,
const purify_bulletproof_circuit_view circuit,
const unsigned char  commitment33[33],
const unsigned char  value_gen33[33],
const unsigned char *  extra_commit,
size_t  extra_commit_len,
const unsigned char *  proof,
size_t  proof_len 
)

◆ purify_bulletproof_verify_circuit_impl()

◆ purify_bulletproof_verify_circuit_with_resources()

int purify_bulletproof_verify_circuit_with_resources ( purify_bulletproof_backend_resources resources,
const purify_bulletproof_circuit_view circuit,
const unsigned char  commitment33[33],
const unsigned char  value_gen33[33],
const unsigned char *  extra_commit,
size_t  extra_commit_len,
const unsigned char *  proof,
size_t  proof_len 
)

◆ purify_calloc_array()

static void * purify_calloc_array ( size_t  count,
size_t  elem_size 
)
static

Definition at line 139 of file bppp_bridge.c.

References purify_bridge_checked_mul_size().

Referenced by purify_build_bulletproof_circuit().

◆ purify_context_handle()

◆ purify_copy_vectors_into_scratch()

static int purify_copy_vectors_into_scratch ( const secp256k1_context *  ctx,
secp256k1_scratch_space *  scratch,
secp256k1_scalar **  ns,
secp256k1_scalar **  ls,
secp256k1_scalar **  cs,
secp256k1_ge **  gs,
const secp256k1_scalar *  n_vec,
const secp256k1_scalar *  l_vec,
const secp256k1_scalar *  c_vec,
const secp256k1_ge *  gens_vec,
size_t  g_len,
size_t  h_len 
)
static

◆ purify_fixed_nonce_function()

static int purify_fixed_nonce_function ( unsigned char *  nonce32,
const unsigned char *  msg,
size_t  msglen,
const unsigned char *  key32,
const unsigned char *  xonly_pk32,
const unsigned char *  algo,
size_t  algolen,
void *  data 
)
static

Definition at line 687 of file bppp_bridge.c.

Referenced by purify_bip340_sign_with_fixed_nonce().

◆ purify_free_bulletproof_assignment()

◆ purify_free_bulletproof_circuit()

◆ purify_hmac_sha256()

void purify_hmac_sha256 ( unsigned char  output32[32],
const unsigned char *  key,
size_t  key_len,
const unsigned char *  data,
size_t  data_len 
)
Parameters
output32Output MAC buffer.
keyPointer to key bytes, or NULL when key_len is zero.
key_lenKey length in bytes.
dataPointer to message bytes, or NULL when data_len is zero.
data_lenMessage length in bytes.

Definition at line 504 of file bppp_bridge.c.

Referenced by purify::hmac_sha256(), and purify_core_hkdf_sha256().

◆ purify_malloc_array()

◆ purify_norm_arg_commit_initial_data()

static void purify_norm_arg_commit_initial_data ( secp256k1_sha256 *  transcript,
const secp256k1_scalar *  rho,
const secp256k1_bppp_generators *  gens_vec,
size_t  g_len,
const secp256k1_scalar *  c_vec,
size_t  c_vec_len,
const secp256k1_ge *  commit 
)
static

◆ purify_parse_fast_scalar()

static int purify_parse_fast_scalar ( const unsigned char  input32[32],
secp256k1_fast_scalar scalar 
)
static

Definition at line 808 of file bppp_bridge.c.

References purify_parse_scalar(), and scalar.

Referenced by purify_build_bulletproof_circuit(), and purify_build_row_family().

◆ purify_parse_generator_as_ge()

static int purify_parse_generator_as_ge ( const secp256k1_context *  ctx,
const unsigned char  generator33[33],
secp256k1_ge *  out 
)
static

◆ purify_parse_point_as_ge()

static int purify_parse_point_as_ge ( const unsigned char  point33[33],
secp256k1_ge *  out 
)
static

◆ purify_parse_scalar()

◆ purify_parse_scalar_array()

static int purify_parse_scalar_array ( const unsigned char *  input32,
size_t  count,
secp256k1_scalar *  out 
)
static

◆ purify_pedersen_commit_char()

int purify_pedersen_commit_char ( purify_secp_context context,
const unsigned char  blind32[32],
const unsigned char  value32[32],
const unsigned char  value_gen33[33],
const unsigned char  blind_gen33[33],
unsigned char  commitment_out33[33] 
)
Parameters
blind32Blinding factor in big-endian scalar form.
value32Committed value in big-endian scalar form.
value_gen33Compressed generator for the value term.
blind_gen33Compressed generator for the blind term.
commitment_out33Serialized compressed commitment output.
Returns
Nonzero on success.

Definition at line 1565 of file bppp_bridge.c.

References purify_context_handle(), purify_parse_scalar(), and purify_serialize_point().

Referenced by purify::bppp::pedersen_commit_char().

◆ purify_point_add()

int purify_point_add ( purify_secp_context context,
const unsigned char  lhs33[33],
const unsigned char  rhs33[33],
unsigned char  out33[33] 
)

◆ purify_point_scale()

int purify_point_scale ( purify_secp_context context,
const unsigned char  point33[33],
const unsigned char  scalar32[32],
unsigned char  out33[33] 
)

◆ purify_scalar_add()

int purify_scalar_add ( purify_scalar out,
const purify_scalar lhs,
const purify_scalar rhs 
)

Definition at line 442 of file bppp_bridge.c.

References purify_scalar_cast(), and purify_scalar_cast_const().

Referenced by purify_fe_add().

◆ purify_scalar_cast()

◆ purify_scalar_cast_const()

◆ purify_scalar_cmov()

void purify_scalar_cmov ( purify_scalar dst,
const purify_scalar src,
int  flag 
)

◆ purify_scalar_eq()

int purify_scalar_eq ( const purify_scalar lhs,
const purify_scalar rhs 
)

Definition at line 426 of file bppp_bridge.c.

References purify_scalar_cast_const().

Referenced by purify_fe_eq().

◆ purify_scalar_get_b32()

void purify_scalar_get_b32 ( unsigned char  output32[32],
const purify_scalar value 
)

Definition at line 410 of file bppp_bridge.c.

References purify_scalar_cast_const().

Referenced by purify_fe_get_b32(), and purify::FieldElement::to_bytes_be().

◆ purify_scalar_inverse()

void purify_scalar_inverse ( purify_scalar out,
const purify_scalar value 
)

◆ purify_scalar_inverse_var()

void purify_scalar_inverse_var ( purify_scalar out,
const purify_scalar value 
)

◆ purify_scalar_is_even()

int purify_scalar_is_even ( const purify_scalar value)

Definition at line 422 of file bppp_bridge.c.

References purify_scalar_cast_const().

Referenced by purify::FieldElement::is_odd(), and purify_fe_is_odd().

◆ purify_scalar_is_one()

int purify_scalar_is_one ( const purify_scalar value)

Definition at line 418 of file bppp_bridge.c.

References purify_scalar_cast_const().

Referenced by purify::FieldElement::is_one(), and purify_fe_is_one().

◆ purify_scalar_is_zero()

int purify_scalar_is_zero ( const purify_scalar value)

Definition at line 414 of file bppp_bridge.c.

References purify_scalar_cast_const().

Referenced by purify::FieldElement::is_zero(), and purify_fe_is_zero().

◆ purify_scalar_mul()

void purify_scalar_mul ( purify_scalar out,
const purify_scalar lhs,
const purify_scalar rhs 
)

Definition at line 446 of file bppp_bridge.c.

References purify_scalar_cast(), and purify_scalar_cast_const().

Referenced by purify_fe_mul().

◆ purify_scalar_negate()

void purify_scalar_negate ( purify_scalar out,
const purify_scalar value 
)

◆ purify_scalar_set_b32()

void purify_scalar_set_b32 ( purify_scalar out,
const unsigned char  input32[32],
int *  overflow 
)

Definition at line 406 of file bppp_bridge.c.

References purify_scalar_cast().

Referenced by purify_fe_set_b32(), and purify::FieldElement::try_from_bytes32().

◆ purify_scalar_set_int()

void purify_scalar_set_int ( purify_scalar out,
unsigned int  value 
)

Definition at line 398 of file bppp_bridge.c.

References purify_scalar_cast().

Referenced by purify::FieldElement::FieldElement(), and purify_fe_set_zero().

◆ purify_scalar_set_u64()

void purify_scalar_set_u64 ( purify_scalar out,
uint64_t  value 
)

Definition at line 402 of file bppp_bridge.c.

References purify_scalar_cast().

Referenced by purify::FieldElement::from_u64(), and purify_fe_set_u64().

◆ purify_secp_context_create()

purify_secp_context * purify_secp_context_create ( void  )

◆ purify_secp_context_destroy()

void purify_secp_context_destroy ( purify_secp_context context)

Definition at line 69 of file bppp_bridge.c.

References purify_secp_context::ctx.

Referenced by purify::SecpContextDeleter::operator()().

◆ purify_serialize_point()

◆ purify_sha256()

void purify_sha256 ( unsigned char  output32[32],
const unsigned char *  data,
size_t  data_len 
)
Parameters
output32Output digest buffer.
dataPointer to message bytes, or NULL when data_len is zero.
data_lenMessage length in bytes.

Definition at line 454 of file bppp_bridge.c.

Referenced by purify::bppp::generator_backend_cache_key(), purify_curve_tag_hash(), and purify::TaggedHash::TaggedHash().

◆ purify_sha256_many()

int purify_sha256_many ( unsigned char  output32[32],
const unsigned char *const *  items,
const size_t *  item_lens,
size_t  items_count 
)
Parameters
output32Output digest buffer.
itemsArray of item pointers. Each item may be NULL only when the corresponding length is zero.
item_lensArray of item lengths in bytes.
items_countNumber of items in both arrays.
Returns
Nonzero on success, zero on invalid input.

Definition at line 471 of file bppp_bridge.c.

Referenced by purify::TaggedHash::digest_many(), and purify_curve_hash_to_int_tagged_u320().

◆ purify_total_row_entries()

static size_t purify_total_row_entries ( const purify_bulletproof_row_view rows,
size_t  count,
int *  ok 
)
static

Definition at line 878 of file bppp_bridge.c.

References purify_bridge_checked_add_size().

Referenced by purify_build_bulletproof_circuit().