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 128U
120# define QSC_MCELIECE_PRIVATEKEY_SIZE 6492U
126# define QSC_MCELIECE_PUBLICKEY_SIZE 261120U
132# define QSC_MCELIECE_ALGNAME "MCELIECE-P3488T64"
134#elif defined(QSC_MCELIECE_S3N4608T96)
140# define QSC_MCELIECE_CIPHERTEXT_SIZE 188U
146# define QSC_MCELIECE_PRIVATEKEY_SIZE 13608U
152# define QSC_MCELIECE_PUBLICKEY_SIZE 524160U
158# define QSC_MCELIECE_ALGNAME "MCELIECE-P4608T96"
160#elif defined(QSC_MCELIECE_S5N6688T128)
166# define QSC_MCELIECE_CIPHERTEXT_SIZE 240U
172# define QSC_MCELIECE_PRIVATEKEY_SIZE 13932U
178# define QSC_MCELIECE_PUBLICKEY_SIZE 1044992U
184# define QSC_MCELIECE_ALGNAME "MCELIECE-P6688T128"
186#elif defined(QSC_MCELIECE_S6N6960T119)
192# define QSC_MCELIECE_CIPHERTEXT_SIZE 226U
198# define QSC_MCELIECE_PRIVATEKEY_SIZE 13948U
204# define QSC_MCELIECE_PUBLICKEY_SIZE 1047319U
210# define QSC_MCELIECE_ALGNAME "MCELIECE-P6960T119"
212#elif defined(QSC_MCELIECE_S7N8192T128)
218# define QSC_MCELIECE_CIPHERTEXT_SIZE 240U
224# define QSC_MCELIECE_PRIVATEKEY_SIZE 14120U
230# define QSC_MCELIECE_PUBLICKEY_SIZE 1357824U
236# define QSC_MCELIECE_ALGNAME "MCELIECE-P8192T128"
239# error "The McEliece parameter set is invalid!"
246#define QSC_MCELIECE_SEED_SIZE 32ULL
252#define QSC_MCELIECE_SHAREDSECRET_SIZE 32ULL
285QSC_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:645