ISARA Quantum Resistant Toolkit  Version 1.1
Quantum resistant cryptographic primitives and algorithms.
iqr_mac.h
Go to the documentation of this file.
1 
13 #ifndef IQR_MAC_H
14 #define IQR_MAC_H
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #include "iqr_context.h"
21 
22 #include <stddef.h>
23 #include <stdint.h>
24 
25 #include "iqr_api.h"
26 #include "iqr_hash.h"
27 #include "iqr_retval.h"
28 
29 // ---------------------------------------------------------------------------------------------------------------------------------
30 // Opaque data type.
31 // ---------------------------------------------------------------------------------------------------------------------------------
32 
34 typedef struct iqr_MAC_struct iqr_MAC;
35 
36 // ---------------------------------------------------------------------------------------------------------------------------------
37 // MAC management.
38 // ---------------------------------------------------------------------------------------------------------------------------------
39 
53 IQR_API
55 
65 IQR_API
67 
77 IQR_API_UNENFORCED_RETURN
79 
80 // ---------------------------------------------------------------------------------------------------------------------------------
81 // MAC usage.
82 // ---------------------------------------------------------------------------------------------------------------------------------
83 
105 IQR_API
106 iqr_retval iqr_MACMessage(iqr_MAC *mac, const uint8_t *key, size_t key_size, const uint8_t *msg, size_t msg_size,
107  uint8_t *tag, size_t tag_size);
108 
118 IQR_API
119 iqr_retval iqr_MACBegin(iqr_MAC *mac, const uint8_t *key, size_t key_size);
120 
133 IQR_API
134 iqr_retval iqr_MACUpdate(iqr_MAC *mac, const uint8_t *data, size_t data_size);
135 
150 IQR_API
151 iqr_retval iqr_MACEnd(iqr_MAC *mac, uint8_t *tag, size_t tag_size);
152 
162 IQR_API
163 iqr_retval iqr_MACGetTagSize(const iqr_MAC *mac, size_t *tag_size);
164 
165 #ifdef __cplusplus
166 }
167 #endif
168 
169 #endif /* IQR_MAC_H */
IQR_API iqr_retval iqr_MACUpdate(iqr_MAC *mac, const uint8_t *data, size_t data_size)
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_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:50
IQR_API iqr_retval iqr_MACCreatePoly1305(const iqr_Context *ctx, iqr_MAC **mac)
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:33
IQR_API iqr_retval iqr_MACGetTagSize(const iqr_MAC *mac, size_t *tag_size)
struct iqr_MAC_struct iqr_MAC
Definition: iqr_mac.h:34
IQR_API_UNENFORCED_RETURN iqr_retval iqr_MACDestroy(iqr_MAC **mac)
iqr_retval
Definition: iqr_retval.h:26