41#ifndef QSC_DILITHIUM_H
42#define QSC_DILITHIUM_H
46QSC_CPLUSPLUS_ENABLED_START
87#if defined(QSC_DILITHIUM_S1P2544)
93# define QSC_DILITHIUM_PRIVATEKEY_SIZE 2560
99# define QSC_DILITHIUM_PUBLICKEY_SIZE 1312
105# define QSC_DILITHIUM_SIGNATURE_SIZE 2420
107#elif defined(QSC_DILITHIUM_S3P4016)
113# define QSC_DILITHIUM_PRIVATEKEY_SIZE 4032
119# define QSC_DILITHIUM_PUBLICKEY_SIZE 1952
125# define QSC_DILITHIUM_SIGNATURE_SIZE 3309
127#elif defined(QSC_DILITHIUM_S5P4880)
133# define QSC_DILITHIUM_PRIVATEKEY_SIZE 4896
139# define QSC_DILITHIUM_PUBLICKEY_SIZE 2592
145# define QSC_DILITHIUM_SIGNATURE_SIZE 4627
148# error "The Dilithium parameter set is invalid!"
155#define QSC_DILITHIUM_ALGNAME "DILITHIUM"
186QSC_EXPORT_API void 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));
202QSC_EXPORT_API void qsc_dilithium_sign_ex(uint8_t* signedmsg,
size_t* smsglen,
const uint8_t* message,
size_t msglen,
const uint8_t* context,
size_t contextlen,
const uint8_t* privatekey,
bool (*rng_generate)(uint8_t*,
size_t));
230QSC_EXPORT_API bool qsc_dilithium_verify_ex(uint8_t* message,
size_t* msglen,
const uint8_t* signedmsg,
size_t smsglen,
const uint8_t* context,
size_t contextlen,
const uint8_t* publickey);
232QSC_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_dilithium_verify_ex(uint8_t *message, size_t *msglen, const uint8_t *signedmsg, size_t smsglen, const uint8_t *context, size_t contextlen, const uint8_t *publickey)
Verifies a signature-message pair with the public key.
Definition dilithium.c:70
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:52
QSC_EXPORT_API void qsc_dilithium_sign_ex(uint8_t *signedmsg, size_t *smsglen, const uint8_t *message, size_t msglen, const uint8_t *context, size_t contextlen, 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:37
QSC_EXPORT_API void 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:22
QSC_EXPORT_API void 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