1 /* 2 * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #include "stdio.h" 8 #include "hal/hmac_hal.h" 9 #include "hal/hmac_ll.h" 10 hmac_hal_start(void)11void hmac_hal_start(void) 12 { 13 hmac_ll_wait_idle(); 14 hmac_ll_start(); 15 } 16 hmac_hal_configure(hmac_hal_output_t config,uint32_t key_id)17uint32_t hmac_hal_configure(hmac_hal_output_t config, uint32_t key_id) 18 { 19 hmac_ll_wait_idle(); 20 hmac_ll_config_output(config); 21 hmac_ll_config_hw_key_id(key_id); 22 hmac_ll_config_finish(); 23 hmac_ll_wait_idle(); 24 25 uint32_t conf_error = hmac_ll_config_error(); 26 if (conf_error) { 27 hmac_ll_calc_finish(); 28 return 1; 29 } else if (config != HMAC_OUTPUT_USER) { 30 // In "downstream" mode, this will be the last hmac operation. Make sure HMAC is ready for 31 // the other peripheral. 32 hmac_ll_wait_idle(); 33 } 34 35 return 0; 36 } 37 hmac_hal_write_one_block_512(const void * block)38void hmac_hal_write_one_block_512(const void *block) 39 { 40 hmac_ll_wait_idle(); 41 hmac_ll_write_block_512(block); 42 hmac_ll_wait_idle(); 43 hmac_ll_msg_one_block(); 44 } 45 hmac_hal_write_block_512(const void * block)46void hmac_hal_write_block_512(const void *block) 47 { 48 hmac_ll_wait_idle(); 49 hmac_ll_write_block_512(block); 50 } 51 hmac_hal_next_block_padding(void)52void hmac_hal_next_block_padding(void) 53 { 54 hmac_ll_wait_idle(); 55 hmac_ll_msg_padding(); 56 } 57 hmac_hal_next_block_normal(void)58void hmac_hal_next_block_normal(void) 59 { 60 hmac_ll_wait_idle(); 61 hmac_ll_msg_continue(); 62 } 63 hmac_hal_read_result_256(void * result)64void hmac_hal_read_result_256(void *result) 65 { 66 hmac_ll_wait_idle(); 67 hmac_ll_read_result_256(result); 68 hmac_ll_calc_finish(); 69 } 70 hmac_hal_clean(void)71void hmac_hal_clean(void) 72 { 73 hmac_ll_wait_idle(); 74 hmac_ll_clean(); 75 } 76