JLChen
2020-12-10 a8c5f79b0d93adfa7f23601dd0fee30edc14f0d4
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);