ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_rainbow.h
Go to the documentation of this file.
1 
35 #ifndef IQR_RAINBOW_H
36 #define IQR_RAINBOW_H
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 #include "iqr_api.h"
43 #include "iqr_retval.h"
44 #include "iqr_rng.h"
45 
46 // ---------------------------------------------------------------------------------------------------------------------------------
47 // Opaque data types.
48 // ---------------------------------------------------------------------------------------------------------------------------------
49 
51 typedef struct iqr_RainbowParams_struct iqr_RainbowParams;
52 
54 typedef struct iqr_RainbowPublicKey_struct iqr_RainbowPublicKey;
55 
57 typedef struct iqr_RainbowPrivateKey_struct iqr_RainbowPrivateKey;
58 
60 typedef struct iqr_RainbowVariant_struct iqr_RainbowVariant;
61 
62 // ---------------------------------------------------------------------------------------------------------------------------------
63 // Rainbow variants.
64 // ---------------------------------------------------------------------------------------------------------------------------------
65 
69 IQR_EXTERN
71 
75 IQR_EXTERN
77 
81 IQR_EXTERN
83 
87 IQR_EXTERN
89 
93 IQR_EXTERN
95 
99 IQR_EXTERN
102 // ---------------------------------------------------------------------------------------------------------------------------------
103 // Domain parameter functions.
104 // ---------------------------------------------------------------------------------------------------------------------------------
105 
123 IQR_API
125 
139 IQR_API_UNENFORCED_RETURN
141 
142 // ---------------------------------------------------------------------------------------------------------------------------------
143 // Key management functions.
144 // ---------------------------------------------------------------------------------------------------------------------------------
145 
169 IQR_API
171  iqr_RainbowPrivateKey **private_key);
172 
190 IQR_API
191 iqr_retval iqr_RainbowImportPrivateKey(const iqr_RainbowParams *params, const uint8_t *buf, size_t buf_size,
192  iqr_RainbowPrivateKey **private_key);
193 
207 IQR_API
208 iqr_retval iqr_RainbowExportPrivateKey(const iqr_RainbowPrivateKey *private_key, uint8_t *buf, size_t buf_size);
209 
226 IQR_API
227 iqr_retval iqr_RainbowImportPublicKey(const iqr_RainbowParams *params, const uint8_t *buf, size_t buf_size,
228  iqr_RainbowPublicKey **public_key);
229 
241 IQR_API
242 iqr_retval iqr_RainbowExportPublicKey(const iqr_RainbowPublicKey *public_key, uint8_t *buf, size_t buf_size);
243 
253 IQR_API_UNENFORCED_RETURN
255 
268 IQR_API_UNENFORCED_RETURN
270 
279 IQR_API
280 iqr_retval iqr_RainbowGetPrivateKeySize(const iqr_RainbowParams *params, size_t *private_key_size);
281 
290 IQR_API
291 iqr_retval iqr_RainbowGetPublicKeySize(const iqr_RainbowParams *params, size_t *public_key_size);
292 
293 // ---------------------------------------------------------------------------------------------------------------------------------
294 // Signature functionality.
295 // ---------------------------------------------------------------------------------------------------------------------------------
296 
306 IQR_API
307 iqr_retval iqr_RainbowGetSignatureSize(const iqr_RainbowParams *params, size_t *sig_size);
308 
333 IQR_API
334 iqr_retval iqr_RainbowSign(const iqr_RainbowPrivateKey *private_key, const iqr_RNG *rng, const uint8_t *message,
335  size_t message_size, uint8_t *sig, size_t sig_size);
336 
356 IQR_API
357 iqr_retval iqr_RainbowVerify(const iqr_RainbowPublicKey *public_key, const uint8_t *message, size_t message_size,
358  const uint8_t *sig, size_t sig_size);
359 
360 #ifdef __cplusplus
361 }
362 #endif
363 
364 #endif /* IQR_RAINBOW_H */
IQR_API iqr_retval iqr_RainbowVerify(const iqr_RainbowPublicKey *public_key, const uint8_t *message, size_t message_size, const uint8_t *sig, size_t sig_size)
IQR_API iqr_retval iqr_RainbowExportPrivateKey(const iqr_RainbowPrivateKey *private_key, uint8_t *buf, size_t buf_size)
struct iqr_RainbowVariant_struct iqr_RainbowVariant
Definition: iqr_rainbow.h:61
IQR_API_UNENFORCED_RETURN iqr_retval iqr_RainbowDestroyParams(iqr_RainbowParams **params)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_RainbowDestroyPrivateKey(iqr_RainbowPrivateKey **private_key)
IQR_API iqr_retval iqr_RainbowExportPublicKey(const iqr_RainbowPublicKey *public_key, uint8_t *buf, size_t buf_size)
struct iqr_RainbowParams_struct iqr_RainbowParams
Definition: iqr_rainbow.h:52
ISARA Radiate Security Solution Suite's Random Number Generator object APIs.
IQR_API iqr_retval iqr_RainbowGetSignatureSize(const iqr_RainbowParams *params, size_t *sig_size)
IQR_EXTERN const iqr_RainbowVariant IQR_RAINBOW_GF256_92_48_48
Definition: iqr_rainbow.h:101
ISARA Radiate Security Solution Suite's return values.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_RainbowDestroyPublicKey(iqr_RainbowPublicKey **public_key)
IQR_EXTERN const iqr_RainbowVariant IQR_RAINBOW_GF31_64_32_48
Definition: iqr_rainbow.h:83
struct iqr_RainbowPublicKey_struct iqr_RainbowPublicKey
Definition: iqr_rainbow.h:55
IQR_API iqr_retval iqr_RainbowCreateKeyPair(const iqr_RainbowParams *params, const iqr_RNG *rng, iqr_RainbowPublicKey **public_key, iqr_RainbowPrivateKey **private_key)
IQR_EXTERN const iqr_RainbowVariant IQR_RAINBOW_GF16_76_64_64
Definition: iqr_rainbow.h:77
IQR_EXTERN const iqr_RainbowVariant IQR_RAINBOW_GF256_68_36_36
Definition: iqr_rainbow.h:95
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
struct iqr_RainbowPrivateKey_struct iqr_RainbowPrivateKey
Definition: iqr_rainbow.h:58
IQR_EXTERN const iqr_RainbowVariant IQR_RAINBOW_GF16_56_48_48
Definition: iqr_rainbow.h:71
IQR_API iqr_retval iqr_RainbowSign(const iqr_RainbowPrivateKey *private_key, const iqr_RNG *rng, const uint8_t *message, size_t message_size, uint8_t *sig, size_t sig_size)
ISARA Radiate Security Solution Suite's API declarations.
IQR_API iqr_retval iqr_RainbowCreateParams(const iqr_Context *ctx, const iqr_RainbowVariant *variant, iqr_RainbowParams **params)
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
IQR_API iqr_retval iqr_RainbowImportPublicKey(const iqr_RainbowParams *params, const uint8_t *buf, size_t buf_size, iqr_RainbowPublicKey **public_key)
IQR_API iqr_retval iqr_RainbowGetPublicKeySize(const iqr_RainbowParams *params, size_t *public_key_size)
IQR_EXTERN const iqr_RainbowVariant IQR_RAINBOW_GF31_84_56_56
Definition: iqr_rainbow.h:89
IQR_API iqr_retval iqr_RainbowGetPrivateKeySize(const iqr_RainbowParams *params, size_t *private_key_size)
IQR_API iqr_retval iqr_RainbowImportPrivateKey(const iqr_RainbowParams *params, const uint8_t *buf, size_t buf_size, iqr_RainbowPrivateKey **private_key)
iqr_retval
Definition: iqr_retval.h:29