From 785e26bbd697786b7817a348c9669a9c55385786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Mi=C5=A1i=C4=87?= Date: Sat, 28 May 2022 10:51:09 +0200 Subject: [PATCH] signature: add unknown state for binary without signature --- Bootloader/Inc/signature.h | 1 + Bootloader/Src/binary_update.c | 16 +++++++++++++--- Bootloader/Src/signature.c | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Bootloader/Inc/signature.h b/Bootloader/Inc/signature.h index cd3735a..3a347b5 100644 --- a/Bootloader/Inc/signature.h +++ b/Bootloader/Inc/signature.h @@ -50,6 +50,7 @@ typedef enum detectedBinary_ENUM { detectedBinary_FIRMWARE_RAM, //!< Firmware for RAM detectedBinary_BOOTLOADER_FLASH, //!< New bootloader for FLASH detectedBinary_BOOTLOADER_RAM, //!< Bootloader for RAM + detectedBinary_UNKNOWN, //!< Not existing or unknown signature } detectedBinary_E; detectedBinary_E Signature_verification(const signature_S* signature); diff --git a/Bootloader/Src/binary_update.c b/Bootloader/Src/binary_update.c index 75d67ec..08d84dc 100644 --- a/Bootloader/Src/binary_update.c +++ b/Bootloader/Src/binary_update.c @@ -63,10 +63,14 @@ BinaryUpdate_handleDetectedBinary(detectedBinary_E detected_binary) { s_address = RAM_FIRMWARE_ADDRESS; break; - default: + case detectedBinary_UNKNOWN: + //we support unsigned binary but handle it as firmware for flash success = false; s_address = FLASH_FIRMWARE_ADDRESS; break; + + default: + break; } return success; @@ -130,9 +134,12 @@ BinaryUpdate_erase(uint32_t firmware_size) { case detectedBinary_BOOTLOADER_RAM: break; - default: + case detectedBinary_UNKNOWN: success = FlashAdapter_erase(firmware_size, s_address); break; + + default: + break; } return success; @@ -195,11 +202,14 @@ BinaryUpdate_finish(void) { boot_info.skip_bl_loop = true; break; - default: + case detectedBinary_UNKNOWN: boot_info.jump_address = FLASH_FIRMWARE_ADDRESS; boot_info.skip_bl_loop = false; success = FlashAdapter_finish(); break; + + default: + break; } boot_info.previus_binary = s_detected_binary; diff --git a/Bootloader/Src/signature.c b/Bootloader/Src/signature.c index d5f5dbd..2df8a2c 100644 --- a/Bootloader/Src/signature.c +++ b/Bootloader/Src/signature.c @@ -59,7 +59,7 @@ Signature_verification(const signature_S* signature) { } else if (0 == memcmp(&(signature->magic_key), &bl_ram_signature_magic_key, sizeof(bl_ram_signature_magic_key))) { detected_binary = detectedBinary_BOOTLOADER_RAM; } else { - detected_binary = detectedBinary_FIRMWARE_FLASH; + detected_binary = detectedBinary_UNKNOWN; } return detected_binary;