Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Classes | Namespaces | Functions
r1cs_ppzkadsnark.hpp File Reference
#include <libff/algebra/curves/public_params.hpp>
#include <libsnark/common/data_structures/accumulation_vector.hpp>
#include <libsnark/knowledge_commitment/knowledge_commitment.hpp>
#include <libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.hpp>
#include <libsnark/zk_proof_systems/ppzkadsnark/r1cs_ppzkadsnark/r1cs_ppzkadsnark_params.hpp>
#include <libsnark/zk_proof_systems/ppzkadsnark/r1cs_ppzkadsnark/r1cs_ppzkadsnark_prf.hpp>
#include <libsnark/zk_proof_systems/ppzkadsnark/r1cs_ppzkadsnark/r1cs_ppzkadsnark_signature.hpp>
#include <memory>
#include <libsnark/zk_proof_systems/ppzkadsnark/r1cs_ppzkadsnark/r1cs_ppzkadsnark.tcc>
Include dependency graph for r1cs_ppzkadsnark.hpp:

Go to the source code of this file.

Classes

class  libsnark::r1cs_ppzkadsnark_pub_auth_prms< ppT >
 
class  libsnark::r1cs_ppzkadsnark_pub_auth_prms< ppT >
 
class  libsnark::r1cs_ppzkadsnark_sec_auth_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_sec_auth_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_pub_auth_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_pub_auth_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_auth_keys< ppT >
 
class  libsnark::r1cs_ppzkadsnark_auth_data< ppT >
 
class  libsnark::r1cs_ppzkadsnark_auth_data< ppT >
 
class  libsnark::r1cs_ppzkadsnark_proving_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_proving_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_verification_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_verification_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_processed_verification_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_processed_verification_key< ppT >
 
class  libsnark::r1cs_ppzkadsnark_keypair< ppT >
 
class  libsnark::r1cs_ppzkadsnark_proof< ppT >
 
class  libsnark::r1cs_ppzkadsnark_proof< ppT >
 

Namespaces

 libsnark
 

Functions

template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_pub_auth_prms< ppT > &pap)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_pub_auth_prms< ppT > &pap)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_sec_auth_key< ppT > &key)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_sec_auth_key< ppT > &key)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_pub_auth_key< ppT > &key)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_pub_auth_key< ppT > &key)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_auth_data< ppT > &data)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_auth_data< ppT > &data)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_proving_key< ppT > &pk)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_proving_key< ppT > &pk)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_verification_key< ppT > &vk)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_verification_key< ppT > &vk)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_processed_verification_key< ppT > &pvk)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_processed_verification_key< ppT > &pvk)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_ppzkadsnark_proof< ppT > &proof)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_ppzkadsnark_proof< ppT > &proof)
 
template<typename ppT , libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
r1cs_ppzkadsnark_auth_keys< ppT > libsnark::r1cs_ppzkadsnark_auth_generator (void)
 
template<typename ppT >
std::vector< r1cs_ppzkadsnark_auth_data< ppT > > libsnark::r1cs_ppzkadsnark_auth_sign (const std::vector< libff::Fr< snark_pp< ppT >>> &ins, const r1cs_ppzkadsnark_sec_auth_key< ppT > &sk, const std::vector< labelT > labels)
 
template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_auth_verify (const std::vector< libff::Fr< snark_pp< ppT >>> &data, const std::vector< r1cs_ppzkadsnark_auth_data< ppT >> &auth_data, const r1cs_ppzkadsnark_sec_auth_key< ppT > &sak, const std::vector< labelT > &labels)
 
template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_auth_verify (const std::vector< libff::Fr< snark_pp< ppT >>> &data, const std::vector< r1cs_ppzkadsnark_auth_data< ppT >> &auth_data, const r1cs_ppzkadsnark_pub_auth_key< ppT > &pak, const std::vector< labelT > &labels)
 
template<typename ppT >
r1cs_ppzkadsnark_keypair< ppT > libsnark::r1cs_ppzkadsnark_generator (const r1cs_ppzkadsnark_constraint_system< ppT > &cs, const r1cs_ppzkadsnark_pub_auth_prms< ppT > &prms)
 
template<typename ppT >
r1cs_ppzkadsnark_proof< ppT > libsnark::r1cs_ppzkadsnark_prover (const r1cs_ppzkadsnark_proving_key< ppT > &pk, const r1cs_ppzkadsnark_primary_input< ppT > &primary_input, const r1cs_ppzkadsnark_auxiliary_input< ppT > &auxiliary_input, const std::vector< r1cs_ppzkadsnark_auth_data< ppT >> &auth_data)
 
template<typename ppT >
r1cs_ppzkadsnark_processed_verification_key< ppT > libsnark::r1cs_ppzkadsnark_verifier_process_vk (const r1cs_ppzkadsnark_verification_key< ppT > &vk)
 
template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_verifier (const r1cs_ppzkadsnark_verification_key< ppT > &vk, const r1cs_ppzkadsnark_proof< ppT > &proof, const r1cs_ppzkadsnark_sec_auth_key< ppT > &sak, const std::vector< labelT > &labels)
 
template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_online_verifier (const r1cs_ppzkadsnark_processed_verification_key< ppT > &pvk, const r1cs_ppzkadsnark_proof< ppT > &proof, const r1cs_ppzkadsnark_sec_auth_key< ppT > &sak, const std::vector< labelT > &labels)
 
template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_verifier (const r1cs_ppzkadsnark_verification_key< ppT > &vk, const std::vector< r1cs_ppzkadsnark_auth_data< ppT >> &auth_data, const r1cs_ppzkadsnark_proof< ppT > &proof, const r1cs_ppzkadsnark_pub_auth_key< ppT > &pak, const std::vector< labelT > &labels)
 
template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_online_verifier (const r1cs_ppzkadsnark_processed_verification_key< ppT > &pvk, const std::vector< r1cs_ppzkadsnark_auth_data< ppT >> &auth_data, const r1cs_ppzkadsnark_proof< ppT > &proof, const r1cs_ppzkadsnark_pub_auth_key< ppT > &pak, const std::vector< labelT > &labels)
 

Detailed Description

Declaration of interfaces for a ppzkADSNARK for R1CS.

This includes:

The implementation instantiates the construction in [BBFR15], which in turn is based on the r1cs_ppzkadsnark proof system.

Acronyms:

References:

[BBFR15] "ADSNARK: Nearly Practical and Privacy-Preserving Proofs on Authenticated Data", Michael Backes, Manuel Barbosa, Dario Fiore, Raphael M. Reischuk, IEEE Symposium on Security and Privacy 2015, http://eprint.iacr.org/2014/617

Author
This file is part of libsnark, developed by SCIPR Lab and contributors (see AUTHORS).

Definition in file r1cs_ppzkadsnark.hpp.