52#ifndef QSC_DILITHIUM_H
53#define QSC_DILITHIUM_H
57QSC_CPLUSPLUS_ENABLED_START
103#define QSC_DILITHIUM_GENERATE_SEED_SIZE 32
105#if defined(QSC_DILITHIUM_S1P44)
111# define QSC_DILITHIUM_PRIVATEKEY_SIZE 2560
117# define QSC_DILITHIUM_PUBLICKEY_SIZE 1312
123# define QSC_DILITHIUM_SIGNATURE_SIZE 2420
125#elif defined(QSC_DILITHIUM_S3P65)
131# define QSC_DILITHIUM_PRIVATEKEY_SIZE 4032
137# define QSC_DILITHIUM_PUBLICKEY_SIZE 1952
143# define QSC_DILITHIUM_SIGNATURE_SIZE 3309
145#elif defined(QSC_DILITHIUM_S5P87)
151# define QSC_DILITHIUM_PRIVATEKEY_SIZE 4896
157# define QSC_DILITHIUM_PUBLICKEY_SIZE 2592
163# define QSC_DILITHIUM_SIGNATURE_SIZE 4627
166# error "The Dilithium parameter set is invalid!"
173#define QSC_DILITHIUM_ALGNAME "DILITHIUM"
218QSC_EXPORT_API bool qsc_dilithium_sign(uint8_t* signedmsg,
size_t* smsglen,
const uint8_t* message,
size_t msglen,
const uint8_t* privatekey,
bool (*rng_generate)(uint8_t*,
size_t));
235QSC_EXPORT_API bool qsc_dilithium_sign_ex(uint8_t* signedmsg,
size_t* smsglen,
const uint8_t* message,
size_t msglen,
const uint8_t* context,
size_t ctxlen,
const uint8_t* privatekey,
bool (*rng_generate)(uint8_t*,
size_t));
261QSC_EXPORT_API bool qsc_dilithium_verify_ex(uint8_t* message,
size_t* msglen,
const uint8_t* context,
size_t ctxlen,
const uint8_t* signedmsg,
size_t smsglen,
const uint8_t* publickey);
263QSC_CPLUSPLUS_ENABLED_END
QSC_EXPORT_API bool qsc_dilithium_generate_keypair(uint8_t *publickey, uint8_t *privatekey, bool(*rng_generate)(uint8_t *, size_t))
Generates a Dilithium public/private key-pair.
Definition dilithium.c:9
QSC_EXPORT_API bool qsc_dilithium_sign(uint8_t *signedmsg, size_t *smsglen, const uint8_t *message, size_t msglen, const uint8_t *privatekey, bool(*rng_generate)(uint8_t *, size_t))
Takes the message as input and returns an array containing the signature followed by the message.
Definition dilithium.c:47
QSC_EXPORT_API bool qsc_dilithium_verify(uint8_t *message, size_t *msglen, const uint8_t *signedmsg, size_t smsglen, const uint8_t *publickey)
Verifies a signature-message pair with the public key.
Definition dilithium.c:99
QSC_EXPORT_API bool qsc_dilithium_verify_ex(uint8_t *message, size_t *msglen, const uint8_t *context, size_t ctxlen, const uint8_t *signedmsg, size_t smsglen, const uint8_t *publickey)
Verifies a signature-message pair and context parameter with the public key.
Definition dilithium.c:122
QSC_EXPORT_API bool qsc_dilithium_sign_ex(uint8_t *signedmsg, size_t *smsglen, const uint8_t *message, size_t msglen, const uint8_t *context, size_t ctxlen, const uint8_t *privatekey, bool(*rng_generate)(uint8_t *, size_t))
Takes the message as input with the additional context parameter, and returns an array containing the...
Definition dilithium.c:73
QSC_EXPORT_API void qsc_dilithium_seeded_generate_keypair(uint8_t *publickey, uint8_t *privatekey, const uint8_t *seed)
Generates a Dilithium public/private key-pair using a random input seed.
Definition dilithium.c:31
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