19#define SUPPORT_HASH_SM3
20#define SUPPORT_HASH_MD5
21#define SUPPORT_HASH_SHA256
22#define SUPPORT_HASH_SHA384
23#define SUPPORT_HASH_SHA512
24#define SUPPORT_HASH_SHA1
25#define SUPPORT_HASH_SHA224
26#define SUPPORT_HASH_SHA512_224
27#define SUPPORT_HASH_SHA512_256
28#define SUPPORT_HASH_SHA3_224
29#define SUPPORT_HASH_SHA3_256
30#define SUPPORT_HASH_SHA3_384
31#define SUPPORT_HASH_SHA3_512
33#define HASH_DMA_FUNCTION
35#define HMAC_SECURE_PORT_FUNCTION
36#ifdef HMAC_SECURE_PORT_FUNCTION
37#define HMAC_MAX_KEY_IDX \
40#define HMAC_MAX_SP_KEY_SIZE \
45#define HASH_HMAC_OFFSET (4)
46#define HASH_REVERSE_BYTE_ORDER_IN_WORD_OFFSET (8)
47#define HASH_LAST_BLOCK_OFFSET (16)
48#define HASH_DMA_OFFSET (16)
102#if (defined(SUPPORT_HASH_SHA3_224) || defined(SUPPORT_HASH_SHA3_256) || \
103 defined(SUPPORT_HASH_SHA3_384) || defined(SUPPORT_HASH_SHA3_512))
104#define HASH_DIGEST_MAX_WORD_LEN (16)
105#define HASH_BLOCK_MAX_WORD_LEN (36)
106#elif (defined(SUPPORT_HASH_SHA384) || defined(SUPPORT_HASH_SHA512) || \
107 defined(SUPPORT_HASH_SHA512_224) || defined(SUPPORT_HASH_SHA512_256))
108#define HASH_DIGEST_MAX_WORD_LEN (16)
109#define HASH_BLOCK_MAX_WORD_LEN (32)
111#define HASH_DIGEST_MAX_WORD_LEN (8)
112#define HASH_BLOCK_MAX_WORD_LEN (16)
115#define HASH_BLOCK_MAX_BYTE_LEN (HASH_BLOCK_MAX_WORD_LEN << 2)
117#if (defined(SUPPORT_HASH_SHA3_224) || defined(SUPPORT_HASH_SHA3_256) || \
118 defined(SUPPORT_HASH_SHA3_384) || defined(SUPPORT_HASH_SHA3_512))
119#define HASH_ITERATOR_MAX_WORD_LEN (50)
121#define HASH_ITERATOR_MAX_WORD_LEN HASH_DIGEST_MAX_WORD_LEN
124#if (defined(SUPPORT_HASH_SHA384) || defined(SUPPORT_HASH_SHA512) || \
125 defined(SUPPORT_HASH_SHA512_224) || defined(SUPPORT_HASH_SHA512_256))
126#define HASH_TOTAL_LEN_MAX_WORD_LEN (4)
128#define HASH_TOTAL_LEN_MAX_WORD_LEN (2)
133#ifdef SUPPORT_HASH_SM3
137#ifdef SUPPORT_HASH_MD5
141#ifdef SUPPORT_HASH_SHA256
145#ifdef SUPPORT_HASH_SHA384
149#ifdef SUPPORT_HASH_SHA512
153#ifdef SUPPORT_HASH_SHA1
157#ifdef SUPPORT_HASH_SHA224
161#ifdef SUPPORT_HASH_SHA512_224
165#ifdef SUPPORT_HASH_SHA512_256
169#ifdef SUPPORT_HASH_SHA3_224
173#ifdef SUPPORT_HASH_SHA3_256
177#ifdef SUPPORT_HASH_SHA3_384
181#ifdef SUPPORT_HASH_SHA3_512
257 uint32_t block_byte_len);
283#ifdef HASH_DMA_FUNCTION
HASH_ALG
Definition: hash_basic.h:131
@ HASH_SHA224
Definition: hash_basic.h:157
@ HASH_SHA1
Definition: hash_basic.h:153
@ HASH_SHA512_224
Definition: hash_basic.h:161
@ HASH_SHA256
Definition: hash_basic.h:141
@ HASH_MD5
Definition: hash_basic.h:137
@ HASH_SM3
Definition: hash_basic.h:133
@ HASH_SHA512
Definition: hash_basic.h:149
@ HASH_SHA3_224
Definition: hash_basic.h:169
@ HASH_SHA3_384
Definition: hash_basic.h:177
@ HASH_SHA3_512
Definition: hash_basic.h:181
@ HASH_SHA384
Definition: hash_basic.h:145
@ HASH_SHA3_256
Definition: hash_basic.h:173
@ HASH_SHA512_256
Definition: hash_basic.h:165
void hash_set_hmac_key_mode(void)
void hash_enable_cpu_interruption(void)
HASH_RET_CODE
Definition: hash_basic.h:186
@ HASH_ERROR
Definition: hash_basic.h:192
@ HASH_CONFIG_INVALID
Definition: hash_basic.h:189
@ HASH_LEN_OVERFLOW
Definition: hash_basic.h:191
@ HASH_SUCCESS
Definition: hash_basic.h:187
@ HASH_BUFFER_NULL
Definition: hash_basic.h:188
@ HASH_INPUT_INVALID
Definition: hash_basic.h:190
void hash_enable_dma_interruption(void)
void hash_set_dma_wlen(uint32_t wlen)
void hash_hmac_key_opr(uint8_t *key, uint32_t key_bytes)
void hash_clear_risp(void)
void hash_input_msg(uint8_t *msg, uint32_t msg_words)
void hash_set_cpu_mode(void)
void hash_set_hmac_mode(void)
void(* HASH_CALLBACK)(void)
Definition: hash_basic.h:195
void hash_set_hash_mode(void)
void hash_disable_cpu_interruption(void)
uint32_t hash_check_whether_sha3_alg(HASH_ALG hash_alg)
void hash_clear_msg_len(void)
void hash_set_iterator(uint32_t *iterator, uint8_t hash_iterator_words)
void hash_set_dma_ch_ctl(uint32_t ch_ctl)
void hash_set_hmac_key_cnt(uint32_t bitlen)
void hash_set_dma_ch_wctl(uint32_t ch_wctl)
struct hash_reg hash_reg_t
uint32_t hash_get_version(void)
void hash_set_dma_mode(void)
void hash_disable_dma_interruption(void)
void hash_set_msg_total_bit_len(uint32_t *msg_total_bits, uint32_t block_byte_len)
void hash_set_hmac_key_len(uint32_t bitlen)
void hash_hmac_enable_secure_port(uint16_t sp_key_idx)
void hash_set_msg_len(uint32_t bytelen)
void hash_set_last_block(uint8_t tag)
void hash_dma_operate(uint32_t *msg, uint32_t *iterator, uint32_t msgBitLen, HASH_CALLBACK callback)
void hash_clear_dma_ch_en(void)
void hash_set_alg(HASH_ALG hash_alg)
void hash_hmac_key_opr_one_block(uint32_t *key, uint32_t block_byte_len)
void hash_input_msg_u8(uint8_t *msg, uint32_t msg_bytes)
void hash_set_dma_sublen(uint32_t sublen)
void hash_clear_dma_sa_da(void)
void hash_hmac_disable_secure_port(void)
void hash_set_dma_ch_rctl(uint32_t ch_rctl)
void hash_hmac_sp_key_opr(uint32_t key_bits)
void hash_wait_till_done(void)
void hash_clear_hmac_key_mode(void)
void hash_get_iterator(uint8_t *iterator, uint8_t hash_iterator_words)
void hash_set_dma_ctl1(uint32_t ctl1)
void hash_set_endian_uint32(void)
void hash_update_config(void)
void hash_set_dma_ctl0(uint32_t ctl0)
Definition: hash_basic.h:50
uint32_t rev_2[5]
Definition: hash_basic.h:60
uint32_t dma_sr
Definition: hash_basic.h:83
uint32_t rev_8[14]
Definition: hash_basic.h:79
uint32_t rev_9[14]
Definition: hash_basic.h:81
uint32_t dma_da_l
Definition: hash_basic.h:91
uint32_t rev_6[3]
Definition: hash_basic.h:73
uint32_t dma_da_h
Definition: hash_basic.h:93
uint32_t hash_misr
Definition: hash_basic.h:59
uint32_t rev_4[3]
Definition: hash_basic.h:68
uint32_t hash_out[50]
Definition: hash_basic.h:80
uint32_t hash_mdin_cr
Definition: hash_basic.h:72
uint32_t dma_to
Definition: hash_basic.h:84
uint32_t rev_5[15]
Definition: hash_basic.h:71
uint32_t hash_version
Definition: hash_basic.h:76
uint32_t rev_1[2]
Definition: hash_basic.h:53
uint32_t hash_m_din
Definition: hash_basic.h:74
uint32_t hash_msg_cnt[4]
Definition: hash_basic.h:63
uint32_t dma_rlen
Definition: hash_basic.h:96
uint32_t hash_key_len
Definition: hash_basic.h:67
uint32_t dma_cr
Definition: hash_basic.h:82
uint32_t hash_ctrl
Definition: hash_basic.h:51
uint32_t hash_risr
Definition: hash_basic.h:54
uint32_t hash_imcr
Definition: hash_basic.h:56
uint32_t hash_msg_len[4]
Definition: hash_basic.h:61
uint32_t rev_11[2]
Definition: hash_basic.h:90
uint32_t rev_3[4]
Definition: hash_basic.h:65
uint32_t hash_in[50]
Definition: hash_basic.h:78
uint32_t hash_cfg
Definition: hash_basic.h:52
uint32_t rev_7[14]
Definition: hash_basic.h:75
uint32_t dma_sa_l
Definition: hash_basic.h:86
uint32_t dma_wlen
Definition: hash_basic.h:97
uint32_t rev_10[1]
Definition: hash_basic.h:85
uint32_t dma_sa_h
Definition: hash_basic.h:88
uint32_t rev_12[2]
Definition: hash_basic.h:95
uint32_t hash_key_cnt
Definition: hash_basic.h:69