ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_ntruprime.h
Go to the documentation of this file.
1 
21 #ifndef IQR_NTRUPRIME_H
22 #define IQR_NTRUPRIME_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include "iqr_api.h"
29 #include "iqr_context.h"
30 #include "iqr_retval.h"
31 #include "iqr_rng.h"
32 
33 // ---------------------------------------------------------------------------------------------------------------------------------
34 // Constants.
35 // ---------------------------------------------------------------------------------------------------------------------------------
36 
38 #define IQR_NTRUPRIME_SHARED_KEY_SIZE 32
39 
41 #define IQR_NTRUPRIME_CIPHERTEXT_SIZE 1047
42 
44 #define IQR_NTRUPRIME_PUBLIC_KEY_SIZE 1218
45 
47 #define IQR_NTRUPRIME_PRIVATE_KEY_SIZE 1600
48 
49 // ---------------------------------------------------------------------------------------------------------------------------------
50 // Opaque data types.
51 // ---------------------------------------------------------------------------------------------------------------------------------
52 
54 typedef struct iqr_NTRUPrimeParams_struct iqr_NTRUPrimeParams;
55 
57 typedef struct iqr_NTRUPrimePrivateKey_struct iqr_NTRUPrimePrivateKey;
58 
60 typedef struct iqr_NTRUPrimePublicKey_struct iqr_NTRUPrimePublicKey;
61 
62 // ---------------------------------------------------------------------------------------------------------------------------------
63 // Domain parameter functions.
64 // ---------------------------------------------------------------------------------------------------------------------------------
65 
92 IQR_API
94 
108 IQR_API_UNENFORCED_RETURN
110 
111 // ---------------------------------------------------------------------------------------------------------------------------------
112 // NTRUPrime key management functions.
113 // ---------------------------------------------------------------------------------------------------------------------------------
114 
132 IQR_API
134  iqr_NTRUPrimePrivateKey **private_key);
135 
155 IQR_API
156 iqr_retval iqr_NTRUPrimeImportPublicKey(const iqr_NTRUPrimeParams *params, const uint8_t *buf, size_t buf_size,
157  iqr_NTRUPrimePublicKey **public_key);
158 
180 IQR_API
181 iqr_retval iqr_NTRUPrimeImportPrivateKey(const iqr_NTRUPrimeParams *params, const uint8_t *buf, size_t buf_size,
182  iqr_NTRUPrimePrivateKey **private_key);
183 
195 IQR_API
196 iqr_retval iqr_NTRUPrimeExportPublicKey(const iqr_NTRUPrimePublicKey *public_key, uint8_t *buf, size_t buf_size);
197 
211 IQR_API
212 iqr_retval iqr_NTRUPrimeExportPrivateKey(const iqr_NTRUPrimePrivateKey *private_key, uint8_t *buf, size_t buf_size);
213 
223 IQR_API_UNENFORCED_RETURN
225 
239 IQR_API_UNENFORCED_RETURN
241 
242 // ---------------------------------------------------------------------------------------------------------------------------------
243 // NTRUPrime encapsulation/decapsulation functions.
244 // ---------------------------------------------------------------------------------------------------------------------------------
245 
273 IQR_API
274 iqr_retval iqr_NTRUPrimeEncapsulate(const iqr_NTRUPrimePublicKey *public_key, const iqr_RNG *rng, uint8_t *ciphertext,
275  size_t ciphertext_size, uint8_t *shared_key, size_t shared_key_size);
276 
300 IQR_API
301 iqr_retval iqr_NTRUPrimeDecapsulate(const iqr_NTRUPrimePrivateKey *private_key, const uint8_t *ciphertext, size_t ciphertext_size,
302  uint8_t *shared_key, size_t shared_key_size);
303 
304 #ifdef __cplusplus
305 }
306 #endif
307 
308 #endif /* IQR_NTRUPRIME_H */
ISARA Radiate Security Solution Suite's Context object.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_NTRUPrimeDestroyPublicKey(iqr_NTRUPrimePublicKey **public_key)
struct iqr_NTRUPrimeParams_struct iqr_NTRUPrimeParams
Definition: iqr_ntruprime.h:55
IQR_API iqr_retval iqr_NTRUPrimeCreateKeyPair(const iqr_NTRUPrimeParams *params, const iqr_RNG *rng, iqr_NTRUPrimePublicKey **public_key, iqr_NTRUPrimePrivateKey **private_key)
ISARA Radiate Security Solution Suite's Random Number Generator object APIs.
ISARA Radiate Security Solution Suite's return values.
IQR_API iqr_retval iqr_NTRUPrimeDecapsulate(const iqr_NTRUPrimePrivateKey *private_key, const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *shared_key, size_t shared_key_size)
IQR_API iqr_retval iqr_NTRUPrimeCreateParams(const iqr_Context *ctx, iqr_NTRUPrimeParams **params)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
IQR_API iqr_retval iqr_NTRUPrimeExportPublicKey(const iqr_NTRUPrimePublicKey *public_key, uint8_t *buf, size_t buf_size)
ISARA Radiate Security Solution Suite's API declarations.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_NTRUPrimeDestroyParams(iqr_NTRUPrimeParams **params)
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
struct iqr_NTRUPrimePublicKey_struct iqr_NTRUPrimePublicKey
Definition: iqr_ntruprime.h:61
struct iqr_NTRUPrimePrivateKey_struct iqr_NTRUPrimePrivateKey
Definition: iqr_ntruprime.h:58
IQR_API iqr_retval iqr_NTRUPrimeEncapsulate(const iqr_NTRUPrimePublicKey *public_key, const iqr_RNG *rng, uint8_t *ciphertext, size_t ciphertext_size, uint8_t *shared_key, size_t shared_key_size)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_NTRUPrimeDestroyPrivateKey(iqr_NTRUPrimePrivateKey **private_key)
IQR_API iqr_retval iqr_NTRUPrimeExportPrivateKey(const iqr_NTRUPrimePrivateKey *private_key, uint8_t *buf, size_t buf_size)
IQR_API iqr_retval iqr_NTRUPrimeImportPrivateKey(const iqr_NTRUPrimeParams *params, const uint8_t *buf, size_t buf_size, iqr_NTRUPrimePrivateKey **private_key)
iqr_retval
Definition: iqr_retval.h:29
IQR_API iqr_retval iqr_NTRUPrimeImportPublicKey(const iqr_NTRUPrimeParams *params, const uint8_t *buf, size_t buf_size, iqr_NTRUPrimePublicKey **public_key)