45#if defined(QSC_SYSTEM_HAS_AVX2)
46 #include "kyberbase_avx2.h"
48 #include "kyberbase.h"
51QSC_CPLUSPLUS_ENABLED_START
86#define QSC_KYBER_CIPHERTEXT_SIZE (QSC_KYBER_INDCPA_BYTES)
92#define QSC_KYBER_PRIVATEKEY_SIZE (QSC_KYBER_INDCPA_SECRETKEY_BYTES + QSC_KYBER_INDCPA_PUBLICKEY_BYTES + (2 * QSC_KYBER_SYMBYTES))
98#define QSC_KYBER_PUBLICKEY_SIZE (QSC_KYBER_INDCPA_PUBLICKEY_BYTES)
104#define QSC_KYBER_SEED_SIZE 32ULL
110#define QSC_KYBER_SHAREDSECRET_SIZE 32ULL
116#define QSC_KYBER_ALGNAME "KYBER"
177QSC_CPLUSPLUS_ENABLED_END
Contains common definitions for the Quantum Secure Cryptographic (QSC) library.
#define QSC_EXPORT_API
API export macro for Microsoft compilers when importing from a DLL.
Definition common.h:520
QSC_EXPORT_API bool qsc_kyber_decapsulate(uint8_t *secret, const uint8_t *ciphertext, const uint8_t *privatekey)
Decapsulates the shared secret for a given ciphertext using a private key.
Definition kyber.c:5
QSC_EXPORT_API void qsc_kyber_encapsulate(uint8_t *secret, uint8_t *ciphertext, const uint8_t *publickey, bool(*rng_generate)(uint8_t *, size_t))
Encapsulates a shared secret key using a public key.
Definition kyber.c:45
QSC_EXPORT_API void qsc_kyber_generate_keypair(uint8_t *publickey, uint8_t *privatekey, bool(*rng_generate)(uint8_t *, size_t))
Generates a Kyber public/private key pair.
Definition kyber.c:77
QSC_EXPORT_API void qsc_kyber_encrypt(uint8_t *secret, uint8_t *ciphertext, const uint8_t *publickey, const uint8_t seed[QSC_KYBER_SEED_SIZE])
Encrypts to encapsulate a shared secret key using a public key.
Definition kyber.c:62
#define QSC_KYBER_SEED_SIZE
The byte size of the seed array.
Definition kyber.h:104
QSC_EXPORT_API bool qsc_kyber_decrypt(uint8_t *secret, const uint8_t *ciphertext, const uint8_t *privatekey)
Decrypts the shared secret for a given ciphertext using a private key.
Definition kyber.c:27