23#include "ext_headers.h"
25#if defined __has_include
26#if __has_include("lc_bike_5.h")
28#define LC_BIKE_5_ENABLED
30#if __has_include("lc_bike_3.h")
32#define LC_BIKE_3_ENABLED
34#if __has_include("lc_bike_1.h")
36#define LC_BIKE_1_ENABLED
39#error "Compiler misses __has_include"
84#ifdef LC_BIKE_5_ENABLED
85 struct lc_bike_5_sk sk_5;
87#ifdef LC_BIKE_3_ENABLED
88 struct lc_bike_3_sk sk_3;
90#ifdef LC_BIKE_1_ENABLED
91 struct lc_bike_1_sk sk_1;
102#ifdef LC_BIKE_5_ENABLED
103 struct lc_bike_5_pk pk_5;
105#ifdef LC_BIKE_3_ENABLED
106 struct lc_bike_3_pk pk_3;
108#ifdef LC_BIKE_1_ENABLED
109 struct lc_bike_1_pk pk_1;
120#ifdef LC_BIKE_5_ENABLED
121 struct lc_bike_5_ct ct_5;
123#ifdef LC_BIKE_3_ENABLED
124 struct lc_bike_3_ct ct_3;
126#ifdef LC_BIKE_1_ENABLED
127 struct lc_bike_1_ct ct_1;
138#ifdef LC_BIKE_5_ENABLED
139 struct lc_bike_5_ss ss_5;
141#ifdef LC_BIKE_3_ENABLED
142 struct lc_bike_3_ss ss_3;
144#ifdef LC_BIKE_1_ENABLED
145 struct lc_bike_1_ss ss_1;
373 struct lc_rng_ctx *rng_ctx,
enum lc_bike_type bike_type);
397 const uint8_t *seed,
size_t seedlen,
LC_PURE unsigned int lc_bike_pk_size(enum lc_bike_type bike_type)
Return the size of the BIKE public key.
LC_PURE unsigned int lc_bike_ss_size(enum lc_bike_type bike_type)
Return the size of the BIKE shared secret.
int lc_bike_ct_ptr(uint8_t **bike_ct, size_t *bike_ct_len, struct lc_bike_ct *ct)
Obtain the reference to the BIKE ciphertext and its length.
int lc_bike_dec(struct lc_bike_ss *ss, const struct lc_bike_ct *ct, const struct lc_bike_sk *sk)
Key decapsulation.
int lc_bike_ss_load(struct lc_bike_ss *ss, const uint8_t *src_key, size_t src_key_len)
Load a BIKE shared secret provided with a buffer into the leancrypto data structure.
int lc_bike_enc_kdf(struct lc_bike_ct *ct, uint8_t *ss, size_t ss_len, const struct lc_bike_pk *pk)
Key encapsulation with KDF applied to shared secret.
int lc_bike_ct_load(struct lc_bike_ct *ct, const uint8_t *src_key, size_t src_key_len)
Load a BIKE ciphertext key provided with a buffer into the leancrypto data structure.
enum lc_bike_type lc_bike_sk_type(const struct lc_bike_sk *sk)
Obtain BIKE type from secret key.
int lc_bike_pk_ptr(uint8_t **bike_key, size_t *bike_key_len, struct lc_bike_pk *pk)
Obtain the reference to the BIKE key and its length.
int lc_bike_keypair(struct lc_bike_pk *pk, struct lc_bike_sk *sk, struct lc_rng_ctx *rng_ctx, enum lc_bike_type bike_type)
Generates public and private key for IND-CCA2-secure BIKE key encapsulation mechanism.
int lc_bike_sk_load(struct lc_bike_sk *sk, const uint8_t *src_key, size_t src_key_len)
Load a BIKE secret key provided with a buffer into the leancrypto data structure.
LC_PURE unsigned int lc_bike_ct_size(enum lc_bike_type bike_type)
Return the size of the BIKE ciphertext.
int lc_bike_ss_ptr(uint8_t **bike_ss, size_t *bike_ss_len, struct lc_bike_ss *ss)
Obtain the reference to the BIKE shared secret and its length.
int lc_bike_enc(struct lc_bike_ct *ct, struct lc_bike_ss *ss, const struct lc_bike_pk *pk)
Key encapsulation.
enum lc_bike_type lc_bike_ct_type(const struct lc_bike_ct *ct)
Obtain BIKE type from BIKE ciphertext.
enum lc_bike_type lc_bike_pk_type(const struct lc_bike_pk *pk)
Obtain BIKE type from public key.
int lc_bike_keypair_from_seed(struct lc_bike_pk *pk, struct lc_bike_sk *sk, const uint8_t *seed, size_t seedlen, enum lc_bike_type bike_type)
Generates BIKE public and private key from a given seed.
int lc_bike_sk_ptr(uint8_t **bike_key, size_t *bike_key_len, struct lc_bike_sk *sk)
Obtain the reference to the BIKE key and its length.
int lc_bike_pk_load(struct lc_bike_pk *pk, const uint8_t *src_key, size_t src_key_len)
Load a BIKE public key provided with a buffer into the leancrypto data structure.
int lc_bike_dec_kdf(uint8_t *ss, size_t ss_len, const struct lc_bike_ct *ct, const struct lc_bike_sk *sk)
Key decapsulation with KDF applied to shared secret.
enum lc_bike_type lc_bike_ss_type(const struct lc_bike_ss *ss)
Obtain BIKE type from shared secret.
LC_PURE unsigned int lc_bike_sk_size(enum lc_bike_type bike_type)
Return the size of the BIKE secret key.
enum lc_bike_type bike_type
enum lc_bike_type bike_type
union lc_bike_ct::@075141013122357067044040073060341316355050221242 key
union lc_bike_pk::@116271161166350021202026271122376246036364015044 key
union lc_bike_ss::@106016031101347344115032136211234116230343337236 key
enum lc_bike_type bike_type
union lc_bike_sk::@040120127340073073102072071314100373252250331052 key
enum lc_bike_type bike_type