1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| /**
| * @file re_aes.h Interface to AES (Advanced Encryption Standard)
| *
| * Copyright (C) 2010 Creytiv.com
| */
|
|
| #ifndef AES_BLOCK_SIZE
| #define AES_BLOCK_SIZE 16
| #endif
|
| /** AES mode */
| enum aes_mode {
| AES_MODE_CTR, /**< AES Counter mode (CTR) */
| AES_MODE_GCM, /**< AES Galois Counter Mode (GCM) */
| };
|
| struct aes;
|
| int aes_alloc(struct aes **stp, enum aes_mode mode,
| const uint8_t *key, size_t key_bits,
| const uint8_t *iv);
| void aes_set_iv(struct aes *aes, const uint8_t *iv);
| int aes_encr(struct aes *aes, uint8_t *out, const uint8_t *in, size_t len);
| int aes_decr(struct aes *aes, uint8_t *out, const uint8_t *in, size_t len);
| int aes_get_authtag(struct aes *aes, uint8_t *tag, size_t taglen);
| int aes_authenticate(struct aes *aes, const uint8_t *tag, size_t taglen);
|
|