ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_dilithium.h
Go to the documentation of this file.
1 
19 #ifndef IQR_DILITHIUM_H
20 #define IQR_DILITHIUM_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #include "iqr_api.h"
27 #include "iqr_retval.h"
28 #include "iqr_rng.h"
29 
30 // ---------------------------------------------------------------------------------------------------------------------------------
31 // Opaque data types.
32 // ---------------------------------------------------------------------------------------------------------------------------------
33 
35 typedef struct iqr_DilithiumParams_struct iqr_DilithiumParams;
36 
38 typedef struct iqr_DilithiumPublicKey_struct iqr_DilithiumPublicKey;
39 
41 typedef struct iqr_DilithiumPrivateKey_struct iqr_DilithiumPrivateKey;
42 
44 typedef struct iqr_DilithiumVariant_struct iqr_DilithiumVariant;
45 
46 // ---------------------------------------------------------------------------------------------------------------------------------
47 // Dilithium variants.
48 // ---------------------------------------------------------------------------------------------------------------------------------
49 
51 IQR_EXTERN
53 
55 IQR_EXTERN
57 
58 // ---------------------------------------------------------------------------------------------------------------------------------
59 // Dilithium parameter management functions.
60 // ---------------------------------------------------------------------------------------------------------------------------------
61 
74 IQR_API
76 
90 IQR_API_UNENFORCED_RETURN
92 
93 // ---------------------------------------------------------------------------------------------------------------------------------
94 // Dilithium key management functions.
95 // ---------------------------------------------------------------------------------------------------------------------------------
96 
113 IQR_API
115  iqr_DilithiumPrivateKey **private_key);
116 
137 IQR_API
138 iqr_retval iqr_DilithiumImportPublicKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size,
139  iqr_DilithiumPublicKey **public_key);
140 
162 IQR_API
163 iqr_retval iqr_DilithiumImportPrivateKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size,
164  iqr_DilithiumPrivateKey **private_key);
165 
177 IQR_API
178 iqr_retval iqr_DilithiumExportPublicKey(const iqr_DilithiumPublicKey *public_key, uint8_t *buf, size_t buf_size);
179 
193 IQR_API
194 iqr_retval iqr_DilithiumExportPrivateKey(const iqr_DilithiumPrivateKey *private_key, uint8_t *buf, size_t buf_size);
195 
205 IQR_API_UNENFORCED_RETURN
207 
221 IQR_API_UNENFORCED_RETURN
223 
224 // ---------------------------------------------------------------------------------------------------------------------------------
225 // Dilithium size functions.
226 // ---------------------------------------------------------------------------------------------------------------------------------
227 
236 IQR_API
237 iqr_retval iqr_DilithiumGetPublicKeySize(const iqr_DilithiumParams *params, size_t *public_key_size);
238 
247 IQR_API
248 iqr_retval iqr_DilithiumGetPrivateKeySize(const iqr_DilithiumParams *params, size_t *private_key_size);
249 
258 IQR_API
259 iqr_retval iqr_DilithiumGetSignatureSize(const iqr_DilithiumParams *params, size_t *sig_size);
260 
261 // ---------------------------------------------------------------------------------------------------------------------------------
262 // Dilithium signature functionality.
263 // ---------------------------------------------------------------------------------------------------------------------------------
264 
287 IQR_API
288 iqr_retval iqr_DilithiumSign(const iqr_DilithiumPrivateKey *private_key, const uint8_t *message, size_t message_size, uint8_t *sig,
289  size_t sig_size);
290 
313 IQR_API
314 iqr_retval iqr_DilithiumVerify(const iqr_DilithiumPublicKey *public_key, const uint8_t *message, size_t message_size,
315  const uint8_t *sig, size_t sig_size);
316 
317 #ifdef __cplusplus
318 }
319 #endif
320 
321 #endif /* IQR_DILITHIUM_H */
struct iqr_DilithiumVariant_struct iqr_DilithiumVariant
Definition: iqr_dilithium.h:44
IQR_API_UNENFORCED_RETURN iqr_retval iqr_DilithiumDestroyPublicKey(iqr_DilithiumPublicKey **public_key)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_DilithiumDestroyParams(iqr_DilithiumParams **params)
IQR_API iqr_retval iqr_DilithiumImportPrivateKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size, iqr_DilithiumPrivateKey **private_key)
IQR_EXTERN const iqr_DilithiumVariant IQR_DILITHIUM_160
Definition: iqr_dilithium.h:56
ISARA Radiate Security Solution Suite's Random Number Generator object APIs.
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)
ISARA Radiate Security Solution Suite's return values.
IQR_API iqr_retval iqr_DilithiumCreateKeyPair(const iqr_DilithiumParams *params, const iqr_RNG *rng, iqr_DilithiumPublicKey **public_key, iqr_DilithiumPrivateKey **private_key)
struct iqr_DilithiumPrivateKey_struct iqr_DilithiumPrivateKey
Definition: iqr_dilithium.h:41
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:51
IQR_API iqr_retval iqr_DilithiumExportPublicKey(const iqr_DilithiumPublicKey *public_key, uint8_t *buf, size_t buf_size)
IQR_API iqr_retval iqr_DilithiumGetSignatureSize(const iqr_DilithiumParams *params, size_t *sig_size)
ISARA Radiate Security Solution Suite's API declarations.
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
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)
IQR_API iqr_retval iqr_DilithiumGetPublicKeySize(const iqr_DilithiumParams *params, size_t *public_key_size)
IQR_API iqr_retval iqr_DilithiumImportPublicKey(const iqr_DilithiumParams *params, const uint8_t *buf, size_t buf_size, iqr_DilithiumPublicKey **public_key)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_DilithiumDestroyPrivateKey(iqr_DilithiumPrivateKey **private_key)
IQR_EXTERN const iqr_DilithiumVariant IQR_DILITHIUM_128
Definition: iqr_dilithium.h:52
IQR_API iqr_retval iqr_DilithiumCreateParams(const iqr_Context *ctx, const iqr_DilithiumVariant *variant, iqr_DilithiumParams **params)
IQR_API iqr_retval iqr_DilithiumExportPrivateKey(const iqr_DilithiumPrivateKey *private_key, uint8_t *buf, size_t buf_size)
struct iqr_DilithiumParams_struct iqr_DilithiumParams
Definition: iqr_dilithium.h:35
struct iqr_DilithiumPublicKey_struct iqr_DilithiumPublicKey
Definition: iqr_dilithium.h:38
iqr_retval
Definition: iqr_retval.h:29