| 
    Clearmatics Libsnark
    0.1
    
   C++ library for zkSNARK proofs 
   | 
 
 
 
 
Go to the documentation of this file.
    9 #ifndef LIBSNARK_GADGETLIB1_GADGETS_CURVE_SCALAR_MULTIPLICATION_HPP_ 
   10 #define LIBSNARK_GADGETLIB1_GADGETS_CURVE_SCALAR_MULTIPLICATION_HPP_ 
   16 #include <libff/algebra/curves/public_params.hpp> 
   34 template<
typename ppT, 
typename groupT, 
typename groupVariableT>
 
   80     typename variableSelectorT>
 
  115     typename variableSelectorT>
 
  134         const variableT &one_case,
 
  149     typename variableSelectorT,
 
  222     typename variableSelectorT,
 
  267     typename groupVariableT,
 
  306     typename groupVariableT,
 
  311     : 
public gadget<typename groupT::base_field>
 
  314     using FieldT = 
typename groupT::base_field;
 
  323         const scalarT &scalar,
 
  324         const groupVariableT &P,
 
  325         const groupVariableT &
result,
 
  330     const groupVariableT &
result() 
const;
 
  339     typename selectorGadgetT,
 
  346     using nFr = libff::Fr<other_curve<ppT>>;
 
  408 #endif // LIBSNARK_GADGETLIB1_GADGETS_CURVE_SCALAR_MULTIPLICATION_HPP_ 
  
void generate_r1cs_witness()
 
void generate_r1cs_constraints()
 
variableSelectorT selector_A_not_identity
 
void generate_r1cs_constraints()
 
const groupVariableT _result
 
const std::string annotation_prefix
 
std::vector< std::shared_ptr< add_gadget > > _add_gadgets
 
void generate_r1cs_constraints()
 
void generate_r1cs_witness()
 
add_variable_or_identity(protoboard< FieldT > &pb, const variableOrIdentity &A, const variableOrIdentity &B, const variableOrIdentity &result, const std::string &annotation_prefix)
 
pb_linear_combination< FieldT > result_is_identity
 
pb_linear_combination< FieldT > one_case_is_identity
 
void generate_r1cs_witness()
 
variableSelectorT selector_A
 
pb_linear_combination< FieldT > is_identity
 
protoboard< libff::Fr< ppT > > & pb
 
variableSelectorT value_selector
 
pb_linear_combination< FieldT > one_case_is_identity
 
groupT get_element() const
 
variableT A_not_identity_result
 
variable_or_identity(protoboard< FieldT > &pb, const std::string &annotation_prefix)
 
variableSelectorT value_selector
 
void generate_r1cs_constraints()
 
const groupVariableT & result() const
 
typename wppT ::base_field FieldT
 
void generate_r1cs_witness(const groupT &elt)
 
variable_and_variable_or_identity_selector(protoboard< FieldT > &pb, const pb_linear_combination< FieldT > &selector, const variableOrIdentity &zero_case, const variableT &one_case, const variableOrIdentity &result, const std::string &annotation_prefix)
 
std::shared_ptr< selectVarOrVarIdentityGadget > final_add_input_left
 
dbl_variable_or_identity(protoboard< FieldT > &pb, const variableOrIdentity &A, const variableOrIdentity &result, const std::string &annotation_prefix)
 
std::vector< selectVarOrVarIdentityGadget > selector_gadgets
 
point_mul_by_const_scalar_gadget(protoboard< FieldT > &pb, const scalarT &scalar, const groupVariableT &P, const groupVariableT &result, const std::string &annotation_prefix)
 
libff::Fr< other_curve< ppT > > nFr
 
void generate_r1cs_witness()
 
pb_linear_combination< FieldT > zero_case_is_identity
 
void generate_r1cs_constraints()
 
void generate_r1cs_constraints()
 
const groupVarOrIdentity & result() const
 
void generate_r1cs_witness()
 
pb_variable< FieldT > is_identity_var
 
Selector gadget for variable_or_identity.
 
variableOrIdentity result
 
variableOrIdentity result
 
variable_or_identity_selector(protoboard< FieldT > &pb, const pb_linear_combination< FieldT > &selector, const variableOrIdentity &zero_case, const variableOrIdentity &one_case, const variableOrIdentity &result, const std::string &annotation_prefix)
 
point_mul_by_scalar_gadget(protoboard< Field > &pb, const pb_linear_combination< Field > &scalar, const groupVarT &P, const groupVarOrIdentity &result, const std::string &annotation_prefix)
 
void generate_r1cs_constraints()
 
void generate_r1cs_constraints()
 
void generate_r1cs_witness()
 
add_variable_and_variable_or_identity(protoboard< FieldT > &pb, const variableOrIdentity &A, const variableT &B, const variableT &result, const std::string &annotation_prefix)
 
std::vector< dblVarOrIdentityGadget > dbl_gadgets
 
variableOrIdentity result
 
std::vector< addVarAndVarOrIdentityGadget > add_gadgets
 
packing_gadget< Field > scalar_unpacked
 
void generate_r1cs_witness()
 
std::vector< std::shared_ptr< dbl_gadget > > _dbl_gadgets
 
std::shared_ptr< selectorGadgetT > final_add_input_right
 
pb_linear_combination< FieldT > A_is_identity
 
pb_linear_combination< FieldT > zero_case_is_identity
 
static pb_variable_array< Field > create_variable_array_for_bits(protoboard< Field > &pb, const std::string &annotation_prefix)
 
variableSelectorT selector_A
 
Selector gadget for a variable_or_identity, and a variable.