Skip to content

File syn_aes128.h

File List > src > syntropic > util > syn_aes128.h

Go to the documentation of this file

#ifndef SYN_AES128_H
#define SYN_AES128_H

#include "../common/syn_defs.h"

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

#define SYN_AES128_KEY_SIZE 16
#define SYN_AES128_BLOCK_SIZE 16
#define SYN_AES128_EXPANDED_KEY_SIZE 176

typedef struct {
    uint8_t round_keys[SYN_AES128_EXPANDED_KEY_SIZE];
} SYN_AES128_Context;

SYN_Status syn_aes128_init(SYN_AES128_Context *ctx, const uint8_t key[SYN_AES128_KEY_SIZE]);

void syn_aes128_encrypt_block(const SYN_AES128_Context *ctx, const uint8_t in[16], uint8_t out[16]);

void syn_aes128_decrypt_block(const SYN_AES128_Context *ctx, const uint8_t in[16], uint8_t out[16]);

SYN_Status syn_aes128_cbc_encrypt(const SYN_AES128_Context *ctx, const uint8_t iv[16],
                                  const uint8_t *in, size_t in_len, uint8_t *out,
                                  size_t out_capacity, size_t *out_len);

SYN_Status syn_aes128_cbc_decrypt(const SYN_AES128_Context *ctx, const uint8_t iv[16],
                                  const uint8_t *in, size_t in_len, uint8_t *out,
                                  size_t out_capacity, size_t *out_len);

#ifdef __cplusplus
}
#endif

#endif /* SYN_AES128_H */