re/include/re_aes.h
Alfred E. Heggestad b42724a64b aes: add support for GCM Galois Counter Mode (#106)
* 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
2018-02-01 12:00:57 +01:00

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);