Embedded SDK
Embedded SDK
lcx_aes_siv.h
Go to the documentation of this file.
1 /* @BANNER@ */
2 
18 #if defined(HAVE_AES_SIV)
19 
20 #ifndef LCX_AES_SIV_H
21 #define LCX_AES_SIV_H
22 
23 #include "lcx_cipher.h"
24 
25 #define AES_SIV_MAX_KEY_LEN (32)
26 #define AES_SIV_KEY_NUMBER (2)
27 #define AES_SIV_TAG_LEN (16)
28 
33 typedef struct _cx_aes_siv_context {
34  uint8_t key1[AES_SIV_MAX_KEY_LEN];
35  uint8_t key2[AES_SIV_MAX_KEY_LEN];
36  size_t key_len;
37  uint8_t tag_state[CX_AES_BLOCK_SIZE];
38  cx_cipher_id_t cipher_type;
39  uint32_t mode;
41  *cipher_ctx;
42 
43 } cx_aes_siv_context_t;
44 
56 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_init(cx_aes_siv_context_t *ctx);
57 
74 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_set_key(cx_aes_siv_context_t *ctx,
75  const uint8_t *key,
76  size_t key_bitlen);
77 
90 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_start(cx_aes_siv_context_t *ctx,
91  uint32_t mode,
92  const uint8_t *iv,
93  size_t iv_len);
94 
103 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_update_aad(cx_aes_siv_context_t *ctx,
104  const uint8_t *aad,
105  size_t aad_len);
106 
107 cx_err_t cx_aes_siv_update_mac(cx_aes_siv_context_t *ctx, const uint8_t *input, size_t in_len);
108 
119 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_update(cx_aes_siv_context_t *ctx,
120  const uint8_t *input,
121  uint8_t *output,
122  size_t len);
123 
135 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_finish(cx_aes_siv_context_t *ctx,
136  const uint8_t *input,
137  size_t in_len,
138  uint8_t *tag);
139 
154 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_encrypt(cx_aes_siv_context_t *ctx,
155  const uint8_t *input,
156  size_t in_len,
157  const uint8_t *aad,
158  size_t aad_len,
159  uint8_t *output,
160  uint8_t *tag);
161 
176 WARN_UNUSED_RESULT cx_err_t cx_aes_siv_decrypt(cx_aes_siv_context_t *ctx,
177  const uint8_t *input,
178  size_t in_len,
179  const uint8_t *aad,
180  size_t aad_len,
181  uint8_t *output,
182  uint8_t *tag);
183 
184 #endif /* LCX_AES_SIV_H */
185 
186 #endif // HAVE_AES_SIV
API for block ciphers.
cx_cipher_id_t
Definition: lcx_cipher.h:36
unsigned char uint8_t
Definition: usbd_conf.h:53