ISARA Radiate™ Quantum-safe Library Version 3.1

Quantum-safe cryptographic primitives and algorithms.

iqr_mac.h
Go to the documentation of this file.
1 
21 #ifndef IQR_MAC_H
22 #define IQR_MAC_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include "iqr_api.h"
29 #include "iqr_context.h"
30 #include "iqr_hash.h"
31 #include "iqr_retval.h"
32 
33 #include <stddef.h>
34 #include <stdint.h>
35 
36 // ---------------------------------------------------------------------------------------------------------------------------------
37 // Constants.
38 // ---------------------------------------------------------------------------------------------------------------------------------
39 
41 #define IQR_POLY1305_KEY_SIZE 32
42 
44 #define IQR_POLY1305_TAG_SIZE 16
45 
46 // ---------------------------------------------------------------------------------------------------------------------------------
47 // Opaque data type.
48 // ---------------------------------------------------------------------------------------------------------------------------------
49 
51 typedef struct iqr_MAC_struct iqr_MAC;
52 
53 // ---------------------------------------------------------------------------------------------------------------------------------
54 // MAC management.
55 // ---------------------------------------------------------------------------------------------------------------------------------
56 
72 IQR_API
74 
86 IQR_API
88 
101 IQR_API_UNENFORCED_RETURN
103 
104 // ---------------------------------------------------------------------------------------------------------------------------------
105 // MAC usage.
106 // ---------------------------------------------------------------------------------------------------------------------------------
107 
134 IQR_API
135 iqr_retval iqr_MACMessage(iqr_MAC *mac, const uint8_t *key, size_t key_size, const uint8_t *buf, size_t buf_size, uint8_t *tag,
136  size_t tag_size);
137 
149 IQR_API
150 iqr_retval iqr_MACBegin(iqr_MAC *mac, const uint8_t *key, size_t key_size);
151 
164 IQR_API
165 iqr_retval iqr_MACUpdate(iqr_MAC *mac, const uint8_t *buf, size_t buf_size);
166 
184 IQR_API
185 iqr_retval iqr_MACEnd(iqr_MAC *mac, uint8_t *tag, size_t tag_size);
186 
202 IQR_API
203 iqr_retval iqr_MACGetKeySize(const iqr_MAC *mac, size_t *key_size);
204 
215 IQR_API
216 iqr_retval iqr_MACGetTagSize(const iqr_MAC *mac, size_t *tag_size);
217 
218 #ifdef __cplusplus
219 }
220 #endif
221 
222 #endif /* IQR_MAC_H */
IQR_API iqr_retval iqr_MACBegin(iqr_MAC *mac, const uint8_t *key, size_t key_size)
struct iqr_MAC_struct iqr_MAC
Definition: iqr_mac.h:51
IQR_API iqr_retval iqr_MACEnd(iqr_MAC *mac, uint8_t *tag, size_t tag_size)
ISARA Radiate Quantum-Safe Library's Context object.
IQR_API iqr_retval iqr_MACGetTagSize(const iqr_MAC *mac, size_t *tag_size)
IQR_API iqr_retval iqr_MACUpdate(iqr_MAC *mac, const uint8_t *buf, size_t buf_size)
IQR_API iqr_retval iqr_MACCreateHMAC(const iqr_Context *ctx, iqr_HashAlgorithmType hash_algo, iqr_MAC **mac)
IQR_API iqr_retval iqr_MACGetKeySize(const iqr_MAC *mac, size_t *key_size)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_MACDestroy(iqr_MAC **mac)
iqr_HashAlgorithmType
Definition: iqr_hash.h:46
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.
ISARA Radiate Quantum-Safe Library's Hash object API.
IQR_API iqr_retval iqr_MACMessage(iqr_MAC *mac, const uint8_t *key, size_t key_size, const uint8_t *buf, size_t buf_size, uint8_t *tag, size_t tag_size)
IQR_API iqr_retval iqr_MACCreatePoly1305(const iqr_Context *ctx, iqr_MAC **mac)