Merge branch 'feature/add_ecdsa_p384_support_and_testcases_v5.5' into 'release/v5.5'
feat: add ecdsa-p384 testcases and relative support for ESP32C5 ECO2 (v5.5) See merge request espressif/esp-idf!41274
This commit is contained in:
@@ -26,6 +26,31 @@ ECDSA 外设可以为 TLS 双向身份验证等用例建立 **安全设备身份
|
||||
|
||||
在 {IDF_TARGET_NAME} 上,ECDSA 模块使用烧录到 eFuse 块中的密钥。密码模块外的任何资源都不可访问此密钥(默认模式),从而避免密钥泄露。
|
||||
|
||||
ECDSA 密钥存储
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
.. only:: SOC_ECDSA_SUPPORT_CURVE_P384
|
||||
|
||||
ECDSA 私钥存储在 eFuse 密钥块中。所需的密钥块数量取决于曲线大小:
|
||||
|
||||
- **P-256 曲线**:需要一个 eFuse 密钥块(256 位)
|
||||
- **P-384 曲线**:需要两个 eFuse 密钥块(总共 512 位)
|
||||
|
||||
对于需要两个密钥块的曲线(如 P-384),配置以下字段:
|
||||
|
||||
- 将 :cpp:member:`esp_tls_cfg_t::ecdsa_key_efuse_blk` 设置为低块号
|
||||
- 将 :cpp:member:`esp_tls_cfg_t::ecdsa_key_efuse_blk_high` 设置为高块号
|
||||
|
||||
对于单块曲线(如 P-256),只需设置 :cpp:member:`esp_tls_cfg_t::ecdsa_key_efuse_blk`,将 :cpp:member:`esp_tls_cfg_t::ecdsa_key_efuse_blk_high` 保持为 0 或不赋值。
|
||||
|
||||
.. only:: not SOC_ECDSA_SUPPORT_CURVE_P384
|
||||
|
||||
ECDSA 私钥存储在 eFuse 密钥块中。一个 eFuse 密钥块(256 位)是 P-256 曲线所需的。
|
||||
|
||||
配置以下字段:
|
||||
|
||||
- 将 :cpp:member:`esp_tls_cfg_t::ecdsa_key_efuse_blk` 设置为块号,将 :cpp:member:`esp_tls_cfg_t::ecdsa_key_efuse_blk_high` 保持为 0 或不赋值。
|
||||
|
||||
ECDSA 密钥可以通过 ``idf.py`` 脚本在外部编程。以下是关于编程 ECDSA 密钥的示例:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
@@ -44,6 +44,23 @@ HTTP 基本请求
|
||||
.use_secure_element = true,
|
||||
};
|
||||
|
||||
.. only:: SOC_ECDSA_SUPPORTED
|
||||
|
||||
为 TLS 使用 ECDSA 外设
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
ECDSA 外设可用于 HTTP 客户端连接中的底层 TLS 连接。详细内容请参考 :doc:`ESP-TLS 文档 </api-reference/protocols/esp_tls>` 中的 **在 ESP-TLS 中使用 ECDSA 外设** 小节。可以按如下方式配置 HTTP 客户端以使用 ECDSA 外设:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
esp_http_client_config_t cfg = {
|
||||
/* other configurations options */
|
||||
.use_ecdsa_peripheral = true,
|
||||
.ecdsa_key_efuse_blk = 4, // ECDSA 密钥的低 eFuse 块
|
||||
.ecdsa_key_efuse_blk_high = 5, // ECDSA 密钥的高 eFuse 块(仅 SECP384R1)
|
||||
.ecdsa_curve = ESP_TLS_ECDSA_CURVE_SECP384R1, // 设置为 ESP_TLS_ECDSA_CURVE_SECP256R1 以使用 SECP256R1 曲线
|
||||
};
|
||||
|
||||
|
||||
HTTPS 请求
|
||||
-----------
|
||||
|
||||
@@ -217,8 +217,6 @@ ESP-TLS 支持在 ESP32 系列芯片上使用 ATECC608A 加密芯片,但必须
|
||||
|
||||
ESP-TLS 支持在 {IDF_TARGET_NAME} 中使用 ECDSA 外设。使用 ECDSA 外设时,ESP-TLS 必须与 MbedTLS 一起作为底层 SSL/TLS 协议栈,并且 ECDSA 的私钥应存储在 eFuse 中。请参考 :doc:`ECDSA 指南 <../peripherals/ecdsa>`,了解如何在 eFuse 中烧写 ECDSA 密钥。
|
||||
|
||||
在 ESP-TLS 中启用 ECDSA 外设前,请将 :cpp:member:`esp_tls_cfg_t::use_ecdsa_peripheral` 设置为 `true`,并将 :cpp:member:`esp_tls_cfg_t::ecdsa_key_efuse_blk` 设置为存储了 ECDSA 密钥的 eFuse 块 ID。
|
||||
|
||||
这样就可以使用 ECDSA 外设进行私钥操作。由于客户私钥已经存储在 eFuse 中,因此无需将其传递给 :cpp:type:`esp_tls_cfg_t`。
|
||||
|
||||
.. code-block:: c
|
||||
@@ -226,7 +224,9 @@ ESP-TLS 支持在 ESP32 系列芯片上使用 ATECC608A 加密芯片,但必须
|
||||
#include "esp_tls.h"
|
||||
esp_tls_cfg_t cfg = {
|
||||
.use_ecdsa_peripheral = true,
|
||||
.ecdsa_key_efuse_blk = /* 存储 ECDSA 私钥的 eFuse 块 */,
|
||||
.ecdsa_key_efuse_blk = 4, // ECDSA 密钥的低 eFuse 块
|
||||
.ecdsa_key_efuse_blk_high = 5, // ECDSA 密钥的高 eFuse 块(仅 SECP384R1)
|
||||
.ecdsa_curve = ESP_TLS_ECDSA_CURVE_SECP384R1, // 设置为 ESP_TLS_ECDSA_CURVE_SECP256R1 以使用 SECP256R1 曲线
|
||||
};
|
||||
|
||||
.. note::
|
||||
|
||||
Reference in New Issue
Block a user