@@ -34,6 +34,7 @@ static const char *TAG = "esp_key_mgr";
3434
3535static _lock_t s_key_mgr_ecdsa_key_lock ;
3636static _lock_t s_key_mgr_xts_aes_key_lock ;
37+ static _lock_t s_key_mgr_hmac_key_lock ;
3738
3839ESP_STATIC_ASSERT (sizeof (esp_key_mgr_key_recovery_info_t ) == sizeof (struct huk_key_block ), "Size of esp_key_mgr_key_recovery_info_t should match huk_key_block (from ROM)" );
3940
@@ -53,6 +54,9 @@ static void esp_key_mgr_acquire_key_lock(esp_key_mgr_key_type_t key_type)
5354 case ESP_KEY_MGR_XTS_AES_256_KEY :
5455 _lock_acquire (& s_key_mgr_xts_aes_key_lock );
5556 break ;
57+ case ESP_KEY_MGR_HMAC_KEY :
58+ _lock_acquire (& s_key_mgr_hmac_key_lock );
59+ break ;
5660 default :
5761 ESP_LOGE (TAG , "Invalid key type" );
5862 break ;
@@ -72,6 +76,9 @@ static void esp_key_mgr_release_key_lock(esp_key_mgr_key_type_t key_type)
7276 case ESP_KEY_MGR_XTS_AES_256_KEY :
7377 _lock_release (& s_key_mgr_xts_aes_key_lock );
7478 break ;
79+ case ESP_KEY_MGR_HMAC_KEY :
80+ _lock_release (& s_key_mgr_hmac_key_lock );
81+ break ;
7582 default :
7683 ESP_LOGE (TAG , "Invalid key type" );
7784 break ;
@@ -342,6 +349,8 @@ esp_err_t esp_key_mgr_deploy_key_in_aes_mode(const esp_key_mgr_aes_key_config_t
342349 aes_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_128 ;
343350 } else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY ) {
344351 aes_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 ;
352+ } else if (key_type == ESP_KEY_MGR_HMAC_KEY ) {
353+ aes_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_HMAC ;
345354 } else {
346355 ESP_LOGE (TAG , "Invalid key type" );
347356 return ESP_ERR_INVALID_ARG ;
@@ -461,6 +470,8 @@ esp_err_t esp_key_mgr_activate_key(esp_key_mgr_key_recovery_info_t *key_recovery
461470 key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_128 ;
462471 } else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY ) {
463472 key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 ;
473+ } else if (key_type == ESP_KEY_MGR_HMAC_KEY ) {
474+ key_purpose = ESP_KEY_MGR_KEY_PURPOSE_HMAC ;
464475 } else {
465476 ESP_LOGE (TAG , "Invalid key type" );
466477 return ESP_ERR_INVALID_ARG ;
@@ -629,6 +640,9 @@ esp_err_t esp_key_mgr_deploy_key_in_ecdh0_mode(const esp_key_mgr_ecdh0_key_confi
629640 } else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY ) {
630641 ecdh0_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 ;
631642 ecdh0_deploy_config .ecdh0_key_info = ecdh0_key_info -> k2_G [0 ];
643+ } else if (key_type == ESP_KEY_MGR_HMAC_KEY ) {
644+ ecdh0_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_HMAC ;
645+ ecdh0_deploy_config .ecdh0_key_info = ecdh0_key_info -> k2_G [0 ];
632646 } else {
633647 ESP_LOGE (TAG , "Invalid key type" );
634648 return ESP_ERR_INVALID_ARG ;
@@ -761,6 +775,8 @@ esp_err_t esp_key_mgr_deploy_key_in_random_mode(const esp_key_mgr_random_key_con
761775 random_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_128 ;
762776 } else if (key_type == ESP_KEY_MGR_XTS_AES_256_KEY ) {
763777 random_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_XTS_AES_256_1 ;
778+ } else if (key_type == ESP_KEY_MGR_HMAC_KEY ) {
779+ random_deploy_config .key_purpose = ESP_KEY_MGR_KEY_PURPOSE_HMAC ;
764780 } else {
765781 ESP_LOGE (TAG , "Invalid key type" );
766782 return ESP_ERR_INVALID_ARG ;
0 commit comments