This commit is contained in:
ok-home
2023-10-04 23:17:00 +07:00
parent 9bd7703d05
commit 7787e0e468
7 changed files with 83 additions and 46 deletions

15
.gitignore vendored
View File

@@ -3,3 +3,18 @@
build/ build/
example_ota_ws/sdkconfig example_ota_ws/sdkconfig
example_ota_ws/sdkconfig.old 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

3
example_ota_ws/debug.log Normal file
View File

@@ -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

View File

@@ -1,9 +1,15 @@
dependencies: dependencies:
espressif/esp_encrypted_img:
component_hash: d2cbae51c946ec66bbf0e62d2b406aa6c92c0c97d7be7c32fb6ca541a36d20de
source:
service_url: https://api.components.espressif.com/
type: service
version: 2.2.0
idf: idf:
component_hash: null component_hash: null
source: source:
type: idf type: idf
version: 5.2.0 version: 5.2.0
manifest_hash: 2ac596d0d5a708817329b21531cbf3574c7c8daaf36dca979b5dd32a78fc2857 manifest_hash: 0ee5924d580a0ce00333564716b4649c3118e31ddbcaf0fc6cd6071b000406ab
target: esp32s3 target: esp32s3
version: 1.0.0 version: 1.0.0

View File

@@ -102,6 +102,7 @@ static httpd_handle_t start_webserver(void)
{ {
httpd_handle_t server = NULL; httpd_handle_t server = NULL;
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); httpd_config_t config = HTTPD_DEFAULT_CONFIG();
config.stack_size = 4096*4;
// Start the httpd server // Start the httpd server
ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port); ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port);

View File

@@ -1,39 +1,40 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- JOa1q528gpwjG6xzEfw1bUI=
-----END PRIVATE KEY-----

View File

@@ -18,9 +18,12 @@ static const esp_partition_t *update_partition = NULL;
static bool image_header_was_checked = false; static bool image_header_was_checked = false;
static esp_ota_handle_t update_handle = 0; static esp_ota_handle_t update_handle = 0;
//static int tstc=0;
esp_err_t start_ota_ws(void) esp_err_t start_ota_ws(void)
{ {
//return ESP_OK; // debug return //return ESP_OK; // debug return
//tstc=0;
esp_err_t err; esp_err_t err;
ESP_LOGI(TAG, "Starting OTA"); 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); esp_err_t err = esp_ota_write(update_handle, (const void *)ota_write_data, data_read);
//tstc+=data_read;
if (err != ESP_OK) if (err != ESP_OK)
{ {
return ESP_FAIL; return ESP_FAIL;
} }
//ESP_LOGI("tstc","%d",tstc);
return ESP_OK; return ESP_OK;
} }
esp_err_t end_ota_ws(void) esp_err_t end_ota_ws(void)

View File

@@ -32,15 +32,18 @@ static bool image_header_was_checked = false;
static esp_ota_handle_t update_handle = 0; static esp_ota_handle_t update_handle = 0;
// pre-encrypted handle // pre-encrypted handle
static esp_decrypt_handle_t enc_handle; // 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 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_start[] asm("_binary_private_pem_start");
extern const char rsa_private_pem_end[] asm("_binary_private_pem_end"); extern const char rsa_private_pem_end[] asm("_binary_private_pem_end");
esp_err_t start_ota_ws(void) esp_err_t start_ota_ws(void)
{ {
//return ESP_OK; // debug return //return ESP_OK; // debug return
tst_c=0;
esp_err_t err; esp_err_t err;
ESP_LOGI(TAG, "Starting OTA"); ESP_LOGI(TAG, "Starting OTA");
@@ -75,10 +78,10 @@ esp_err_t start_ota_ws(void)
image_header_was_checked = false; 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 = rsa_private_pem_start;
enc_cfg.rsa_priv_key_len = rsa_private_pem_end-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); enc_handle = esp_encrypted_img_decrypt_start(&enc_cfg);
if(enc_handle == NULL) if(enc_handle == NULL)
{ {
@@ -86,17 +89,18 @@ esp_err_t start_ota_ws(void)
abort_ota_ws(); abort_ota_ws();
return ESP_FAIL; return ESP_FAIL;
} }
memset(&enc_arg,0,sizeof(pre_enc_decrypt_arg_t));
ESP_LOGI(TAG, "esp_ota_begin succeeded"); ESP_LOGI(TAG, "esp_ota_begin succeeded");
return ESP_OK; return ESP_OK;
} }
esp_err_t write_ota_ws(int enc_data_read, uint8_t *enc_ota_write_data) esp_err_t write_ota_ws(int enc_data_read, uint8_t *enc_ota_write_data)
{ {
//return ESP_OK; // debug return //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 = (char*)enc_ota_write_data;
enc_arg.data_in_len = enc_data_read; enc_arg.data_in_len = enc_data_read;
esp_err_t ret = esp_encrypted_img_decrypt_data(enc_handle, &enc_arg); 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); ESP_LOGE(TAG, "data decrypt err %x",ret);
abort_ota_ws(); 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); 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) if (ret != ESP_OK)
{ {
ESP_LOGE(TAG, "esp_ota_write err"); ESP_LOGE(TAG, "esp_ota_write err");
abort_ota_ws(); abort_ota_ws();
goto _ret_free; goto _ret_free;
} }
ret = ESP_OK; return ESP_OK;
_ret_free: _ret_free:
free(enc_arg.data_out); //free(enc_arg.data_out);
return ret; return ret;
} }
esp_err_t end_ota_ws(void) esp_err_t end_ota_ws(void)