38#define BBS_PROOF_BASE_LEN 272
43#define BBS_PROOF_UD_ELEM_LEN 32
50#define BBS_PROOF_LEN(num_undisclosed) (BBS_PROOF_BASE_LEN + num_undisclosed * BBS_PROOF_UD_ELEM_LEN \
158 const uint8_t *key_material,
159 uint16_t key_material_len,
160 const uint8_t *key_info,
161 uint16_t key_info_len,
162 const uint8_t *key_dst,
206 const uint8_t *header,
208 uint64_t num_messages,
234 const uint8_t *header,
236 uint64_t num_messages,
276 const uint8_t *header,
278 const uint8_t *presentation_header,
279 uint64_t presentation_header_len,
280 const uint64_t *disclosed_indexes,
281 uint64_t disclosed_indexes_len,
282 uint64_t num_messages,
317 const uint8_t *proof,
319 const uint8_t *header,
321 const uint8_t *presentation_header,
322 uint64_t presentation_header_len,
323 const uint64_t *disclosed_indexes,
324 uint64_t disclosed_indexes_len,
325 uint64_t num_messages,
340#define bbs_sha256_keygen_full(...) bbs_keygen_full(bbs_sha256_cipher_suite,__VA_ARGS__)
346#define bbs_sha256_keygen(...) bbs_keygen(bbs_sha256_cipher_suite,__VA_ARGS__)
352#define bbs_sha256_sk_to_pk(...) bbs_sk_to_pk(bbs_sha256_cipher_suite,__VA_ARGS__)
358#define bbs_sha256_sign(...) bbs_sign(bbs_sha256_cipher_suite,__VA_ARGS__)
364#define bbs_sha256_verify(...) bbs_verify(bbs_sha256_cipher_suite,__VA_ARGS__)
370#define bbs_sha256_proof_gen(...) bbs_proof_gen(bbs_sha256_cipher_suite,__VA_ARGS__)
376#define bbs_sha256_proof_verify(...) bbs_proof_verify(bbs_sha256_cipher_suite,__VA_ARGS__)
390#define bbs_shake256_keygen_full(...) bbs_keygen_full(bbs_shake256_cipher_suite,__VA_ARGS__)
395#define bbs_shake256_keygen(...) bbs_keygen(bbs_shake256_cipher_suite,__VA_ARGS__)
401#define bbs_shake256_sk_to_pk(...) bbs_sk_to_pk(bbs_shake256_cipher_suite,__VA_ARGS__)
407#define bbs_shake256_sign(...) bbs_sign(bbs_shake256_cipher_suite,__VA_ARGS__)
413#define bbs_shake256_verify(...) bbs_verify(bbs_shake256_cipher_suite,__VA_ARGS__)
419#define bbs_shake256_proof_gen(...) bbs_proof_gen(bbs_shake256_cipher_suite,__VA_ARGS__)
425#define bbs_shake256_proof_verify(...) bbs_proof_verify(bbs_shake256_cipher_suite,__VA_ARGS__)
bbs_cipher_suite_t * bbs_shake256_cipher_suite
Definition bbs.c:87
int bbs_sign(bbs_cipher_suite_t *cipher_suite, const bbs_secret_key sk, const bbs_public_key pk, bbs_signature signature, const uint8_t *header, uint64_t header_len, uint64_t num_messages,...)
Create a signature.
Definition bbs.c:249
uint8_t bbs_public_key[BBS_PK_LEN]
BBS public key.
Definition bbs.h:77
#define BBS_PK_LEN
Octet string length of public key.
Definition bbs.h:28
int bbs_proof_gen(bbs_cipher_suite_t *cipher_suite, const bbs_public_key pk, const bbs_signature signature, uint8_t *proof, const uint8_t *header, uint64_t header_len, const uint8_t *presentation_header, uint64_t presentation_header_len, const uint64_t *disclosed_indexes, uint64_t disclosed_indexes_len, uint64_t num_messages,...)
Create a proof over a signature.
Definition bbs.c:1066
int bbs_sk_to_pk(bbs_cipher_suite_t *cipher_suite, const bbs_secret_key sk, bbs_public_key pk)
Definition bbs.c:216
bbs_cipher_suite_t * bbs_sha256_cipher_suite
Definition bbs.c:61
int bbs_proof_verify(bbs_cipher_suite_t *cipher_suite, const bbs_public_key pk, const uint8_t *proof, uint64_t proof_len, const uint8_t *header, uint64_t header_len, const uint8_t *presentation_header, uint64_t presentation_header_len, const uint64_t *disclosed_indexes, uint64_t disclosed_indexes_len, uint64_t num_messages,...)
Verify a proof over a signature.
Definition bbs.c:1125
int bbs_verify(bbs_cipher_suite_t *cipher_suite, const bbs_public_key pk, const bbs_signature signature, const uint8_t *header, uint64_t header_len, uint64_t num_messages,...)
Verify a signature.
Definition bbs.c:445
uint8_t bbs_signature[BBS_SIG_LEN]
BBS signature.
Definition bbs.h:85
struct bbs_cipher_suite bbs_cipher_suite_t
BBS cipher suite.
Definition bbs.h:93
#define BBS_SK_LEN
Octet string length of secret key.
Definition bbs.h:23
int bbs_keygen_full(bbs_cipher_suite_t *cipher_suite, bbs_secret_key sk, bbs_public_key pk)
Definition bbs.c:91
int bbs_deinit(void)
Definition bbs.c:209
#define BBS_SIG_LEN
Octet string length of signature.
Definition bbs.h:33
int bbs_init(void)
Definition bbs.c:193
int bbs_keygen(bbs_cipher_suite_t *cipher_suite, bbs_secret_key sk, const uint8_t *key_material, uint16_t key_material_len, const uint8_t *key_info, uint16_t key_info_len, const uint8_t *key_dst, uint8_t key_dst_len)
Definition bbs.c:127
uint8_t bbs_secret_key[BBS_SK_LEN]
BBS secret key.
Definition bbs.h:69