pqc/common/aes.h
2019-04-09 14:48:46 +02:00

47 lines
1.1 KiB
C

#ifndef AES_H
#define AES_H
#include <stdint.h>
#define AES128_KEYBYTES 16
#define AES192_KEYBYTES 24
#define AES256_KEYBYTES 32
#define AESCTR_NONCEBYTES 12
typedef struct {
uint64_t sk_exp[88];
} aes128ctx;
typedef struct {
uint64_t sk_exp[104];
} aes192ctx;
typedef struct {
uint64_t sk_exp[120];
} aes256ctx;
void aes128_keyexp(aes128ctx *r, const unsigned char *key);
void aes128_ctr(unsigned char *out, size_t outlen, const unsigned char *iv, const aes128ctx *ctx);
void aes128_ecb(unsigned char *out, unsigned char *in, size_t nblocks, const aes128ctx *ctx);
void aes192_keyexp(aes192ctx *r, const unsigned char *key);
void aes192_ctr(unsigned char *out, size_t outlen, const unsigned char *iv, const aes192ctx *ctx);
void aes192_ecb(unsigned char *out, unsigned char *in, size_t nblocks, const aes192ctx *ctx);
void aes256_keyexp(aes256ctx *r, const unsigned char *key);
void aes256_ctr(unsigned char *out, size_t outlen, const unsigned char *iv, const aes256ctx *ctx);
void aes256_ecb(unsigned char *out, unsigned char *in, size_t nblocks, const aes256ctx *ctx);
#endif