
* aes: add support for GCM Galois Counter Mode (AEAD) * add tag functions * variable length IV * set crypt direction * remove usage of old AES api * aes: set IV using EVP_CipherInit_ex
27 lines
796 B
C
27 lines
796 B
C
/**
|
|
* @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);
|