57QSC_CPLUSPLUS_ENABLED_START
105#define QSC_MCELIECE_KEYGEN_STACK_BYTES (4U * 1024U * 1024U)
108#if defined(QSC_MCELIECE_S1N3488T64)
114# define QSC_MCELIECE_CIPHERTEXT_SIZE 128
120# define QSC_MCELIECE_PRIVATEKEY_SIZE 6492
126# define QSC_MCELIECE_PUBLICKEY_SIZE 261120
128#elif defined(QSC_MCELIECE_S3N4608T96)
134# define QSC_MCELIECE_CIPHERTEXT_SIZE 188
140# define QSC_MCELIECE_PRIVATEKEY_SIZE 13608
146# define QSC_MCELIECE_PUBLICKEY_SIZE 524160
148#elif defined(QSC_MCELIECE_S5N6688T128)
154# define QSC_MCELIECE_CIPHERTEXT_SIZE 240
160# define QSC_MCELIECE_PRIVATEKEY_SIZE 13932
166# define QSC_MCELIECE_PUBLICKEY_SIZE 1044992
168#elif defined(QSC_MCELIECE_S6N6960T119)
174# define QSC_MCELIECE_CIPHERTEXT_SIZE 226
180# define QSC_MCELIECE_PRIVATEKEY_SIZE 13948
186# define QSC_MCELIECE_PUBLICKEY_SIZE 1047319
188#elif defined(QSC_MCELIECE_S7N8192T128)
194# define QSC_MCELIECE_CIPHERTEXT_SIZE 240
200# define QSC_MCELIECE_PRIVATEKEY_SIZE 14120
206# define QSC_MCELIECE_PUBLICKEY_SIZE 1357824
209# error "The McEliece parameter set is invalid!"
216#define QSC_MCELIECE_SEED_SIZE 32ULL
222#define QSC_MCELIECE_SHAREDSECRET_SIZE 32ULL
228#define QSC_MCELIECE_ALGNAME "MCELIECE"
261QSC_CPLUSPLUS_ENABLED_END
QSC_EXPORT_API bool qsc_mceliece_decapsulate(uint8_t *secret, const uint8_t *ciphertext, const uint8_t *privatekey)
Decapsulates the shared secret for a given ciphertext using a private key.
QSC_EXPORT_API bool qsc_mceliece_generate_keypair(uint8_t *publickey, uint8_t *privatekey, bool(*rng_generate)(uint8_t *, size_t))
Generates a McEliece public/private key pair.
QSC_EXPORT_API bool qsc_mceliece_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.
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 qsccommon.h:605