From 57042ab56ccd9d2e6a90be43ba71855c18682db8 Mon Sep 17 00:00:00 2001 From: Jon Maloney Date: Sat, 14 Aug 2021 21:02:02 +1000 Subject: [PATCH] esp_http_client: Support client key password for HTTPS connections. Closes https://github.com/espressif/esp-idf/pull/7420 Closes https://github.com/espressif/esp-idf/issues/7418 Signed-off-by: Aditya Patwardhan --- components/esp_http_client/esp_http_client.c | 4 ++++ components/esp_http_client/include/esp_http_client.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index d3f00ec184..0bcd25059a 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -610,6 +610,10 @@ esp_http_client_handle_t esp_http_client_init(const esp_http_client_config_t *co esp_transport_ssl_set_client_key_data(ssl, config->client_key_pem, strlen(config->client_key_pem)); } + if (config->client_key_password && config->client_key_password_len > 0) { + esp_transport_ssl_set_client_key_password(ssl, config->client_key_password, config->client_key_password_len); + } + if (config->skip_cert_common_name_check) { esp_transport_ssl_skip_common_name_check(ssl); } diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index 9d7b8b157b..e559b61939 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -117,6 +117,8 @@ typedef struct { const char *cert_pem; /*!< SSL server certification, PEM format as string, if the client requires to verify server */ const char *client_cert_pem; /*!< SSL client certification, PEM format as string, if the server requires to verify client */ const char *client_key_pem; /*!< SSL client key, PEM format as string, if the server requires to verify client */ + const char *client_key_password; /*!< Client key decryption password string */ + size_t client_key_password_len; /*!< String length of the password pointed to by client_key_password */ const char *user_agent; /*!< The User Agent string to send with HTTP requests */ esp_http_client_method_t method; /*!< HTTP Method */ int timeout_ms; /*!< Network timeout in milliseconds */