From 7787e0e46870881f9afbddb4146655d8baa2ffa3 Mon Sep 17 00:00:00 2001 From: ok-home Date: Wed, 4 Oct 2023 23:17:00 +0700 Subject: [PATCH] ... --- .gitignore | 15 ++++ example_ota_ws/debug.log | 3 + example_ota_ws/dependencies.lock | 8 +- example_ota_ws/main/example_echo_ws_server.c | 1 + rsa_key/private.pem | 79 ++++++++++---------- source/ota_ws_update_esp.c | 5 ++ source/ota_ws_update_esp_preencrypted.c | 18 +++-- 7 files changed, 83 insertions(+), 46 deletions(-) create mode 100644 example_ota_ws/debug.log diff --git a/.gitignore b/.gitignore index 5da3adb..79eb416 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,18 @@ build/ example_ota_ws/sdkconfig example_ota_ws/sdkconfig.old +example_ota_ws/managed_components/espressif__esp_encrypted_img/.component_hash +example_ota_ws/managed_components/espressif__esp_encrypted_img/CHANGELOG.md +example_ota_ws/managed_components/espressif__esp_encrypted_img/CMakeLists.txt +example_ota_ws/managed_components/espressif__esp_encrypted_img/idf_component.yml +example_ota_ws/managed_components/espressif__esp_encrypted_img/image_format.png +example_ota_ws/managed_components/espressif__esp_encrypted_img/LICENSE +example_ota_ws/managed_components/espressif__esp_encrypted_img/project_include.cmake +example_ota_ws/managed_components/espressif__esp_encrypted_img/README.md +example_ota_ws/managed_components/espressif__esp_encrypted_img/include/esp_encrypted_img.h +example_ota_ws/managed_components/espressif__esp_encrypted_img/src/esp_encrypted_img.c +example_ota_ws/managed_components/espressif__esp_encrypted_img/test/CMakeLists.txt +example_ota_ws/managed_components/espressif__esp_encrypted_img/test/image.bin +example_ota_ws/managed_components/espressif__esp_encrypted_img/test/test.c +example_ota_ws/managed_components/espressif__esp_encrypted_img/test/certs/test_rsa_private_key.pem +example_ota_ws/managed_components/espressif__esp_encrypted_img/tools/esp_enc_img_gen.py diff --git a/example_ota_ws/debug.log b/example_ota_ws/debug.log new file mode 100644 index 0000000..e23ffc0 --- /dev/null +++ b/example_ota_ws/debug.log @@ -0,0 +1,3 @@ +2023-10-04 18:54:18,808 - Debug Adapter (main) - CRITICAL - Debug adapter -> Extension: DEBUG_ADAPTER_STARTED +2023-10-04 18:54:18,809 - Debug Adapter (main) - CRITICAL - Debug adapter -> Extension: DEBUG_ADAPTER_READY2CONNECT +2023-10-04 18:57:36,086 - Debug Adapter (main) - CRITICAL - Debug adapter -> Extension: DEBUG_ADAPTER_STOPPED diff --git a/example_ota_ws/dependencies.lock b/example_ota_ws/dependencies.lock index f39ac52..cd52792 100644 --- a/example_ota_ws/dependencies.lock +++ b/example_ota_ws/dependencies.lock @@ -1,9 +1,15 @@ dependencies: + espressif/esp_encrypted_img: + component_hash: d2cbae51c946ec66bbf0e62d2b406aa6c92c0c97d7be7c32fb6ca541a36d20de + source: + service_url: https://api.components.espressif.com/ + type: service + version: 2.2.0 idf: component_hash: null source: type: idf version: 5.2.0 -manifest_hash: 2ac596d0d5a708817329b21531cbf3574c7c8daaf36dca979b5dd32a78fc2857 +manifest_hash: 0ee5924d580a0ce00333564716b4649c3118e31ddbcaf0fc6cd6071b000406ab target: esp32s3 version: 1.0.0 diff --git a/example_ota_ws/main/example_echo_ws_server.c b/example_ota_ws/main/example_echo_ws_server.c index 89f433a..acda9ee 100644 --- a/example_ota_ws/main/example_echo_ws_server.c +++ b/example_ota_ws/main/example_echo_ws_server.c @@ -102,6 +102,7 @@ static httpd_handle_t start_webserver(void) { httpd_handle_t server = NULL; httpd_config_t config = HTTPD_DEFAULT_CONFIG(); + config.stack_size = 4096*4; // Start the httpd server ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port); diff --git a/rsa_key/private.pem b/rsa_key/private.pem index cb0a8b7..ea4ad28 100644 --- a/rsa_key/private.pem +++ b/rsa_key/private.pem @@ -1,39 +1,40 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +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 +JOa1q528gpwjG6xzEfw1bUI= +-----END PRIVATE KEY----- diff --git a/source/ota_ws_update_esp.c b/source/ota_ws_update_esp.c index df88d38..495d154 100644 --- a/source/ota_ws_update_esp.c +++ b/source/ota_ws_update_esp.c @@ -18,9 +18,12 @@ static const esp_partition_t *update_partition = NULL; static bool image_header_was_checked = false; static esp_ota_handle_t update_handle = 0; +//static int tstc=0; + esp_err_t start_ota_ws(void) { //return ESP_OK; // debug return + //tstc=0; esp_err_t err; ESP_LOGI(TAG, "Starting OTA"); @@ -80,10 +83,12 @@ esp_err_t write_ota_ws(int data_read, uint8_t *ota_write_data) } } esp_err_t err = esp_ota_write(update_handle, (const void *)ota_write_data, data_read); + //tstc+=data_read; if (err != ESP_OK) { return ESP_FAIL; } + //ESP_LOGI("tstc","%d",tstc); return ESP_OK; } esp_err_t end_ota_ws(void) diff --git a/source/ota_ws_update_esp_preencrypted.c b/source/ota_ws_update_esp_preencrypted.c index 39a8b7a..45ea287 100644 --- a/source/ota_ws_update_esp_preencrypted.c +++ b/source/ota_ws_update_esp_preencrypted.c @@ -32,15 +32,18 @@ static bool image_header_was_checked = false; static esp_ota_handle_t update_handle = 0; // pre-encrypted handle static esp_decrypt_handle_t enc_handle; // handle -//static esp_decrypt_cfg_t enc_cfg = {}; // cfg +static esp_decrypt_cfg_t enc_cfg = {}; // cfg static pre_enc_decrypt_arg_t enc_arg = {}; // arg +static int tst_c=0; + extern const char rsa_private_pem_start[] asm("_binary_private_pem_start"); extern const char rsa_private_pem_end[] asm("_binary_private_pem_end"); esp_err_t start_ota_ws(void) { //return ESP_OK; // debug return + tst_c=0; esp_err_t err; ESP_LOGI(TAG, "Starting OTA"); @@ -75,10 +78,10 @@ esp_err_t start_ota_ws(void) image_header_was_checked = false; - esp_decrypt_cfg_t enc_cfg; // cfg enc_cfg.rsa_priv_key = rsa_private_pem_start; enc_cfg.rsa_priv_key_len = rsa_private_pem_end-rsa_private_pem_start; + enc_handle = NULL; enc_handle = esp_encrypted_img_decrypt_start(&enc_cfg); if(enc_handle == NULL) { @@ -86,17 +89,18 @@ esp_err_t start_ota_ws(void) abort_ota_ws(); return ESP_FAIL; } + memset(&enc_arg,0,sizeof(pre_enc_decrypt_arg_t)); ESP_LOGI(TAG, "esp_ota_begin succeeded"); return ESP_OK; } esp_err_t write_ota_ws(int enc_data_read, uint8_t *enc_ota_write_data) { //return ESP_OK; // debug return - pre_enc_decrypt_arg_t enc_arg; enc_arg.data_in = (char*)enc_ota_write_data; enc_arg.data_in_len = enc_data_read; esp_err_t ret = esp_encrypted_img_decrypt_data(enc_handle, &enc_arg); - if(ret) + ESP_LOGI("OTA ENC ","ret=%x len=%d",ret,enc_arg.data_out_len); + if(ret == ESP_FAIL || ret == ESP_ERR_INVALID_ARG) { ESP_LOGE(TAG, "data decrypt err %x",ret); abort_ota_ws(); @@ -124,16 +128,18 @@ esp_err_t write_ota_ws(int enc_data_read, uint8_t *enc_ota_write_data) } } ret = esp_ota_write(update_handle, (const void *)ota_write_data, data_read); + tst_c += data_read; + ESP_LOGI("OTA WRITE","ret=%x len=%d tst_c=%d",ret,data_read,tst_c); if (ret != ESP_OK) { ESP_LOGE(TAG, "esp_ota_write err"); abort_ota_ws(); goto _ret_free; } - ret = ESP_OK; + return ESP_OK; _ret_free: - free(enc_arg.data_out); + //free(enc_arg.data_out); return ret; } esp_err_t end_ota_ws(void)