32#include "ext_headers.h"
50#define LC_KYBER_Q 3329
52#define LC_KYBER_SYMBYTES 32
53#define LC_KYBER_SSBYTES 32
55#define LC_KYBER_POLYBYTES 384
56#define LC_KYBER_POLYVECBYTES (LC_KYBER_K * LC_KYBER_POLYBYTES)
59#define LC_KYBER_ETA1 3
60#define LC_KYBER_POLYCOMPRESSEDBYTES 128
61#define LC_KYBER_POLYVECCOMPRESSEDBYTES (LC_KYBER_K * 320)
63#define LC_KYBER_ETA1 2
64#define LC_KYBER_POLYCOMPRESSEDBYTES 128
65#define LC_KYBER_POLYVECCOMPRESSEDBYTES (LC_KYBER_K * 320)
67#define LC_KYBER_ETA1 2
68#define LC_KYBER_POLYCOMPRESSEDBYTES 160
69#define LC_KYBER_POLYVECCOMPRESSEDBYTES (LC_KYBER_K * 352)
72#define LC_KYBER_ETA2 2
74#define LC_KYBER_INDCPA_MSGBYTES (LC_KYBER_SYMBYTES)
75#define LC_KYBER_INDCPA_PUBLICKEYBYTES \
76 (LC_KYBER_POLYVECBYTES + LC_KYBER_SYMBYTES)
77#define LC_KYBER_INDCPA_SECRETKEYBYTES (LC_KYBER_POLYVECBYTES)
78#define LC_KYBER_INDCPA_BYTES \
79 (LC_KYBER_POLYVECCOMPRESSEDBYTES + LC_KYBER_POLYCOMPRESSEDBYTES)
89#define LC_KYBER_PUBLICKEYBYTES (LC_KYBER_INDCPA_PUBLICKEYBYTES)
91#define LC_KYBER_SECRETKEYBYTES \
92 (LC_KYBER_INDCPA_SECRETKEYBYTES + LC_KYBER_INDCPA_PUBLICKEYBYTES + \
93 2 * LC_KYBER_SYMBYTES)
94#define LC_KYBER_CIPHERTEXTBYTES (LC_KYBER_INDCPA_BYTES)
96#define LC_CRYPTO_SECRETKEYBYTES LC_KYBER_SECRETKEYBYTES
97#define LC_CRYPTO_PUBLICKEYBYTES LC_KYBER_PUBLICKEYBYTES
98#define LC_CRYPTO_CIPHERTEXTBYTES LC_KYBER_CIPHERTEXTBYTES
99#define LC_CRYPTO_BYTES LC_KYBER_SSBYTES
116 uint8_t
sk[LC_KYBER_SECRETKEYBYTES];
123 uint8_t
pk[LC_KYBER_PUBLICKEYBYTES];
130 uint8_t
ct[LC_CRYPTO_CIPHERTEXTBYTES];
137 uint8_t
ss[LC_KYBER_SSBYTES];
187 struct lc_rng_ctx *rng_ctx);
214 const uint8_t *seed,
size_t seedlen);
382 size_t shared_secret_len,
const uint8_t *kdf_nonce,
383 size_t kdf_nonce_len,
406 const uint8_t *kdf_nonce,
size_t kdf_nonce_len,
503 uint8_t *shared_secret,
size_t shared_secret_len,
504 const uint8_t *kdf_nonce,
size_t kdf_nonce_len,
530 const uint8_t *kdf_nonce,
size_t kdf_nonce_len,
573 const uint8_t *plaintext, uint8_t *ciphertext,
574 size_t datalen,
const uint8_t *aad,
size_t aadlen,
575 uint8_t *tag,
size_t taglen,
struct lc_aead_ctx *aead);
605 const uint8_t *aad,
size_t aadlen);
629 const uint8_t *plaintext,
630 uint8_t *ciphertext,
size_t datalen)
655 uint8_t *tag,
size_t taglen)
688 const uint8_t *ciphertext, uint8_t *plaintext,
689 size_t datalen,
const uint8_t *aad,
size_t aadlen,
690 const uint8_t *tag,
size_t taglen,
691 struct lc_aead_ctx *aead);
721 const uint8_t *aad,
size_t aadlen);
745 const uint8_t *ciphertext,
746 uint8_t *plaintext,
size_t datalen)
771 const uint8_t *tag,
size_t taglen)
786#define LC_KYBER_X25519_KEM
787#ifdef LC_KYBER_X25519_KEM
789#include "lc_x25519.h"
836 struct lc_rng_ctx *rng_ctx);
932 uint8_t *shared_secret,
933 size_t shared_secret_len,
934 const uint8_t *kdf_nonce,
935 size_t kdf_nonce_len,
958 size_t shared_secret_len,
959 const uint8_t *kdf_nonce,
960 size_t kdf_nonce_len,
1009 uint8_t *shared_secret,
1010 size_t shared_secret_len,
1011 const uint8_t *kdf_nonce,
1012 size_t kdf_nonce_len,
1038 size_t shared_secret_len,
1039 const uint8_t *kdf_nonce,
1040 size_t kdf_nonce_len,
1081 const uint8_t *plaintext, uint8_t *ciphertext,
1082 size_t datalen,
const uint8_t *aad,
size_t aadlen,
1083 uint8_t *tag,
size_t taglen,
1084 struct lc_aead_ctx *aead);
1115 const uint8_t *aad,
size_t aadlen);
1137 const uint8_t *plaintext,
1138 uint8_t *ciphertext,
1164 uint8_t *tag,
size_t taglen)
1199 const uint8_t *ciphertext, uint8_t *plaintext,
1200 size_t datalen,
const uint8_t *aad,
size_t aadlen,
1201 const uint8_t *tag,
size_t taglen,
1202 struct lc_aead_ctx *aead);
1233 const uint8_t *aad,
size_t aadlen);
1257 const uint8_t *ciphertext,
1302#define LC_KYBER_X448_KEM
1303#ifdef LC_KYBER_X448_KEM
1352 struct lc_rng_ctx *rng_ctx);
1448 uint8_t *shared_secret,
1449 size_t shared_secret_len,
1450 const uint8_t *kdf_nonce,
1451 size_t kdf_nonce_len,
1474 size_t shared_secret_len,
1475 const uint8_t *kdf_nonce,
1476 size_t kdf_nonce_len,
1525 uint8_t *shared_secret,
1526 size_t shared_secret_len,
1527 const uint8_t *kdf_nonce,
1528 size_t kdf_nonce_len,
1554 size_t shared_secret_len,
1555 const uint8_t *kdf_nonce,
1556 size_t kdf_nonce_len,
1597 const uint8_t *plaintext, uint8_t *ciphertext,
1598 size_t datalen,
const uint8_t *aad,
size_t aadlen,
1599 uint8_t *tag,
size_t taglen,
1600 struct lc_aead_ctx *aead);
1631 const uint8_t *aad,
size_t aadlen);
1653 const uint8_t *plaintext,
1654 uint8_t *ciphertext,
1680 uint8_t *tag,
size_t taglen)
1715 const uint8_t *ciphertext, uint8_t *plaintext,
1716 size_t datalen,
const uint8_t *aad,
size_t aadlen,
1717 const uint8_t *tag,
size_t taglen,
1718 struct lc_aead_ctx *aead);
1749 const uint8_t *aad,
size_t aadlen);
1773 const uint8_t *ciphertext,
1817#ifndef LC_KYBER_INTERNAL
1821#undef LC_KYBER_SYMBYTES
1822#undef LC_KYBER_SSBYTES
1823#undef LC_KYBER_POLYBYTES
1824#undef LC_KYBER_POLYVECBYTES
1826#undef LC_KYBER_POLYCOMPRESSEDBYTES
1827#undef LC_KYBER_POLYVECCOMPRESSEDBYTES
1829#undef LC_KYBER_INDCPA_MSGBYTES
1830#undef LC_KYBER_INDCPA_PUBLICKEYBYTES
1831#undef LC_KYBER_INDCPA_SECRETKEYBYTES
1832#undef LC_KYBER_INDCPA_BYTES
1833#undef LC_KYBER_PUBLICKEYBYTES
1834#undef LC_KYBER_SECRETKEYBYTES
1835#undef LC_KYBER_CIPHERTEXTBYTES
1836#undef LC_CRYPTO_SECRETKEYBYTES
1837#undef LC_CRYPTO_PUBLICKEYBYTES
1838#undef LC_CRYPTO_CIPHERTEXTBYTES
1839#undef LC_CRYPTO_BYTES
int lc_aead_dec_update(struct lc_aead_ctx *ctx, const uint8_t *ciphertext, uint8_t *plaintext, size_t datalen)
AEAD-decrypt data - send partial data.
int lc_aead_dec_final(struct lc_aead_ctx *ctx, const uint8_t *tag, size_t taglen)
AEAD-decrypt data - Perform authentication.
int lc_aead_enc_update(struct lc_aead_ctx *ctx, const uint8_t *plaintext, uint8_t *ciphertext, size_t datalen)
AEAD-encrypt data - send partial data.
int lc_aead_enc_final(struct lc_aead_ctx *ctx, uint8_t *tag, size_t taglen)
Complete AEAD encryption - Obtain the authentication tag from the encryption operation.
static int lc_kyber_768_ies_enc_final(struct lc_aead_ctx *aead, uint8_t *tag, size_t taglen)
lc_kyber_ies_enc_final - KyberIES encryption stream operation finalization / integrity test
int lc_kyber_768_iv_sk(const struct lc_kyber_768_sk *sk)
static int lc_kyber_768_x448_ies_dec_update(struct lc_aead_ctx *aead, const uint8_t *ciphertext, uint8_t *plaintext, size_t datalen)
lc_kyber_x448_ies_dec_update - KyberIES decryption stream operation add more data
struct lc_kyber_768_sk sk
int lc_kyber_768_x25519_keypair(struct lc_kyber_768_x25519_pk *pk, struct lc_kyber_768_x25519_sk *sk, struct lc_rng_ctx *rng_ctx)
lc_kyber_x25519_keypair - Generates public and private key for IND-CCA2-secure Kyber key encapsulatio...
struct lc_kyber_768_pk pk
struct lc_x448_sk sk_x448
int lc_kyber_768_x448_enc_kdf(struct lc_kyber_768_x448_ct *ct, uint8_t *ss, size_t ss_len, const struct lc_kyber_768_x448_pk *pk)
lc_kyber_x448_enc_kdf - Key encapsulation with KDF applied to shared secret
int lc_kyber_768_ies_enc_init(struct lc_aead_ctx *aead, const struct lc_kyber_768_pk *pk, struct lc_kyber_768_ct *ct, const uint8_t *aad, size_t aadlen)
lc_kyber_ies_enc_init - KyberIES encryption stream operation initialization
static int lc_kyber_768_x448_ies_enc_update(struct lc_aead_ctx *aead, const uint8_t *plaintext, uint8_t *ciphertext, size_t datalen)
lc_kyber_x448_ies_enc_update - KyberIES encryption stream operation add more data
int lc_kyber_768_dec_kdf(uint8_t *ss, size_t ss_len, const struct lc_kyber_768_ct *ct, const struct lc_kyber_768_sk *sk)
lc_kyber_dec_kdf - Key decapsulation with KDF applied to shared secret
int lc_kyber_768_ies_dec(const struct lc_kyber_768_sk *sk, const struct lc_kyber_768_ct *ct, const uint8_t *ciphertext, uint8_t *plaintext, size_t datalen, const uint8_t *aad, size_t aadlen, const uint8_t *tag, size_t taglen, struct lc_aead_ctx *aead)
lc_kyber_ies_dec - KyberIES decryption oneshot
static int lc_kyber_768_x25519_ies_dec_final(struct lc_aead_ctx *aead, const uint8_t *tag, size_t taglen)
lc_kyber _x25519_ies_dec_final - KyberIES decryption stream operation finalization / integrity test
int lc_kyber_768_x25519_ies_dec(const struct lc_kyber_768_x25519_sk *sk, const struct lc_kyber_768_x25519_ct *ct, const uint8_t *ciphertext, uint8_t *plaintext, size_t datalen, const uint8_t *aad, size_t aadlen, const uint8_t *tag, size_t taglen, struct lc_aead_ctx *aead)
lc_kyber_x25519_ies_dec - KyberIES decryption oneshot
int lc_kyber_768_keypair(struct lc_kyber_768_pk *pk, struct lc_kyber_768_sk *sk, struct lc_rng_ctx *rng_ctx)
lc_kyber_keypair - Generates public and private key for IND-CCA2-secure Kyber key encapsulation mecha...
static LC_PURE unsigned int lc_kyber_768_ss_size(void)
Return the size of the Kyber shared secret.
static int lc_kyber_768_x25519_ies_enc_final(struct lc_aead_ctx *aead, uint8_t *tag, size_t taglen)
lc_kyber_x25519_ies_enc_final - KyberIES encryption stream operation finalization / integrity test
int lc_kyber_768_enc_kdf(struct lc_kyber_768_ct *ct, uint8_t *ss, size_t ss_len, const struct lc_kyber_768_pk *pk)
lc_kyber_768_enc_kdf - Key encapsulation with KDF applied to shared secret
struct lc_x448_pk pk_x448
uint8_t sk[LC_KYBER_SECRETKEYBYTES]
static LC_PURE unsigned int lc_kyber_768_ct_size(void)
Return the size of the Kyber ciphertext.
static int lc_kyber_768_ies_dec_update(struct lc_aead_ctx *aead, const uint8_t *ciphertext, uint8_t *plaintext, size_t datalen)
lc_kyber_ies_dec_update - KyberIES decryption stream operation add more data
int lc_kyber_768_x25519_ies_dec_init(struct lc_aead_ctx *aead, const struct lc_kyber_768_x25519_sk *sk, const struct lc_kyber_768_x25519_ct *ct, const uint8_t *aad, size_t aadlen)
lc_kyber_x25519_ies_dec_init - KyberIES decryption stream operation initialization
int lc_kyber_768_x25519_ies_enc(const struct lc_kyber_768_x25519_pk *pk, struct lc_kyber_768_x25519_ct *ct, const uint8_t *plaintext, uint8_t *ciphertext, size_t datalen, const uint8_t *aad, size_t aadlen, uint8_t *tag, size_t taglen, struct lc_aead_ctx *aead)
lc_kyber_x25519_ies_enc - KyberIES encryption oneshot
static int lc_kyber_768_ies_enc_update(struct lc_aead_ctx *aead, const uint8_t *plaintext, uint8_t *ciphertext, size_t datalen)
lc_kyber_ies_enc_update - KyberIES encryption stream operation add more data
int lc_kex_768_x25519_ake_initiator_ss(uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x25519_ct *ct_e_r_1, const struct lc_kyber_768_x25519_ct *ct_e_r_2, const struct lc_kyber_768_x25519_ss *tk, const struct lc_kyber_768_x25519_sk *sk_e, const struct lc_kyber_768_x25519_sk *sk_i)
lc_kex_x25519_ake_initiator_ss - Responder's shared secret generation
struct lc_kyber_768_ct ct
int lc_kex_768_ake_initiator_ss(uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_ct *ct_e_r_1, const struct lc_kyber_768_ct *ct_e_r_2, const struct lc_kyber_768_ss *tk, const struct lc_kyber_768_sk *sk_e, const struct lc_kyber_768_sk *sk_i)
lc_kex_ake_initiator_ss - Responder's shared secret generation
int lc_kex_768_x448_ake_responder_ss(struct lc_kyber_768_x448_ct *ct_e_r_1, struct lc_kyber_768_x448_ct *ct_e_r_2, uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x448_pk *pk_e_i, const struct lc_kyber_768_x448_ct *ct_e_i, const struct lc_kyber_768_x448_sk *sk_r, const struct lc_kyber_768_x448_pk *pk_i)
lc_kex_x448_ake_responder_ss - Initiator's shared secret generation
struct lc_x448_ss ss_x448
int lc_kyber_768_x448_dec_kdf(uint8_t *ss, size_t ss_len, const struct lc_kyber_768_x448_ct *ct, const struct lc_kyber_768_x448_sk *sk)
lc_kyber_x448_dec_kdf - Key decapsulation with KDF applied to shared secret
struct lc_kyber_768_sk sk
int lc_kyber_768_x448_ies_enc(const struct lc_kyber_768_x448_pk *pk, struct lc_kyber_768_x448_ct *ct, const uint8_t *plaintext, uint8_t *ciphertext, size_t datalen, const uint8_t *aad, size_t aadlen, uint8_t *tag, size_t taglen, struct lc_aead_ctx *aead)
lc_kyber_x448_ies_enc - KyberIES encryption oneshot
struct lc_kyber_768_ss ss
static int lc_kyber_768_x448_ies_enc_final(struct lc_aead_ctx *aead, uint8_t *tag, size_t taglen)
lc_kyber_x448_ies_enc_final - KyberIES encryption stream operation finalization / integrity test
int lc_kyber_768_x448_ies_dec(const struct lc_kyber_768_x448_sk *sk, const struct lc_kyber_768_x448_ct *ct, const uint8_t *ciphertext, uint8_t *plaintext, size_t datalen, const uint8_t *aad, size_t aadlen, const uint8_t *tag, size_t taglen, struct lc_aead_ctx *aead)
lc_kyber_x448_ies_dec - KyberIES decryption oneshot
struct lc_kyber_768_pk pk
int lc_kex_768_x448_uake_responder_ss(struct lc_kyber_768_x448_ct *ct_e_r, uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x448_pk *pk_e_i, const struct lc_kyber_768_x448_ct *ct_e_i, const struct lc_kyber_768_x448_sk *sk_r)
lc_kex_x448_uake_responder_ss - Initiator's shared secret generation
int lc_kyber_768_x448_keypair(struct lc_kyber_768_x448_pk *pk, struct lc_kyber_768_x448_sk *sk, struct lc_rng_ctx *rng_ctx)
lc_kyber_x448_keypair - Generates public and private key for IND-CCA2-secure Kyber key encapsulation ...
int lc_kex_768_ake_initiator_init(struct lc_kyber_768_pk *pk_e_i, struct lc_kyber_768_ct *ct_e_i, struct lc_kyber_768_ss *tk, struct lc_kyber_768_sk *sk_e, const struct lc_kyber_768_pk *pk_r)
lc_kex_ake_initiator_init - Initialize authenticated key exchange
int lc_kyber_768_dec(struct lc_kyber_768_ss *ss, const struct lc_kyber_768_ct *ct, const struct lc_kyber_768_sk *sk)
lc_kyber_dec - Key decapsulation
int lc_kex_768_x25519_ake_initiator_init(struct lc_kyber_768_x25519_pk *pk_e_i, struct lc_kyber_768_x25519_ct *ct_e_i, struct lc_kyber_768_x25519_ss *tk, struct lc_kyber_768_x25519_sk *sk_e, const struct lc_kyber_768_x25519_pk *pk_r)
lc_kex_x25519_ake_initiator_init - Initialize authenticated key exchange
struct lc_kyber_768_ss ss
struct lc_x25519_ss ss_x25519
int lc_kyber_768_ies_dec_init(struct lc_aead_ctx *aead, const struct lc_kyber_768_sk *sk, const struct lc_kyber_768_ct *ct, const uint8_t *aad, size_t aadlen)
lc_kyber_ies_dec_init - KyberIES decryption stream operation initialization
int lc_kex_768_x25519_ake_responder_ss(struct lc_kyber_768_x25519_ct *ct_e_r_1, struct lc_kyber_768_x25519_ct *ct_e_r_2, uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x25519_pk *pk_e_i, const struct lc_kyber_768_x25519_ct *ct_e_i, const struct lc_kyber_768_x25519_sk *sk_r, const struct lc_kyber_768_x25519_pk *pk_i)
lc_kex_x25519_ake_responder_ss - Initiator's shared secret generation
int lc_kyber_768_enc(struct lc_kyber_768_ct *ct, struct lc_kyber_768_ss *ss, const struct lc_kyber_768_pk *pk)
lc_kyber_enc - Key encapsulation
int lc_kyber_768_x25519_dec_kdf(uint8_t *ss, size_t ss_len, const struct lc_kyber_768_x25519_ct *ct, const struct lc_kyber_768_x25519_sk *sk)
lc_kyber_x25519_dec_kdf - Key decapsulation with KDF applied to shared secret
int lc_kyber_768_x25519_ies_enc_init(struct lc_aead_ctx *aead, const struct lc_kyber_768_x25519_pk *pk, struct lc_kyber_768_x25519_ct *ct, const uint8_t *aad, size_t aadlen)
lc_kyber_x25519_ies_enc_init - KyberIES encryption stream operation initialization
static LC_PURE unsigned int lc_kyber_768_pk_size(void)
Return the size of the Kyber public key.
int lc_kex_768_x448_ake_initiator_ss(uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x448_ct *ct_e_r_1, const struct lc_kyber_768_x448_ct *ct_e_r_2, const struct lc_kyber_768_x448_ss *tk, const struct lc_kyber_768_x448_sk *sk_e, const struct lc_kyber_768_x448_sk *sk_i)
lc_kex_x448_ake_initiator_ss - Responder's shared secret generation
int lc_kex_768_uake_responder_ss(struct lc_kyber_768_ct *ct_e_r, uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_pk *pk_e_i, const struct lc_kyber_768_ct *ct_e_i, const struct lc_kyber_768_sk *sk_r)
lc_kex_uake_responder_ss - Initiator's shared secret generation
uint8_t pk[LC_KYBER_PUBLICKEYBYTES]
static int lc_kyber_768_x448_ies_dec_final(struct lc_aead_ctx *aead, const uint8_t *tag, size_t taglen)
lc_kyber _x448_ies_dec_final - KyberIES decryption stream operation finalization / integrity test
static LC_PURE unsigned int lc_kyber_768_sk_size(void)
Return the size of the Kyber secret key.
uint8_t ss[LC_KYBER_SSBYTES]
struct lc_x448_pk pk_x448
int lc_kex_768_x448_ake_initiator_init(struct lc_kyber_768_x448_pk *pk_e_i, struct lc_kyber_768_x448_ct *ct_e_i, struct lc_kyber_768_x448_ss *tk, struct lc_kyber_768_x448_sk *sk_e, const struct lc_kyber_768_x448_pk *pk_r)
lc_kex_x448_ake_initiator_init - Initialize authenticated key exchange
int lc_kyber_768_x448_ies_enc_init(struct lc_aead_ctx *aead, const struct lc_kyber_768_x448_pk *pk, struct lc_kyber_768_x448_ct *ct, const uint8_t *aad, size_t aadlen)
lc_kyber_x448_ies_enc_init - KyberIES encryption stream operation initialization
struct lc_x25519_sk sk_x25519
int lc_kex_768_x25519_uake_initiator_init(struct lc_kyber_768_x25519_pk *pk_e_i, struct lc_kyber_768_x25519_ct *ct_e_i, struct lc_kyber_768_x25519_ss *tk, struct lc_kyber_768_x25519_sk *sk_e, const struct lc_kyber_768_x25519_pk *pk_r)
lc_kex_x25519_uake_initiator_init - Initialize unilaterally authenticated key exchange
int lc_kyber_768_x448_ies_dec_init(struct lc_aead_ctx *aead, const struct lc_kyber_768_x448_sk *sk, const struct lc_kyber_768_x448_ct *ct, const uint8_t *aad, size_t aadlen)
lc_kyber_x448_ies_dec_init - KyberIES decryption stream operation initialization
int lc_kyber_768_ies_enc(const struct lc_kyber_768_pk *pk, struct lc_kyber_768_ct *ct, const uint8_t *plaintext, uint8_t *ciphertext, size_t datalen, const uint8_t *aad, size_t aadlen, uint8_t *tag, size_t taglen, struct lc_aead_ctx *aead)
lc_kyber_ies_enc - KyberIES encryption oneshot
static int lc_kyber_768_ies_dec_final(struct lc_aead_ctx *aead, const uint8_t *tag, size_t taglen)
lc_kyber_ies_dec_final - KyberIES decryption stream operation finalization / integrity test
struct lc_kyber_768_ct ct
int lc_kex_768_uake_initiator_init(struct lc_kyber_768_pk *pk_e_i, struct lc_kyber_768_ct *ct_e_i, struct lc_kyber_768_ss *tk, struct lc_kyber_768_sk *sk_e, const struct lc_kyber_768_pk *pk_r)
lc_kex_uake_initiator_init - Initialize unilaterally authenticated key exchange
int lc_kex_768_uake_initiator_ss(uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_ct *ct_e_r, const struct lc_kyber_768_ss *tk, const struct lc_kyber_768_sk *sk_e)
lc_kex_uake_initiator_ss - Responder's shared secret generation
uint8_t ct[LC_CRYPTO_CIPHERTEXTBYTES]
static int lc_kyber_768_x25519_ies_dec_update(struct lc_aead_ctx *aead, const uint8_t *ciphertext, uint8_t *plaintext, size_t datalen)
lc_kyber_x25519_ies_dec_update - KyberIES decryption stream operation add more data
int lc_kex_768_x25519_uake_initiator_ss(uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x25519_ct *ct_e_r, const struct lc_kyber_768_x25519_ss *tk, const struct lc_kyber_768_x25519_sk *sk_e)
lc_kex_x25519_uake_initiator_ss - Responder's shared secret generation
int lc_kex_768_x25519_uake_responder_ss(struct lc_kyber_768_x25519_ct *ct_e_r, uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x25519_pk *pk_e_i, const struct lc_kyber_768_x25519_ct *ct_e_i, const struct lc_kyber_768_x25519_sk *sk_r)
lc_kex_x25519_uake_responder_ss - Initiator's shared secret generation
int lc_kex_768_ake_responder_ss(struct lc_kyber_768_ct *ct_e_r_1, struct lc_kyber_768_ct *ct_e_r_2, uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_pk *pk_e_i, const struct lc_kyber_768_ct *ct_e_i, const struct lc_kyber_768_sk *sk_r, const struct lc_kyber_768_pk *pk_i)
lc_kex_ake_responder_ss - Initiator's shared secret generation
int lc_kex_768_x448_uake_initiator_ss(uint8_t *shared_secret, size_t shared_secret_len, const uint8_t *kdf_nonce, size_t kdf_nonce_len, const struct lc_kyber_768_x448_ct *ct_e_r, const struct lc_kyber_768_x448_ss *tk, const struct lc_kyber_768_x448_sk *sk_e)
lc_kex_x448_uake_initiator_ss - Responder's shared secret generation
int lc_kyber_768_x25519_enc_kdf(struct lc_kyber_768_x25519_ct *ct, uint8_t *ss, size_t ss_len, const struct lc_kyber_768_x25519_pk *pk)
lc_kyber_x25519_enc_kdf - Key encapsulation with KDF applied to shared secret
int lc_kex_768_x448_uake_initiator_init(struct lc_kyber_768_x448_pk *pk_e_i, struct lc_kyber_768_x448_ct *ct_e_i, struct lc_kyber_768_x448_ss *tk, struct lc_kyber_768_x448_sk *sk_e, const struct lc_kyber_768_x448_pk *pk_r)
lc_kex_x448_uake_initiator_init - Initialize unilaterally authenticated key exchange
struct lc_x25519_pk pk_x25519
static int lc_kyber_768_x25519_ies_enc_update(struct lc_aead_ctx *aead, const uint8_t *plaintext, uint8_t *ciphertext, size_t datalen)
lc_kyber_x25519_ies_enc_update - KyberIES encryption stream operation add more data
struct lc_x25519_pk pk_x25519
int lc_kyber_768_keypair_from_seed(struct lc_kyber_768_pk *pk, struct lc_kyber_768_sk *sk, const uint8_t *seed, size_t seedlen)
lc_kyber__keypair_from_seed - Generates Kyber public and private key from a given seed.