rt-thread-official/bsp/hc32f4a0/Libraries/HC32F4A0_StdPeriph_Driver/inc/hc32f4a0_hash.h

234 lines
9.6 KiB
C

/**
*******************************************************************************
* @file hc32f4a0_hash.h
* @brief This file contains all the functions prototypes of the HASH driver
* library.
@verbatim
Change Logs:
Date Author Notes
2020-06-12 Heqb First version
@endverbatim
*******************************************************************************
* Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved.
*
* This software component is licensed by HDSC under BSD 3-Clause license
* (the "License"); You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
*******************************************************************************
*/
#ifndef __HC32F4A0_HASH_H__
#define __HC32F4A0_HASH_H__
/* C binding of definitions if building with C++ compiler */
#ifdef __cplusplus
extern "C"
{
#endif
/*******************************************************************************
* Include files
******************************************************************************/
#include "hc32_common.h"
#include "ddl_config.h"
/**
* @addtogroup HC32F4A0_DDL_Driver
* @{
*/
/**
* @addtogroup DDL_HASH
* @{
*/
#if (DDL_HASH_ENABLE == DDL_ON)
/*******************************************************************************
* Global type definitions ('typedef')
******************************************************************************/
/*******************************************************************************
* Global pre-processor symbols/macros ('#define')
******************************************************************************/
/**
* @defgroup HASH_Global_Macros HASH Global Macros
* @{
*/
#define HASH_GROUP_LEN (64U)
#define LAST_GROUP_MAX_LEN (56U)
/** @defgroup HASH_Mode HASH Mode
* @{
*/
#define HASH_MODE_SHA_256 (0x00000000UL) /*!< SHA_256 Operating mode */
#define HASH_MODE_HMAC (0x00000010UL) /*!< HMAC Operating mode */
/**
* @}
*/
/**
* @defgroup HASH_Key_Len HASH Key Length
* @{
*/
#define HASH_KEY_LEN_LONG (HASH_CR_LKEY) /*!< Key length > 64 Bytes */
#define HASH_KEY_LEN_SHORT (0x0UL) /*!< Key length <= 64 Bytes */
/**
* @}
*/
/**
* @defgroup HASH_Interrupt_Definition HASH Interrupt Definition
* @{
*/
#define HASH_INT_GROUP (HASH_CR_HEIE) /*!< A set of data operations complete interrupt */
#define HASH_INT_ALL (HASH_CR_HCIE) /*!< All data operations complete interrupt */
/**
* @}
*/
/**
* @defgroup HASH_Msg_Group HASH Messages Group
* @{
*/
#define HASH_MSG_GRP_FIRST (HASH_CR_FST_GRP) /*!< The first group of messages or keys */
#define HASH_MSG_GRP_END (HASH_CR_KMSG_END) /*!< The last group of messages or keys */
#define HASH_MSG_GRP_ONLY_ONE (HASH_CR_FST_GRP | \
HASH_CR_KMSG_END) /*!< Only one set of message or key */
/**
* @}
*/
/**
* @defgroup HASH_Status HASH Status
* @{
*/
#define HASH_FLAG_START (HASH_CR_START) /*!< Operation in progress */
#define HASH_FLAG_BUSY (HASH_CR_BUSY) /*!< HASH in operation */
#define HASH_FLAG_CYC_END (HASH_CR_CYC_END) /*!< key or message operation completed */
#define HASH_FLAG_HMAC_END (HASH_CR_HMAC_END) /*!< HMAC operation completed */
/**
* @}
*/
/**
* @defgroup HASH_Common_Trigger_Sel HASH common trigger source select
* @{
*/
#define HASH_COM_TRIG1 (AOS_HASH_ITRGSELA_COMTRG_EN_0)
#define HASH_COM_TRIG2 (AOS_HASH_ITRGSELA_COMTRG_EN_1)
#define HASH_COM_TRIG_MASk (AOS_HASH_ITRGSELA_COMTRG_EN)
/**
* @}
*/
/**
* @defgroup HASH_Common_Trigger_Reg_Sel HASH common trigger cource select
* @{
*/
#define HASH_TRIG_REG_BLKCOM (0U) /*!< DMA block transfer complete register */
#define HASH_TRIG_REG_TRNCOM (1U) /*!< DMA transfer complete register*/
/**
* @}
*/
/**
* @defgroup HASH_Trigger_Source_Sel HASH Trigger Source Select
* @{
*/
#define HASH_TRG_SRC_DMA1_BTC0 (EVT_DMA1_BTC0) /*!< Select the DMA1 ch0 block transfer complete */
#define HASH_TRG_SRC_DMA1_BTC1 (EVT_DMA1_BTC1) /*!< Select the DMA1 ch1 block transfer complete */
#define HASH_TRG_SRC_DMA1_BTC2 (EVT_DMA1_BTC2) /*!< Select the DMA1 ch2 block transfer complete */
#define HASH_TRG_SRC_DMA1_BTC3 (EVT_DMA1_BTC3) /*!< Select the DMA1 ch3 block transfer complete */
#define HASH_TRG_SRC_DMA1_BTC4 (EVT_DMA1_BTC4) /*!< Select the DMA1 ch4 block transfer complete */
#define HASH_TRG_SRC_DMA1_BTC5 (EVT_DMA1_BTC5) /*!< Select the DMA1 ch5 block transfer complete */
#define HASH_TRG_SRC_DMA1_BTC6 (EVT_DMA1_BTC6) /*!< Select the DMA1 ch6 block transfer complete */
#define HASH_TRG_SRC_DMA1_BTC7 (EVT_DMA1_BTC7) /*!< Select the DMA1 ch7 block transfer complete */
#define HASH_TRG_SRC_DMA1_TC0 (EVT_DMA1_TC0) /*!< Select the DMA1 ch0 transfer complete*/
#define HASH_TRG_SRC_DMA1_TC1 (EVT_DMA1_TC1) /*!< Select the DMA1 ch1 transfer complete*/
#define HASH_TRG_SRC_DMA1_TC2 (EVT_DMA1_TC2) /*!< Select the DMA1 ch2 transfer complete*/
#define HASH_TRG_SRC_DMA1_TC3 (EVT_DMA1_TC3) /*!< Select the DMA1 ch3 transfer complete*/
#define HASH_TRG_SRC_DMA1_TC4 (EVT_DMA1_TC4) /*!< Select the DMA1 ch4 transfer complete*/
#define HASH_TRG_SRC_DMA1_TC5 (EVT_DMA1_TC5) /*!< Select the DMA1 ch5 transfer complete*/
#define HASH_TRG_SRC_DMA1_TC6 (EVT_DMA1_TC6) /*!< Select the DMA1 ch6 transfer complete*/
#define HASH_TRG_SRC_DMA1_TC7 (EVT_DMA1_TC7) /*!< Select the DMA1 ch7 transfer complete*/
#define HASH_TRG_SRC_DMA2_BTC0 (EVT_DMA2_BTC0) /*!< Select the DMA2 ch0 block transfer complete */
#define HASH_TRG_SRC_DMA2_BTC1 (EVT_DMA2_BTC1) /*!< Select the DMA2 ch1 block transfer complete */
#define HASH_TRG_SRC_DMA2_BTC2 (EVT_DMA2_BTC2) /*!< Select the DMA2 ch2 block transfer complete */
#define HASH_TRG_SRC_DMA2_BTC3 (EVT_DMA2_BTC3) /*!< Select the DMA2 ch3 block transfer complete */
#define HASH_TRG_SRC_DMA2_BTC4 (EVT_DMA2_BTC4) /*!< Select the DMA2 ch4 block transfer complete */
#define HASH_TRG_SRC_DMA2_BTC5 (EVT_DMA2_BTC5) /*!< Select the DMA2 ch5 block transfer complete */
#define HASH_TRG_SRC_DMA2_BTC6 (EVT_DMA2_BTC6) /*!< Select the DMA2 ch6 block transfer complete */
#define HASH_TRG_SRC_DMA2_BTC7 (EVT_DMA2_BTC7) /*!< Select the DMA2 ch7 block transfer complete */
#define HASH_TRG_SRC_DMA2_TC0 (EVT_DMA2_TC0) /*!< Select the DMA2 ch0 transfer complete*/
#define HASH_TRG_SRC_DMA2_TC1 (EVT_DMA2_TC1) /*!< Select the DMA2 ch1 transfer complete*/
#define HASH_TRG_SRC_DMA2_TC2 (EVT_DMA2_TC2) /*!< Select the DMA2 ch2 transfer complete*/
#define HASH_TRG_SRC_DMA2_TC3 (EVT_DMA2_TC3) /*!< Select the DMA2 ch3 transfer complete*/
#define HASH_TRG_SRC_DMA2_TC4 (EVT_DMA2_TC4) /*!< Select the DMA2 ch4 transfer complete*/
#define HASH_TRG_SRC_DMA2_TC5 (EVT_DMA2_TC5) /*!< Select the DMA2 ch5 transfer complete*/
#define HASH_TRG_SRC_DMA2_TC6 (EVT_DMA2_TC6) /*!< Select the DMA2 ch6 transfer complete*/
#define HASH_TRG_SRC_DMA2_TC7 (EVT_DMA2_TC7) /*!< Select the DMA2 ch7 transfer complete*/
/**
* @}
*/
/**
* @}
*/
/*******************************************************************************
* Global variable definitions ('extern')
******************************************************************************/
/*******************************************************************************
Global function prototypes (definition in C source)
******************************************************************************/
/**
* @addtogroup HASH_Global_Functions
* @{
*/
en_result_t HASH_Calculate(const void *pvSrcData,
uint32_t u32SrcDataSize,
uint8_t au8MsgDigest[]);
en_result_t HMAC_Calculate(const void *pvSrcData,
uint32_t u32SrcDataSize,
const uint8_t au8Key[],
uint32_t u32KeyLength,
uint8_t au8MsgDigest[]);
en_result_t HASH_Start(void);
en_result_t HASH_IntCmd(uint32_t u32HashInt, en_functional_state_t enNewState);
en_result_t HASH_SetMode(uint32_t u32HashMode);
en_result_t HASH_SetKeyLength(uint32_t u32KeyLen);
en_result_t HASH_MsgGrpConfig(uint32_t u32MsgGroup);
en_result_t HASH_ClearStatus(uint32_t u32ClearFlag);
void HASH_SetTriggerSrc(en_event_src_t enSrc);
void HASH_ComTriggerCmd(uint8_t u8TrigReg, uint32_t u32ComTrig, \
en_functional_state_t enNewState);
en_flag_status_t HASH_GetStatus(uint32_t u32HashFlag);
void HASH_GetResult(uint8_t au8MsgDigest[]);
/**
* @}
*/
#endif /* DDL_HASH_ENABLE */
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __HC32F4A0_HASH_H__ */
/*******************************************************************************
* EOF (not truncated)
******************************************************************************/