65 lines
1.8 KiB
C
65 lines
1.8 KiB
C
/**
|
|
* @file ske_cbc_mac.h
|
|
* @brief Semidrive CRYPTO ske cbc mac header file.
|
|
*
|
|
* @copyright Copyright (c) 2021 Semidrive Semiconductor.
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#ifndef SKE_CBC_MAC_H
|
|
#define SKE_CBC_MAC_H
|
|
|
|
#include "ske.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct {
|
|
ske_ctx_t ske_cbc_mac_ctx[1];
|
|
uint8_t is_updated;
|
|
uint8_t left_bytes;
|
|
uint8_t block_buf[16];
|
|
SKE_PADDING padding;
|
|
} ske_cbc_mac_ctx_t;
|
|
|
|
typedef struct {
|
|
ske_ctx_t ske_cbc_mac_ctx[1];
|
|
uint32_t tmp_output_block[4];
|
|
} ske_cbc_mac_dma_ctx_t;
|
|
|
|
uint32_t ske_hp_cbc_mac_init(ske_cbc_mac_ctx_t *ctx, SKE_ALG alg,
|
|
SKE_PADDING padding, uint8_t *key,
|
|
uint16_t sp_key_idx);
|
|
|
|
uint32_t ske_hp_cbc_mac_update(ske_cbc_mac_ctx_t *ctx, uint8_t *msg,
|
|
uint32_t msg_bytes);
|
|
|
|
uint32_t ske_hp_cbc_mac_final(ske_cbc_mac_ctx_t *ctx, uint8_t *mac,
|
|
uint8_t mac_bytes);
|
|
|
|
uint32_t ske_hp_cbc_mac(SKE_ALG alg, SKE_PADDING padding, uint8_t *key,
|
|
uint16_t sp_key_idx, uint8_t *msg, uint32_t msg_bytes,
|
|
uint8_t *mac, uint8_t mac_bytes);
|
|
|
|
#ifdef SKE_HP_DMA_FUNCTION
|
|
uint32_t ske_hp_dma_cbc_mac_init(ske_cbc_mac_dma_ctx_t *ctx, SKE_ALG alg,
|
|
uint8_t *key, uint16_t sp_key_idx);
|
|
|
|
uint32_t ske_hp_dma_cbc_mac_update_blocks_excluding_last_block(
|
|
ske_cbc_mac_dma_ctx_t *ctx, uint32_t *msg, uint32_t msg_words);
|
|
|
|
uint32_t ske_hp_dma_cbc_mac_update_including_last_block(
|
|
ske_cbc_mac_dma_ctx_t *ctx, uint32_t *msg, uint32_t msg_bytes,
|
|
uint32_t *mac);
|
|
|
|
uint32_t ske_hp_dma_cbc_mac(SKE_ALG alg, uint8_t *key, uint16_t sp_key_idx,
|
|
uint32_t *msg, uint32_t msg_bytes, uint32_t *mac);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|