open5gs/lib/core/include/core_aes.h

43 lines
1.2 KiB
C

#ifndef _CORE_AES_H__
#define _CORE_AES_H__
#include "core.h"
#include "core_errno.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define AES_BLOCK_SIZE 16
#define MAX_KEY_BITS 256
#define KEYLENGTH(keybits) ((keybits)/8)
#define RKLENGTH(keybits) ((keybits)/8+28)
#define NROUNDS(keybits) ((keybits)/32+6)
CORE_DECLARE(int) aes_setup_enc(c_uint32_t *rk, const c_uint8_t *key,
int keybits);
CORE_DECLARE(int) aes_setup_dec(c_uint32_t *rk, const c_uint8_t *key,
int keybits);
CORE_DECLARE(void) aes_encrypt(const c_uint32_t *rk, int nrounds,
const c_uint8_t plaintext[16], c_uint8_t ciphertext[16]);
CORE_DECLARE(void) aes_decrypt(const c_uint32_t *rk, int nrounds,
const c_uint8_t ciphertext[16], c_uint8_t plaintext[16]);
CORE_DECLARE(status_t) aes_cbc_encrypt(const c_uint8_t *key,
const c_uint32_t keybits, c_uint8_t *ivec,
const c_uint8_t *in, const c_uint32_t inlen,
c_uint8_t *out, c_uint32_t *outlen);
CORE_DECLARE(status_t) aes_cbc_decrypt(const c_uint8_t *key,
const c_uint32_t keybits, c_uint8_t *ivec,
const c_uint8_t *in, const c_uint32_t inlen,
c_uint8_t *out, c_uint32_t *outlen);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif