STM32CubeWL/Projects/NUCLEO-WL55JC/Applications/KMS/KMS_Blob_Example
Rania JMAI 9d77b66f25 Release v1.3.1 2025-01-30 09:55:17 +01:00
..
EWARM Release v1.3.1 2025-01-30 09:55:17 +01:00
Inc Release v1.3.1 2025-01-30 09:55:17 +01:00
MDK-ARM Release v1.3.1 2025-01-30 09:55:17 +01:00
STM32CubeIDE Release v1.3.1 2025-01-30 09:55:17 +01:00
Src Release v1.3.1 2025-01-30 09:55:17 +01:00
.extSettings Release v1.3.1 2025-01-30 09:55:17 +01:00
KMS_Blob_Example.ioc Release v1.3.1 2025-01-30 09:55:17 +01:00
readme.txt Release v1.3.1 2025-01-30 09:55:17 +01:00

readme.txt

/**
  @page KMS_Blob_Example KMS application

  @verbatim
  ******************************************************************************
  * @file    Applications/KMS/KMS_Blob_Example/readme.txt 
  * @author  MCD Application Team
  * @brief   Description of the KMS_Blob_Example application.
  ******************************************************************************
  *
  * Copyright (c) 2020 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file in
  * the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  @endverbatim

@par Application Description 

How to use the KMS middleware provisionning capabilities (C_STM_ImportBlob API).

Application configuration:
KMS is configured with blob importation embedded keys:
- one AES 128 bits key
- one ECDSA P256 curve public key

Application execution:
The application starts by waiting for a blob image to import. The blob image (generated by KMS_Blob_Binary
application example) has to be transferred to the target through the Hyperterminal using Ymodem protocol.
Once this transfer is completed, the application installs the keys embedded into the blob image.
Then, the application uses one imported AES key to encrypt and decrypt a clear text message.

For debug: A terminal connected with the board via VCOM is needed to see the execution log and test status.

Connection needed:
Connect ST-Link cable to the PC USB port to display data on the HyperTerminal.
A virtual COM port will then appear in the HyperTerminal.
  - Hyperterminal configuration:
    - Data Length = 8 bits
    - One Stop Bit
    - Parity: none
    - BaudRate = 115200 baud
    - Flow control: None

NUCLEO-WL55JC RevC board LED3 is also used to report test status:
  - LED3 is turned on at the end of the execution when all completed successfully
  - LED3 is blinking twice per second when an error occurred

@par Keywords

Cryptography, KMS, Provisioning

@par Directory contents 

  - KMS/KMS_Blob_Example/Inc/stm32wlxx_nucleo_conf.h       BSP configuration file
  - KMS/KMS_Blob_Example/Inc/stm32wlxx_hal_conf.h          HAL configuration file
  - KMS/KMS_Blob_Example/Inc/stm32wlxx_it.h                Interrupt handlers header file
  - KMS/KMS_Blob_Example/Inc/app_kms.h                     Header for app_kms.c module
  - KMS/KMS_Blob_Example/Inc/ca_conf.h                     Cryptographic configuration file
  - KMS/KMS_Blob_Example/Inc/ca_low_level.h                Header for ca_low_level.c module
  - KMS/KMS_Blob_Example/Inc/com.h                         Header for com.c module
  - KMS/KMS_Blob_Example/Inc/common.h                      Header for common.c module
  - KMS/KMS_Blob_Example/Inc/flash_if.h                    Header for flash_if.c module
  - KMS/KMS_Blob_Example/Inc/kms_config.h                  KMS configuration file
  - KMS/KMS_Blob_Example/Inc/kms_low_level.h               Header for kms_low_level.c module
  - KMS/KMS_Blob_Example/Inc/kms_mem_pool_def.h            KMS memory pool definition file
  - KMS/KMS_Blob_Example/Inc/kms_platf_objects_config.h    KMS embedded objects definition files
  - KMS/KMS_Blob_Example/Inc/kms_platf_objects_interface.h KMS embedded objects interface files
  - KMS/KMS_Blob_Example/Inc/main.h                        Header for main.c module
  - KMS/KMS_Blob_Example/Inc/mbedtls_config.h              MBED crypto configuration file
  - KMS/KMS_Blob_Example/Inc/nvms_low_level.h              Header for nvms_low_level.c module
  - KMS/KMS_Blob_Example/Inc/ymodem.h                      Header for ymodem.c module
  - KMS/KMS_Blob_Example/Src/stm32wlxx_it.c                Interrupt handlers
  - KMS/KMS_Blob_Example/Src/stm32wlxx_hal_msp.c           HAL MSP module
  - KMS/KMS_Blob_Example/Src/app_kms.c                     KMS application
  - KMS/KMS_Blob_Example/Src/ca_low_level.c                Cryptographic low level source file
  - KMS/KMS_Blob_Example/Src/com.c                         Communication module file
  - KMS/KMS_Blob_Example/Src/common.c                      Common utilities file
  - KMS/KMS_Blob_Example/Src/flash_if.c                    Flash interface file
  - KMS/KMS_Blob_Example/Src/kms_low_level.c               KMS low level source file
  - KMS/KMS_Blob_Example/Src/kms_object_update_app.c       KMS blob image download and import source file
  - KMS/KMS_Blob_Example/Src/main.c                        Main program
  - KMS/KMS_Blob_Example/Src/nvms_low_level.c              NVMS low level source file
  - KMS/KMS_Blob_Example/Src/system_stm32wlxx.c            STM32WLxx system source file
  - KMS/KMS_Blob_Example/Src/ymodem.c                      Ymodem communication protocol source file


@par Hardware and Software environment

  - This application runs on STM32WL55xx devices.
    
  - This application has been tested with NUCLEO-WL55JC RevC board and can be
    easily tailored to any other supported device and development board.
  - This application needs a terminal emulator.



@par How to use it ? 

In order to make the program work, you must do the following :
 - Open your preferred toolchain
 - Rebuild all files and load your image into target memory
 - Run the application

 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */