15#ifndef PRIVACY_PROOFS_ZK_LIB_CIRCUITS_MDOC_MDOC_ZK_H_
16#define PRIVACY_PROOFS_ZK_LIB_CIRCUITS_MDOC_MDOC_ZK_H_
33const size_t kLigeroRate = 4;
34const size_t kLigeroNreq = 128;
40 uint8_t namespace_id[64];
42 uint8_t cbor_value[64];
43 size_t namespace_len, id_len, cbor_value_len;
48 MDOC_PROVER_SUCCESS = 0,
49 MDOC_PROVER_NULL_INPUT,
50 MDOC_PROVER_INVALID_INPUT,
51 MDOC_PROVER_CIRCUIT_PARSING_FAILURE,
52 MDOC_PROVER_HASH_PARSING_FAILURE,
53 MDOC_PROVER_WITNESS_CREATION_FAILURE,
54 MDOC_PROVER_GENERAL_FAILURE,
55 MDOC_PROVER_MEMORY_ALLOCATION_FAILURE,
56 MDOC_PROVER_INVALID_ZK_SPEC_VERSION,
61 MDOC_VERIFIER_SUCCESS = 0,
62 MDOC_VERIFIER_CIRCUIT_PARSING_FAILURE,
63 MDOC_VERIFIER_PROOF_TOO_SMALL,
64 MDOC_VERIFIER_HASH_PARSING_FAILURE,
65 MDOC_VERIFIER_SIGNATURE_PARSING_FAILURE,
66 MDOC_VERIFIER_GENERAL_FAILURE,
67 MDOC_VERIFIER_NULL_INPUT,
68 MDOC_VERIFIER_INVALID_INPUT,
69 MDOC_VERIFIER_ARGUMENTS_TOO_SMALL,
70 MDOC_VERIFIER_ATTRIBUTE_NUMBER_MISMATCH,
71 MDOC_VERIFIER_INVALID_ZK_SPEC_VERSION,
72} MdocVerifierErrorCode;
76 CIRCUIT_GENERATION_SUCCESS = 0,
77 CIRCUIT_GENERATION_NULL_INPUT,
78 CIRCUIT_GENERATION_ZLIB_FAILURE,
79 CIRCUIT_GENERATION_GENERAL_FAILURE,
80 CIRCUIT_GENERATION_INVALID_ZK_SPEC_VERSION,
81} CircuitGenerationErrorCode;
94 const char circuit_hash[65];
96 size_t num_attributes;
100 size_t block_enc_hash, block_enc_sig;
103static const char kDefaultDocType[] =
"org.iso.18013.5.1.mDL";
108static const size_t kCircuitSizeMax = 150000000;
126MdocProverErrorCode run_mdoc_prover(
127 const uint8_t* bcp,
size_t bcsz,
128 const uint8_t* mdoc,
size_t mdoc_len,
129 const char* pkx,
const char* pky,
130 const uint8_t* transcript,
size_t tr_len,
133 uint8_t** prf,
size_t* proof_len,
const ZkSpecStruct* zk_spec_version);
139MdocVerifierErrorCode run_mdoc_verifier(
140 const uint8_t* bcp,
size_t bcsz,
141 const char* pkx,
const char* pky,
142 const uint8_t* transcript,
size_t tr_len,
145 const uint8_t* zkproof,
size_t proof_len,
const char* docType,
152CircuitGenerationErrorCode generate_circuit(
const ZkSpecStruct* zk_spec_version,
153 uint8_t** cb,
size_t* clen);
160int circuit_id(uint8_t
id[],
const uint8_t* bcp,
163enum { kNumZkSpecs = 12 };
173const ZkSpecStruct* find_zk_spec(
const char* system_name,
174 const char* circuit_hash);