46QSC_CPLUSPLUS_ENABLED_START
88#if defined(QSC_FALCON_S3SHAKE256F512)
89 #define QSC_FALCON_PRIVATEKEY_SIZE 1281ULL
90#elif defined(QSC_FALCON_S5SHAKE256F1024)
91 #define QSC_FALCON_PRIVATEKEY_SIZE 2305ULL
93 #error "The Falcon parameter set is invalid!"
100#if defined(QSC_FALCON_S3SHAKE256F512)
101 #define QSC_FALCON_PUBLICKEY_SIZE 897ULL
102#elif defined(QSC_FALCON_S5SHAKE256F1024)
103 #define QSC_FALCON_PUBLICKEY_SIZE 1793ULL
105 #error "The Falcon parameter set is invalid!"
112#if defined(QSC_FALCON_S3SHAKE256F512)
113 #define QSC_FALCON_SIGNATURE_SIZE 658ULL
114#elif defined(QSC_FALCON_S5SHAKE256F1024)
115 #define QSC_FALCON_SIGNATURE_SIZE 1276ULL
117 #error "The Falcon parameter set is invalid!"
124#define QSC_FALCON_ALGNAME "FALCON"
149QSC_EXPORT_API void qsc_falcon_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));
164QSC_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 void qsc_falcon_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))
Signs a message and returns an array containing the signature followed by the message.
Definition falcon.c:26
QSC_EXPORT_API bool qsc_falcon_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 falcon.c:41
QSC_EXPORT_API void qsc_falcon_generate_keypair(uint8_t *publickey, uint8_t *privatekey, bool(*rng_generate)(uint8_t *, size_t))
Generates a Falcon public/private key-pair.
Definition falcon.c:13