This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

failed in compiling DFU Secure Bootloader with uECC

Dear Nordic,

we are developing DFU Secure  bootloader for a nRF52832 based HW.

We are starting from the "\examples\dfu\secure_bootloader". First of all, we succesfully compiled the uECC library "micro_ecc_lib_nrf52.lib" for keil, than we added them to the keil project.

We disabled the other backend (NRF_CRYPTO_BACKEND_NRF_SW_ENABLED=0) and added NRF_DFU_DEBUG_VERSION to the global compiler #define

The issue is that when we compile the example we got 2 errors:

.\_build\nrf52832_xxaa_s132.axf: Error: L6218E: Undefined symbol g_nrf_crypto_hash_sha256_info (referred from nrf_dfu_validation.o).
.\_build\nrf52832_xxaa_s132.axf: Error: L6218E: Undefined symbol nrf_crypto_hash_calculate (referred from nrf_dfu_validation.o).

So it seems that nrf_dfu_validation.c needs those global vars defined outside, but they are not defined in uECC library.

Could you help me, please?

Parents Reply Children
  • Dear Jørgen,

    so the Secure DFU example doesn't support ECC. Could you explain me why I should include uECC library it and compile separately \external\micro-ecc\nrf52nf_keil\armgcc\micro_ecc_lib_nrf52.lib ?

    Why I need uECC if your bootloader does not support it? There iis something not clear in the tutorials...

    I read the following tutorials:

    BLE Secure DFU Bootloader
    micro_ecc backend
    Working with keys

    Thanks for help

  • Hi,

    uECC is supported for Secure DFU examples. It is one of the supported backends for performing the ECC cryptographic operations required by the solution. Before SDK 15, uECC was the preferred solution for this, but required additional SW backend for performing SHA256/Hash operations. From SDK 15.0.0, we also added nRF_Oberon backend to the nrf_crypto libraries. This Oberon backend supports ECC, but it also supports Hash/SHA256. If you stick with Oberon, you will only need a single backend, while if going for uECC, you will require one additional backend for SHA256 (either SW, Oberon, or mbedTLS).

    Best regards,
    Jørgen

Related