ISARA Radiate™ Quantum-safe Library Version 3.1

Quantum-safe cryptographic primitives and algorithms.

iqr_dilithium.h
Go to the documentation of this file.
1 
20 #ifndef IQR_DILITHIUM_H
21 #define IQR_DILITHIUM_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include "iqr_api.h"
28 #include "iqr_retval.h"
29 #include "iqr_rng.h"
30 
31 // ---------------------------------------------------------------------------------------------------------------------------------
32 // Opaque data types.
33 // ---------------------------------------------------------------------------------------------------------------------------------
34 
36 typedef struct iqr_DilithiumParams_struct iqr_DilithiumParams;
37 
39 typedef struct iqr_DilithiumPublicKey_struct iqr_DilithiumPublicKey;
40 
42 typedef struct iqr_DilithiumPrivateKey_struct iqr_DilithiumPrivateKey;
43 
45 typedef struct iqr_DilithiumVariant_struct iqr_DilithiumVariant;
46 
47 // ---------------------------------------------------------------------------------------------------------------------------------
48 // Dilithium variants.
49 // ---------------------------------------------------------------------------------------------------------------------------------
50 
51 IQR_EXTERN
53 
54 IQR_EXTERN
56 
57 IQR_EXTERN
59 
60 // ---------------------------------------------------------------------------------------------------------------------------------
61 // Dilithium parameter management functions.
62 // ---------------------------------------------------------------------------------------------------------------------------------
63 
76 IQR_API
78 
92 IQR_API_UNENFORCED_RETURN
94 
95 // ---------------------------------------------------------------------------------------------------------------------------------
96 // Dilithium key management functions.
97 // ---------------------------------------------------------------------------------------------------------------------------------
98 
117 IQR_API
119  iqr_DilithiumPrivateKey **private_key);
120 
142 IQR_API
143 iqr_retval iqr_DilithiumImportPublicKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size,
144  iqr_DilithiumPublicKey **public_key);
145 
168 IQR_API
169 iqr_retval iqr_DilithiumImportPrivateKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size,
170  iqr_DilithiumPrivateKey **private_key);
171 
183 IQR_API
184 iqr_retval iqr_DilithiumExportPublicKey(const iqr_DilithiumPublicKey *public_key, uint8_t *buf, size_t buf_size);
185 
199 IQR_API
200 iqr_retval iqr_DilithiumExportPrivateKey(const iqr_DilithiumPrivateKey *private_key, uint8_t *buf, size_t buf_size);
201 
212 IQR_API_UNENFORCED_RETURN
214 
228 IQR_API_UNENFORCED_RETURN
230 
231 // ---------------------------------------------------------------------------------------------------------------------------------
232 // Dilithium size functions.
233 // ---------------------------------------------------------------------------------------------------------------------------------
234 
243 IQR_API
244 iqr_retval iqr_DilithiumGetPublicKeySize(const iqr_DilithiumParams *params, size_t *public_key_size);
245 
254 IQR_API
255 iqr_retval iqr_DilithiumGetPrivateKeySize(const iqr_DilithiumParams *params, size_t *private_key_size);
256 
265 IQR_API
266 iqr_retval iqr_DilithiumGetSignatureSize(const iqr_DilithiumParams *params, size_t *sig_size);
267 
268 // ---------------------------------------------------------------------------------------------------------------------------------
269 // Dilithium signature functionality.
270 // ---------------------------------------------------------------------------------------------------------------------------------
271 
291 IQR_API
292 iqr_retval iqr_DilithiumSign(const iqr_DilithiumPrivateKey *private_key, const uint8_t *message, size_t message_size, uint8_t *sig,
293  size_t sig_size);
294 
314 IQR_API
315 iqr_retval iqr_DilithiumVerify(const iqr_DilithiumPublicKey *public_key, const uint8_t *message, size_t message_size,
316  const uint8_t *sig, size_t sig_size);
317 
318 #ifdef __cplusplus
319 }
320 #endif
321 
322 #endif /* IQR_DILITHIUM_H */
IQR_API iqr_retval iqr_DilithiumSign(const iqr_DilithiumPrivateKey *private_key, const uint8_t *message, size_t message_size, uint8_t *sig, size_t sig_size)
ISARA Radiate Quantum-Safe Library's Random Number Generator object APIs.
IQR_API iqr_retval iqr_DilithiumExportPublicKey(const iqr_DilithiumPublicKey *public_key, uint8_t *buf, size_t buf_size)
IQR_API iqr_retval iqr_DilithiumVerify(const iqr_DilithiumPublicKey *public_key, const uint8_t *message, size_t message_size, const uint8_t *sig, size_t sig_size)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_DilithiumDestroyPrivateKey(iqr_DilithiumPrivateKey **private_key)
IQR_API iqr_retval iqr_DilithiumGetPublicKeySize(const iqr_DilithiumParams *params, size_t *public_key_size)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_DilithiumDestroyPublicKey(iqr_DilithiumPublicKey **public_key)
IQR_API iqr_retval iqr_DilithiumImportPublicKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size, iqr_DilithiumPublicKey **public_key)
IQR_API iqr_retval iqr_DilithiumImportPrivateKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size, iqr_DilithiumPrivateKey **private_key)
const IQR_EXTERN iqr_DilithiumVariant IQR_DILITHIUM_5
Definition: iqr_dilithium.h:58
IQR_API_UNENFORCED_RETURN iqr_retval iqr_DilithiumDestroyParams(iqr_DilithiumParams **params)
IQR_API iqr_retval iqr_DilithiumGetPrivateKeySize(const iqr_DilithiumParams *params, size_t *private_key_size)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:41
struct iqr_DilithiumPrivateKey_struct iqr_DilithiumPrivateKey
Definition: iqr_dilithium.h:42
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:35
ISARA Radiate Quantum-Safe Library's return values.
iqr_retval
Definition: iqr_retval.h:28
ISARA Radiate Quantum-Safe Library's API declarations.
struct iqr_DilithiumVariant_struct iqr_DilithiumVariant
Definition: iqr_dilithium.h:45
IQR_API iqr_retval iqr_DilithiumGetSignatureSize(const iqr_DilithiumParams *params, size_t *sig_size)
IQR_API iqr_retval iqr_DilithiumCreateKeyPair(const iqr_DilithiumParams *params, const iqr_RNG *rng, iqr_DilithiumPublicKey **public_key, iqr_DilithiumPrivateKey **private_key)
struct iqr_DilithiumParams_struct iqr_DilithiumParams
Definition: iqr_dilithium.h:36
const IQR_EXTERN iqr_DilithiumVariant IQR_DILITHIUM_2
Definition: iqr_dilithium.h:52
IQR_API iqr_retval iqr_DilithiumExportPrivateKey(const iqr_DilithiumPrivateKey *private_key, uint8_t *buf, size_t buf_size)
const IQR_EXTERN iqr_DilithiumVariant IQR_DILITHIUM_3
Definition: iqr_dilithium.h:55
struct iqr_DilithiumPublicKey_struct iqr_DilithiumPublicKey
Definition: iqr_dilithium.h:39
IQR_API iqr_retval iqr_DilithiumCreateParams(const iqr_Context *ctx, const iqr_DilithiumVariant *variant, iqr_DilithiumParams **params)