#ifndef CMAC_CONTEXT_H
#define CMAC_CONTEXT_H
#include "sa_types.h"
#include "stored_key.h"
#ifdef __cplusplus
#include <cstdbool>
#include <cstddef>
extern "C" {
#else
#include <stdbool.h>
#include <stddef.h>
#endif
typedef struct cmac_context_s cmac_context_t;
cmac_context_t* cmac_context_create(const stored_key_t* stored_key);
sa_status cmac_context_update(
cmac_context_t* context,
const void* in,
size_t in_length);
sa_status cmac_context_update_key(
cmac_context_t* context,
stored_key_t* stored_key);
sa_status cmac_context_compute(
void* mac,
cmac_context_t* context);
bool cmac_context_done(cmac_context_t* context);
void cmac_context_free(cmac_context_t* context);
sa_status cmac(
void* mac,
const void* in1,
size_t in1_length,
const void* in2,
size_t in2_length,
const void* in3,
size_t in3_length,
const stored_key_t* stored_key);
#ifdef __cplusplus
}
#endif
#endif