ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_mac.h
Go to the documentation of this file.
1 
16 #ifndef IQR_MAC_H
17 #define IQR_MAC_H
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include "iqr_api.h"
24 #include "iqr_context.h"
25 #include "iqr_hash.h"
26 #include "iqr_retval.h"
27 
28 #include <stddef.h>
29 #include <stdint.h>
30 
31 // ---------------------------------------------------------------------------------------------------------------------------------
32 // Constants.
33 // ---------------------------------------------------------------------------------------------------------------------------------
34 
36 #define IQR_POLY1305_KEY_SIZE 32
37 
39 #define IQR_POLY1305_TAG_SIZE 16
40 
41 // ---------------------------------------------------------------------------------------------------------------------------------
42 // Opaque data type.
43 // ---------------------------------------------------------------------------------------------------------------------------------
44 
46 typedef struct iqr_MAC_struct iqr_MAC;
47 
48 // ---------------------------------------------------------------------------------------------------------------------------------
49 // MAC management.
50 // ---------------------------------------------------------------------------------------------------------------------------------
51 
67 IQR_API
69 
81 IQR_API
83 
96 IQR_API_UNENFORCED_RETURN
98 
99 // ---------------------------------------------------------------------------------------------------------------------------------
100 // MAC usage.
101 // ---------------------------------------------------------------------------------------------------------------------------------
102 
129 IQR_API
130 iqr_retval iqr_MACMessage(iqr_MAC *mac, const uint8_t *key, size_t key_size, const uint8_t *msg, size_t msg_size,
131  uint8_t *tag, size_t tag_size);
132 
144 IQR_API
145 iqr_retval iqr_MACBegin(iqr_MAC *mac, const uint8_t *key, size_t key_size);
146 
159 IQR_API
160 iqr_retval iqr_MACUpdate(iqr_MAC *mac, const uint8_t *buf, size_t buf_size);
161 
179 IQR_API
180 iqr_retval iqr_MACEnd(iqr_MAC *mac, uint8_t *tag, size_t tag_size);
181 
197 IQR_API
198 iqr_retval iqr_MACGetKeySize(const iqr_MAC *mac, size_t *key_size);
199 
210 IQR_API
211 iqr_retval iqr_MACGetTagSize(const iqr_MAC *mac, size_t *tag_size);
212 
213 #ifdef __cplusplus
214 }
215 #endif
216 
217 #endif /* IQR_MAC_H */
IQR_API iqr_retval iqr_MACMessage(iqr_MAC *mac, const uint8_t *key, size_t key_size, const uint8_t *msg, size_t msg_size, uint8_t *tag, size_t tag_size)
IQR_API iqr_retval iqr_MACGetKeySize(const iqr_MAC *mac, size_t *key_size)
ISARA Radiate Security Solution Suite&#39;s Hash object API.
ISARA Radiate Security Solution Suite&#39;s Context object.
IQR_API iqr_retval iqr_MACBegin(iqr_MAC *mac, const uint8_t *key, size_t key_size)
IQR_API iqr_retval iqr_MACCreateHMAC(const iqr_Context *ctx, iqr_HashAlgorithmType hash_algo, iqr_MAC **mac)
iqr_HashAlgorithmType
Definition: iqr_hash.h:53
IQR_API iqr_retval iqr_MACCreatePoly1305(const iqr_Context *ctx, iqr_MAC **mac)
ISARA Radiate Security Solution Suite&#39;s return values.
IQR_API iqr_retval iqr_MACUpdate(iqr_MAC *mac, const uint8_t *buf, size_t buf_size)
ISARA Radiate Security Solution Suite&#39;s API declarations.
IQR_API iqr_retval iqr_MACEnd(iqr_MAC *mac, uint8_t *tag, size_t tag_size)
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
IQR_API iqr_retval iqr_MACGetTagSize(const iqr_MAC *mac, size_t *tag_size)
struct iqr_MAC_struct iqr_MAC
Definition: iqr_mac.h:47
IQR_API_UNENFORCED_RETURN iqr_retval iqr_MACDestroy(iqr_MAC **mac)
iqr_retval
Definition: iqr_retval.h:29