15#ifndef PRIVACY_PROOFS_ZK_LIB_CIRCUITS_MDOC_MDOC_ZK_H_
16#define PRIVACY_PROOFS_ZK_LIB_CIRCUITS_MDOC_MDOC_ZK_H_
33enum CborAttributeType { kPrimitive, kString, kBytes, kDate, kInt };
40 size_t id_len, value_len;
41 CborAttributeType type;
46 MDOC_PROVER_SUCCESS = 0,
47 MDOC_PROVER_NULL_INPUT,
48 MDOC_PROVER_INVALID_INPUT,
49 MDOC_PROVER_CIRCUIT_PARSING_FAILURE,
50 MDOC_PROVER_HASH_PARSING_FAILURE,
51 MDOC_PROVER_WITNESS_CREATION_FAILURE,
52 MDOC_PROVER_GENERAL_FAILURE,
53 MDOC_PROVER_MEMORY_ALLOCATION_FAILURE,
54 MDOC_PROVER_INVALID_ZK_SPEC_VERSION,
59 MDOC_VERIFIER_SUCCESS = 0,
60 MDOC_VERIFIER_CIRCUIT_PARSING_FAILURE,
61 MDOC_VERIFIER_PROOF_TOO_SMALL,
62 MDOC_VERIFIER_HASH_PARSING_FAILURE,
63 MDOC_VERIFIER_SIGNATURE_PARSING_FAILURE,
64 MDOC_VERIFIER_GENERAL_FAILURE,
65 MDOC_VERIFIER_NULL_INPUT,
66 MDOC_VERIFIER_INVALID_INPUT,
67 MDOC_VERIFIER_ARGUMENTS_TOO_SMALL,
68 MDOC_VERIFIER_ATTRIBUTE_NUMBER_MISMATCH,
69 MDOC_VERIFIER_INVALID_ZK_SPEC_VERSION,
70} MdocVerifierErrorCode;
74 CIRCUIT_GENERATION_SUCCESS = 0,
75 CIRCUIT_GENERATION_NULL_INPUT,
76 CIRCUIT_GENERATION_ZLIB_FAILURE,
77 CIRCUIT_GENERATION_GENERAL_FAILURE,
78 CIRCUIT_GENERATION_INVALID_ZK_SPEC_VERSION,
79} CircuitGenerationErrorCode;
92 const char circuit_hash[65];
94 size_t num_attributes;
99static const char kDefaultDocType[] =
"org.iso.18013.5.1.mDL";
117MdocProverErrorCode run_mdoc_prover(
118 const uint8_t* bcp,
size_t bcsz,
119 const uint8_t* mdoc,
size_t mdoc_len,
120 const char* pkx,
const char* pky,
121 const uint8_t* transcript,
size_t tr_len,
124 uint8_t** prf,
size_t* proof_len,
const ZkSpecStruct* zk_spec_version);
130MdocVerifierErrorCode run_mdoc_verifier(
131 const uint8_t* bcp,
size_t bcsz,
132 const char* pkx,
const char* pky,
133 const uint8_t* transcript,
size_t tr_len,
136 const uint8_t* zkproof,
size_t proof_len,
const char* docType,
141CircuitGenerationErrorCode generate_circuit(
const ZkSpecStruct* zk_spec_version,
142 uint8_t** cb,
size_t* clen);
149int circuit_id(uint8_t
id[],
const uint8_t* bcp,
152enum { kNumZkSpecs = 12 };
162const ZkSpecStruct* find_zk_spec(
const char* system_name,
163 const char* circuit_hash);