nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType > Struct Template Reference

#include <basic_policy.hpp>

+ Collaboration diagram for nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >:

Classes

struct  auth_data
 
struct  auth_keys
 
struct  keypair
 
struct  label_type
 
class  processed_verification_key
 
class  proof
 
class  proving_key
 
struct  pub_auth_key
 
struct  pub_auth_prms
 
struct  sec_auth_key
 
struct  verification_key
 

Public Types

template<typename r1cs_ppzkadsnark_ppT >
using auxiliary_input = r1cs_auxiliary_input< algebra::Fr< snark_pp< r1cs_ppzkadsnark_ppT > >>
 
template<typename r1cs_ppzkadsnark_ppT >
using constraint_system = r1cs_constraint_system< algebra::Fr< snark_pp< r1cs_ppzkadsnark_ppT > >>
 
template<typename r1cs_ppzkadsnark_ppT >
using prf_key = typename r1cs_ppzkadsnark_ppT::prfKeyT
 
template<typename r1cs_ppzkadsnark_ppT >
using primary_input = r1cs_primary_input< algebra::Fr< snark_pp< r1cs_ppzkadsnark_ppT > >>
 
template<typename r1cs_ppzkadsnark_ppT >
using secret_key = typename r1cs_ppzkadsnark_ppT::skT
 
template<typename r1cs_ppzkadsnark_ppT >
using signature = typename r1cs_ppzkadsnark_ppT::sigT
 
template<typename r1cs_ppzkadsnark_ppT >
using snark_pp = typename r1cs_ppzkadsnark_ppT::snark_pp
 
template<typename r1cs_ppzkadsnark_ppT >
using vkT = typename r1cs_ppzkadsnark_ppT::vkT
 

Static Public Member Functions

static auth_keys< CurveType > auth_generator (void)
 
static std::vector< auth_data< CurveType > > auth_sign (const std::vector< typename CurveType::scalar_field_type::value_type > &ins, const sec_auth_key< CurveType > &sk, const std::vector< label_type > labels)
 
static bool auth_verify (const std::vector< typename CurveType::scalar_field_type::value_type > &data, const std::vector< auth_data< CurveType >> &auth_data, const pub_auth_key< CurveType > &pak, const std::vector< label_type > &labels)
 
static bool auth_verify (const std::vector< typename CurveType::scalar_field_type::value_type > &data, const std::vector< auth_data< CurveType >> &auth_data, const sec_auth_key< CurveType > &sak, const std::vector< label_type > &labels)
 
static keypair< CurveType > generator (const constraint_system< CurveType > &cs, const pub_auth_prms< CurveType > &prms)
 
static bool online_verifier (const processed_verification_key< CurveType > &pvk, const proof< CurveType > &proof, const sec_auth_key< CurveType > &sak, const std::vector< label_type > &labels)
 
static bool online_verifier (const processed_verification_key< CurveType > &pvk, const std::vector< auth_data< CurveType >> &auth_data, const proof< CurveType > &proof, const pub_auth_key< CurveType > &pak, const std::vector< label_type > &labels)
 
static proof< CurveType > prover (const proving_key< CurveType > &pk, const primary_input< CurveType > &primary_input, const auxiliary_input< CurveType > &auxiliary_input, const std::vector< auth_data< CurveType >> &auth_data)
 
static bool verifier (const verification_key< CurveType > &vk, const proof< CurveType > &proof, const sec_auth_key< CurveType > &sak, const std::vector< label_type > &labels)
 
static bool verifier (const verification_key< CurveType > &vk, const std::vector< auth_data< CurveType >> &auth_data, const proof< CurveType > &proof, const pub_auth_key< CurveType > &pak, const std::vector< label_type > &labels)
 
static processed_verification_key< CurveType > verifier_process_vk (const verification_key< CurveType > &vk)
 

Member Typedef Documentation

◆ auxiliary_input

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::auxiliary_input = r1cs_auxiliary_input<algebra::Fr<snark_pp<r1cs_ppzkadsnark_ppT> >>

◆ constraint_system

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::constraint_system = r1cs_constraint_system<algebra::Fr<snark_pp<r1cs_ppzkadsnark_ppT> >>

◆ prf_key

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::prf_key = typename r1cs_ppzkadsnark_ppT::prfKeyT

◆ primary_input

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::primary_input = r1cs_primary_input<algebra::Fr<snark_pp<r1cs_ppzkadsnark_ppT> >>

◆ secret_key

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::secret_key = typename r1cs_ppzkadsnark_ppT::skT

◆ signature

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::signature = typename r1cs_ppzkadsnark_ppT::sigT

◆ snark_pp

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::snark_pp = typename r1cs_ppzkadsnark_ppT::snark_pp

Below are various template aliases (used for convenience).

◆ vkT

template<typename CurveType >
template<typename r1cs_ppzkadsnark_ppT >
using nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::vkT = typename r1cs_ppzkadsnark_ppT::vkT

Member Function Documentation

◆ auth_generator()

template<typename CurveType >
static auth_keys<CurveType> nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::auth_generator ( void  )
inlinestatic

R1CS ppZKADSNARK authentication parameters generator algorithm.

◆ auth_sign()

template<typename CurveType >
static std::vector<auth_data<CurveType> > nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::auth_sign ( const std::vector< typename CurveType::scalar_field_type::value_type > &  ins,
const sec_auth_key< CurveType > &  sk,
const std::vector< label_type labels 
)
inlinestatic

R1CS ppZKADSNARK authentication algorithm.

◆ auth_verify() [1/2]

template<typename CurveType >
static bool nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::auth_verify ( const std::vector< typename CurveType::scalar_field_type::value_type > &  data,
const std::vector< auth_data< CurveType >> &  auth_data,
const pub_auth_key< CurveType > &  pak,
const std::vector< label_type > &  labels 
)
inlinestatic

◆ auth_verify() [2/2]

template<typename CurveType >
static bool nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::auth_verify ( const std::vector< typename CurveType::scalar_field_type::value_type > &  data,
const std::vector< auth_data< CurveType >> &  auth_data,
const sec_auth_key< CurveType > &  sak,
const std::vector< label_type > &  labels 
)
inlinestatic

R1CS ppZKADSNARK authentication verification algorithms.

◆ generator()

template<typename CurveType >
static keypair<CurveType> nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::generator ( const constraint_system< CurveType > &  cs,
const pub_auth_prms< CurveType > &  prms 
)
inlinestatic

A generator algorithm for the R1CS ppzkADSNARK.

Given a R1CS constraint system CS, this algorithm produces proving and verification keys for CS.

◆ online_verifier() [1/2]

template<typename CurveType >
static bool nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::online_verifier ( const processed_verification_key< CurveType > &  pvk,
const proof< CurveType > &  proof,
const sec_auth_key< CurveType > &  sak,
const std::vector< label_type > &  labels 
)
inlinestatic

A symmetric verifier algorithm for the R1CS ppzkADSNARK that accepts a processed verification key.

◆ online_verifier() [2/2]

template<typename CurveType >
static bool nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::online_verifier ( const processed_verification_key< CurveType > &  pvk,
const std::vector< auth_data< CurveType >> &  auth_data,
const proof< CurveType > &  proof,
const pub_auth_key< CurveType > &  pak,
const std::vector< label_type > &  labels 
)
inlinestatic

A verifier algorithm for the R1CS ppzkADSNARK that accepts a processed verification key.

◆ prover()

template<typename CurveType >
static proof<CurveType> nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::prover ( const proving_key< CurveType > &  pk,
const primary_input< CurveType > &  primary_input,
const auxiliary_input< CurveType > &  auxiliary_input,
const std::vector< auth_data< CurveType >> &  auth_data 
)
inlinestatic

A prover algorithm for the R1CS ppzkADSNARK.

Given a R1CS primary input X and a R1CS auxiliary input Y, this algorithm produces a proof (of knowledge) that attests to the following statement: `‘there exists Y such that CS(X,Y)=0’'. Above, CS is the R1CS constraint system that was given as input to the generator algorithm.

◆ verifier() [1/2]

template<typename CurveType >
static bool nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::verifier ( const verification_key< CurveType > &  vk,
const proof< CurveType > &  proof,
const sec_auth_key< CurveType > &  sak,
const std::vector< label_type > &  labels 
)
inlinestatic

A symmetric verifier algorithm for the R1CS ppzkADSNARK that accepts a non-processed verification key

◆ verifier() [2/2]

template<typename CurveType >
static bool nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::verifier ( const verification_key< CurveType > &  vk,
const std::vector< auth_data< CurveType >> &  auth_data,
const proof< CurveType > &  proof,
const pub_auth_key< CurveType > &  pak,
const std::vector< label_type > &  labels 
)
inlinestatic

A verifier algorithm for the R1CS ppzkADSNARK that accepts a non-processed verification key

◆ verifier_process_vk()

template<typename CurveType >
static processed_verification_key<CurveType> nil::crypto3::zk::snark::detail::r1cs_ppzkadsnark_basic_policy< CurveType >::verifier_process_vk ( const verification_key< CurveType > &  vk)
inlinestatic

Convert a (non-processed) verification key into a processed verification key.


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