Skip to content

Commit

Permalink
Enable checks for encrypted flash in OTA
Browse files Browse the repository at this point in the history
Even if firmware is compiled without CONFIG_FLASH_ENCRYPTION_ENABLED
Rayionale: CONFIG_FLASH_ENCRYPTION_ENABLED controls whether boot loader
generates keys for encryption or not, but flash encryption can be
configured externally. With this change, it's possible to have boot
loader not generate keys but still have encryption working.
  • Loading branch information
Deomid Ryabkov committed Mar 24, 2017
1 parent 65baf50 commit 9e90287
Showing 1 changed file with 1 addition and 7 deletions.
8 changes: 1 addition & 7 deletions components/app_update/esp_ota_ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,8 @@ typedef struct ota_ops_entry_ {
const esp_partition_t *part;
uint32_t erased_size;
uint32_t wrote_size;
#ifdef CONFIG_FLASH_ENCRYPTION_ENABLED
uint8_t partial_bytes;
uint8_t partial_data[16];
#endif
LIST_ENTRY(ota_ops_entry_) entries;
} ota_ops_entry_t;

Expand Down Expand Up @@ -152,7 +150,6 @@ esp_err_t esp_ota_write(esp_ota_handle_t handle, const void *data, size_t size)
return ESP_ERR_OTA_VALIDATE_FAILED;
}

#ifdef CONFIG_FLASH_ENCRYPTION_ENABLED
if (esp_flash_encryption_enabled()) {
/* Can only write 16 byte blocks to flash, so need to cache anything else */
size_t copy_len;
Expand Down Expand Up @@ -184,7 +181,6 @@ esp_err_t esp_ota_write(esp_ota_handle_t handle, const void *data, size_t size)
memcpy(it->partial_data, data_bytes + size, it->partial_bytes);
}
}
#endif

ret = esp_partition_write(it->part, it->wrote_size, data_bytes, size);
if(ret == ESP_OK){
Expand Down Expand Up @@ -223,8 +219,7 @@ esp_err_t esp_ota_end(esp_ota_handle_t handle)
goto cleanup;
}

#ifdef CONFIG_FLASH_ENCRYPTION_ENABLED
if (it->partial_bytes > 0 && esp_flash_encryption_enabled()) {
if (it->partial_bytes > 0) {
/* Write out last 16 bytes, if necessary */
ret = esp_partition_write(&it->part, it->wrote_size, it->partial_data, 16);
if (ret != ESP_OK) {
Expand All @@ -234,7 +229,6 @@ esp_err_t esp_ota_end(esp_ota_handle_t handle)
it->wrote_size += 16;
it->partial_bytes = 0;
}
#endif

if (esp_image_basic_verify(it->part->address, true, &image_size) != ESP_OK) {
ret = ESP_ERR_OTA_VALIDATE_FAILED;
Expand Down

0 comments on commit 9e90287

Please sign in to comment.