mirror of
https://github.com/ok-home/ota_ws_update.git
synced 2025-11-13 22:03:27 +03:00
preencrypted fixed
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
2023-10-04 18:54:18,808 - Debug Adapter (main) - CRITICAL - Debug adapter -> Extension: DEBUG_ADAPTER_STARTED
|
2023-10-05 19:44:46,943 - 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-05 19:44:46,944 - 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
|
2023-10-05 19:45:24,371 - Debug Adapter (main) - CRITICAL - Debug adapter -> Extension: DEBUG_ADAPTER_STOPPED
|
||||||
|
|||||||
@@ -1,40 +1,40 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
JOa1q528gpwjG6xzEfw1bUI=
|
3YUVwrqlblfFYykcpa1p1llz
|
||||||
-----END PRIVATE KEY-----
|
-----END PRIVATE KEY-----
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, this
|
Unless required by applicable law or agreed to in writing, this
|
||||||
@@ -16,7 +16,6 @@ openssl genrsa -out rsa_key/private.pem 3072
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "esp_ota_ops.h"
|
#include "esp_ota_ops.h"
|
||||||
#include "esp_flash_partitions.h"
|
#include "esp_flash_partitions.h"
|
||||||
#include "esp_partition.h"
|
#include "esp_partition.h"
|
||||||
@@ -29,30 +28,30 @@ static const char *TAG = "ota_ws_esp";
|
|||||||
|
|
||||||
static const esp_partition_t *update_partition = NULL;
|
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 = NULL;
|
static esp_ota_handle_t update_handle = 0;
|
||||||
// pre-encrypted handle
|
// pre-encrypted handle
|
||||||
static esp_decrypt_handle_t enc_handle = NULL; // handle
|
static esp_decrypt_handle_t enc_handle = NULL; // handle
|
||||||
static esp_decrypt_cfg_t enc_cfg = {0}; // cfg
|
static esp_decrypt_cfg_t enc_cfg = {0}; // cfg
|
||||||
static pre_enc_decrypt_arg_t enc_arg = {0}; // arg
|
static pre_enc_decrypt_arg_t enc_arg = {0}; // arg
|
||||||
|
|
||||||
static int tst_c=0;
|
// 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;
|
// tst_c=0;
|
||||||
|
|
||||||
esp_err_t err;
|
esp_err_t err;
|
||||||
ESP_LOGI(TAG, "Starting OTA");
|
ESP_LOGI(TAG, "Starting OTA");
|
||||||
|
|
||||||
const esp_partition_t *configured = esp_ota_get_boot_partition();
|
const esp_partition_t *configured = esp_ota_get_boot_partition();
|
||||||
const esp_partition_t *running = esp_ota_get_running_partition();
|
const esp_partition_t *running = esp_ota_get_running_partition();
|
||||||
if(configured==NULL || running == NULL)
|
if (configured == NULL || running == NULL)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG,"OTA data not found");
|
ESP_LOGE(TAG, "OTA data not found");
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,34 +78,34 @@ esp_err_t start_ota_ws(void)
|
|||||||
image_header_was_checked = false;
|
image_header_was_checked = false;
|
||||||
|
|
||||||
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 = esp_encrypted_img_decrypt_start(&enc_cfg);
|
enc_handle = esp_encrypted_img_decrypt_start(&enc_cfg);
|
||||||
if(enc_handle == NULL)
|
if (enc_handle == NULL)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "esp_encrypted_img_decrypt_start failed ");
|
ESP_LOGE(TAG, "esp_encrypted_img_decrypt_start failed ");
|
||||||
abort_ota_ws();
|
abort_ota_ws();
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
memset(&enc_arg,0,sizeof(pre_enc_decrypt_arg_t)); //??
|
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
|
||||||
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);
|
||||||
ESP_LOGI("OTA ENC ","ret=%x len=%d",ret,enc_arg.data_out_len);
|
// ESP_LOGI("OTA ENC ","ret=%x len=%d",ret,enc_arg.data_out_len);
|
||||||
if(ret == ESP_FAIL || ret == ESP_ERR_INVALID_ARG)
|
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();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
int data_read = enc_arg.data_out_len;
|
int data_read = enc_arg.data_out_len;
|
||||||
uint8_t *ota_write_data = (uint8_t*)enc_arg.data_out;
|
uint8_t *ota_write_data = (uint8_t *)enc_arg.data_out;
|
||||||
|
|
||||||
if (image_header_was_checked == false) // first segment
|
if (image_header_was_checked == false) // first segment
|
||||||
{
|
{
|
||||||
@@ -126,29 +125,31 @@ 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;
|
// tst_c += data_read;
|
||||||
ESP_LOGI("OTA WRITE","ret=%x len=%d tst_c=%d",ret,data_read,tst_c);
|
// 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();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
esp_err_t end_ota_ws(void)
|
esp_err_t end_ota_ws(void)
|
||||||
{
|
{
|
||||||
//return ESP_OK; // debug return
|
// return ESP_OK; // debug return
|
||||||
esp_err_t ret = esp_encrypted_img_decrypt_end(enc_handle);
|
esp_err_t ret = esp_encrypted_img_decrypt_end(enc_handle);
|
||||||
if(ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "esp_encrypted_img_decrypt_end (%s)!", esp_err_to_name(ret));
|
ESP_LOGE(TAG, "esp_encrypted_img_decrypt_end (%s)!", esp_err_to_name(ret));
|
||||||
abort_ota_ws();
|
abort_ota_ws();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = esp_ota_end(update_handle);
|
ret = esp_ota_end(update_handle);
|
||||||
if (ret != ESP_OK) {
|
if (ret != ESP_OK)
|
||||||
if (ret == ESP_ERR_OTA_VALIDATE_FAILED) {
|
{
|
||||||
|
if (ret == ESP_ERR_OTA_VALIDATE_FAILED)
|
||||||
|
{
|
||||||
ESP_LOGE(TAG, "Image validation failed, image is corrupted");
|
ESP_LOGE(TAG, "Image validation failed, image is corrupted");
|
||||||
abort_ota_ws();
|
abort_ota_ws();
|
||||||
return ret;
|
return ret;
|
||||||
@@ -158,25 +159,36 @@ esp_err_t end_ota_ws(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = esp_ota_set_boot_partition(update_partition);
|
ret = esp_ota_set_boot_partition(update_partition);
|
||||||
if (ret != ESP_OK) {
|
if (ret != ESP_OK)
|
||||||
|
{
|
||||||
ESP_LOGE(TAG, "esp_ota_set_boot_partition failed (%s)!", esp_err_to_name(ret));
|
ESP_LOGE(TAG, "esp_ota_set_boot_partition failed (%s)!", esp_err_to_name(ret));
|
||||||
abort_ota_ws();
|
abort_ota_ws();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if(enc_arg.data_out)
|
if (enc_arg.data_out)
|
||||||
{ free(enc_arg.data_out);}
|
{
|
||||||
return ESP_OK;
|
free(enc_arg.data_out);
|
||||||
|
}
|
||||||
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
esp_err_t abort_ota_ws(void)
|
esp_err_t abort_ota_ws(void)
|
||||||
{
|
{
|
||||||
if(enc_handle)
|
if (enc_handle)
|
||||||
{esp_encrypted_img_decrypt_abort(enc_handle);}
|
{
|
||||||
if(update_handle)
|
ESP_LOGI("abort", "abort cmd");
|
||||||
{esp_ota_abort(update_handle);}
|
esp_encrypted_img_decrypt_abort(enc_handle);
|
||||||
|
}
|
||||||
|
if (update_handle)
|
||||||
|
{
|
||||||
|
esp_ota_abort(update_handle);
|
||||||
|
}
|
||||||
|
if (enc_arg.data_out)
|
||||||
|
{
|
||||||
|
free(enc_arg.data_out);
|
||||||
|
}
|
||||||
enc_handle = NULL;
|
enc_handle = NULL;
|
||||||
update_handle = NULL;
|
update_handle = 0;
|
||||||
if(enc_arg.data_out)
|
memset(&enc_arg, 0, sizeof(pre_enc_decrypt_arg_t));
|
||||||
{ free(enc_arg.data_out);}
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
// false - rollback disable
|
// false - rollback disable
|
||||||
@@ -186,21 +198,23 @@ bool check_ota_ws_rollback_enable(void)
|
|||||||
#ifdef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
|
#ifdef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
|
||||||
esp_ota_img_states_t ota_state_running_part;
|
esp_ota_img_states_t ota_state_running_part;
|
||||||
const esp_partition_t *running = esp_ota_get_running_partition();
|
const esp_partition_t *running = esp_ota_get_running_partition();
|
||||||
if (esp_ota_get_state_partition(running, &ota_state_running_part) == ESP_OK) {
|
if (esp_ota_get_state_partition(running, &ota_state_running_part) == ESP_OK)
|
||||||
if (ota_state_running_part == ESP_OTA_IMG_PENDING_VERIFY) {
|
{
|
||||||
|
if (ota_state_running_part == ESP_OTA_IMG_PENDING_VERIFY)
|
||||||
|
{
|
||||||
ESP_LOGI(TAG, "Running app has ESP_OTA_IMG_PENDING_VERIFY state");
|
ESP_LOGI(TAG, "Running app has ESP_OTA_IMG_PENDING_VERIFY state");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// rollback == true - rollback
|
// rollback == true - rollback
|
||||||
// rollback == false - app valid? confirm update -> no rollback
|
// rollback == false - app valid? confirm update -> no rollback
|
||||||
esp_err_t rollback_ota_ws(bool rollback)
|
esp_err_t rollback_ota_ws(bool rollback)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
|
#ifdef CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
|
||||||
if(rollback == false)
|
if (rollback == false)
|
||||||
{
|
{
|
||||||
return esp_ota_mark_app_valid_cancel_rollback(); // app valid
|
return esp_ota_mark_app_valid_cancel_rollback(); // app valid
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user