diff --git a/Applications/Projects/00_Project_template/main.c b/Applications/Projects/00_Project_template/main.c index 2a3f13b..f0de6f3 100644 --- a/Applications/Projects/00_Project_template/main.c +++ b/Applications/Projects/00_Project_template/main.c @@ -1,7 +1,7 @@ /** ****************************************************************************** * \file main.c - * \brief STSELIB project template + * \brief STSAFE-L010 project template * \author CS application team ****************************************************************************** * COPYRIGHT 2022 STMicroelectronics @@ -21,7 +21,7 @@ /** * @brief Main program entry point - * @note This is a template project for STSAFE-A120 examples + * @note This is a template project for STSAFE-L010 examples * Add your application code here * @retval Not applicable (infinite loop) */ diff --git a/Applications/Projects/ReadMe.md b/Applications/Projects/ReadMe.md index 83f157d..310a068 100644 --- a/Applications/Projects/ReadMe.md +++ b/Applications/Projects/ReadMe.md @@ -1,15 +1,6 @@ # Project package example -This project folder contains examples illustrating typical use cases for the STSAFE-A120. -The index preceding the project folder name illustrates the execution hierarchy of the examples. -This means that the project with a higher index must be executed after the project with a lower index. -For example, index project 03 must be run after index project 02. -Indeed, some tests configure the STSAFE-A120 according to a typical configuration for field usage. - -Dependency index between groups of examples: -- 0: Template ((No dependency) -- 1: Examples without dependency -- 2: Configuration examples without any dependency -- 3: Examples with group 2 dependency -- 4: Configuration examples without any dependency -- 5: Examples with dependency of groups 2 & 4 +This project folder contains examples illustrating typical use cases for the STSAFE-L010. + + + diff --git a/Applications/Projects/01_Device_authentication/README.md b/Applications/Projects/SPL01_Device_authentication/README.md similarity index 100% rename from Applications/Projects/01_Device_authentication/README.md rename to Applications/Projects/SPL01_Device_authentication/README.md diff --git a/Applications/Projects/SPL01_Device_authentication/STM32CubeIDE/.cproject b/Applications/Projects/SPL01_Device_authentication/STM32CubeIDE/.cproject new file mode 100644 index 0000000..f74129a --- /dev/null +++ b/Applications/Projects/SPL01_Device_authentication/STM32CubeIDE/.cproject @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Applications/Projects/01_Secure_data_storage/STM32CubeIDE/.project b/Applications/Projects/SPL01_Device_authentication/STM32CubeIDE/.project similarity index 97% rename from Applications/Projects/01_Secure_data_storage/STM32CubeIDE/.project rename to Applications/Projects/SPL01_Device_authentication/STM32CubeIDE/.project index dbaf95b..0b109da 100644 --- a/Applications/Projects/01_Secure_data_storage/STM32CubeIDE/.project +++ b/Applications/Projects/SPL01_Device_authentication/STM32CubeIDE/.project @@ -1,6 +1,6 @@ - STSAFE-L010_secure_data_storage + SPL01_Device_authentication diff --git a/Applications/Projects/01_Device_authentication/main.c b/Applications/Projects/SPL01_Device_authentication/main.c similarity index 78% rename from Applications/Projects/01_Device_authentication/main.c rename to Applications/Projects/SPL01_Device_authentication/main.c index 05b8340..00c2a64 100644 --- a/Applications/Projects/01_Device_authentication/main.c +++ b/Applications/Projects/SPL01_Device_authentication/main.c @@ -4,7 +4,7 @@ * @author CS application team * @brief STSAFE-L010 Device authentication example ****************************************************************************** - * COPYRIGHT 2022 STMicroelectronics + * COPYRIGHT 2022 STMicroelectronics * * This software is licensed under terms that can be found in the LICENSE file in * the root directory of this software component. @@ -19,9 +19,9 @@ /* Defines -------------------------------------------------------------------*/ -/* Root CA key used for STSE-L SPL01 */ +/* Root CA key used for STSAFE-L010 SPL01 */ #define CA_SELF_SIGNED_CERTIFICATE_01 \ - 0x30, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x19, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, \ + 0x30, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x19, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, \ 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x30, 0x4b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, \ 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, \ 0x15, 0x53, 0x54, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, \ @@ -64,52 +64,55 @@ */ int main(void) { stse_ReturnCode_t stse_ret = STSE_API_INVALID_PARAMETER; - stse_Handler_t stse_handler; + stse_Handler_t stse_handle; static const uint8_t ca_selfsigned_cert[] = {CA_SELF_SIGNED_CERTIFICATE_01}; /* Initialize Terminal */ apps_terminal_init(115200); - /* - Print Example instruction on terminal */ + /* ## Print Example instruction on terminal */ printf("----------------------------------------------------------------------------------------------------------------"); - printf("\n\r- STSAFE-L010 Device Authentication Example -"); + printf("\n\r- STSAFE-L010 SPL01 Device Authentication Example -"); printf("\n\r----------------------------------------------------------------------------------------------------------------"); - printf("\n\r- This example illustrates STSAFE-L010 device authentication process using Multi-Step approach. -"); + printf("\n\r- This example illustrates STSAFE-L010 device authentication process. -"); printf("\n\r- it can be taken as reference for building distant server authentication use cases. -"); printf("\n\r----------------------------------------------------------------------------------------------------------------"); - /* ## Initialize STSAFE-A1xx device handler */ - stse_ret = stse_set_default_handler_value(&stse_handler); + printf("\n\n\r ( Press key to continue )"); + uart_getc(); + + /* ## Initialize STSAFE-L010 device handler */ + stse_ret = stse_set_default_handler_value(&stse_handle); if (stse_ret != STSE_OK) { - printf(PRINT_RED "\n\r ## stse_set_default_handler_value ERROR : 0x%04X\n\r", stse_ret); + printf("\n\n\r ## stse_set_default_handler_value : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); apps_process_error(stse_ret); } - stse_handler.device_type = STSAFE_L010; - stse_handler.io.busID = 1; - stse_handler.io.BusSpeed = 100; - stse_handler.io.Devaddr = 0x0C; + stse_handle.device_type = STSAFE_L010; + stse_handle.io.BusType = STSE_BUS_TYPE_I2C; + stse_handle.io.BusSpeed = 100; + stse_handle.io.Devaddr = 0x0C; - printf("\n\r - Initialize target STSAFE-L010"); - stse_ret = stse_init(&stse_handler); + printf("\n\n\r ## Initialize target STSAFE-L010"); + stse_ret = stse_init(&stse_handle); if (stse_ret != STSE_OK) { - printf(PRINT_RED "\n\r ## stse_init ERROR : 0x%04X\n\r", stse_ret); + printf("\n\r ## stse_init : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); apps_process_error(stse_ret); } - /* ## Authenticate target STSAFE-A120 device */ + /* ## Authenticate target STSAFE-L010 device */ stse_ret = stse_device_authenticate( - &stse_handler, + &stse_handle, ca_selfsigned_cert, STSAFE_CERTIFICATE_ZONE_0, STSE_STATIC_PRIVATE_KEY_SLOT_0); if (stse_ret != STSE_OK) { - printf(PRINT_RED "\n\n\r ## Device authentication over STSE-L SPL01 CA certificate : Failed \n\r"); - printf("\n\r\t o stse_device_authenticate ERROR : 0x%04X", stse_ret); + printf("\n\n\r ## Device authentication over STSAFE-L010 SPL01 CA certificate :"PRINT_RED" FAIL "PRINT_RESET"\n\r"); + printf("\n\r\t o stse_device_authenticate"PRINT_RED": ERROR 0x%04X"PRINT_RESET, stse_ret); apps_process_error(stse_ret); } else { - printf(PRINT_GREEN "\n\n\r ## Device authentication over STSE-L SPL01 CA certificate : Successful\n\r"); + printf("\n\n\r ## Device authentication over STSAFE-L010 SPL01 CA certificate :"PRINT_GREEN" SUCCESS "PRINT_RESET"\n\r"); } while (1) { diff --git a/Applications/Projects/01_Device_authentication/stse_conf.h b/Applications/Projects/SPL01_Device_authentication/stse_conf.h similarity index 100% rename from Applications/Projects/01_Device_authentication/stse_conf.h rename to Applications/Projects/SPL01_Device_authentication/stse_conf.h diff --git a/Applications/Projects/01_Device_authentication_multi_steps/README.md b/Applications/Projects/SPL01_Device_authentication_multi_steps/README.md similarity index 100% rename from Applications/Projects/01_Device_authentication_multi_steps/README.md rename to Applications/Projects/SPL01_Device_authentication_multi_steps/README.md diff --git a/Applications/Projects/SPL01_Device_authentication_multi_steps/STM32CubeIDE/.cproject b/Applications/Projects/SPL01_Device_authentication_multi_steps/STM32CubeIDE/.cproject new file mode 100644 index 0000000..e30d1c8 --- /dev/null +++ b/Applications/Projects/SPL01_Device_authentication_multi_steps/STM32CubeIDE/.cproject @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Applications/Projects/01_Device_authentication_multi_steps/STM32CubeIDE/.project b/Applications/Projects/SPL01_Device_authentication_multi_steps/STM32CubeIDE/.project similarity index 96% rename from Applications/Projects/01_Device_authentication_multi_steps/STM32CubeIDE/.project rename to Applications/Projects/SPL01_Device_authentication_multi_steps/STM32CubeIDE/.project index 94ef227..397e4a6 100644 --- a/Applications/Projects/01_Device_authentication_multi_steps/STM32CubeIDE/.project +++ b/Applications/Projects/SPL01_Device_authentication_multi_steps/STM32CubeIDE/.project @@ -1,6 +1,6 @@ - STSAFE-L010_multi_steps_device_authentication + SPL01_Device_authentication_multi_steps diff --git a/Applications/Projects/SPL01_Device_authentication_multi_steps/main.c b/Applications/Projects/SPL01_Device_authentication_multi_steps/main.c new file mode 100644 index 0000000..496c0b6 --- /dev/null +++ b/Applications/Projects/SPL01_Device_authentication_multi_steps/main.c @@ -0,0 +1,197 @@ +/** + ****************************************************************************** + * @file main.c + * @author CS application team + * @brief STSAFE-L010 Device authentication multi steps example + ****************************************************************************** + * COPYRIGHT 2022 STMicroelectronics + * + * 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. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ + +#include "Apps_utils.h" + +/* Defines -------------------------------------------------------------------*/ + +/* Root CA key used for STSAFE-L010 SPL01 */ +#define CA_SELF_SIGNED_CERTIFICATE_01 \ + 0x30, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x19, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, \ + 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x30, 0x4b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, \ + 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, \ + 0x15, 0x53, 0x54, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, \ + 0x69, 0x63, 0x73, 0x20, 0x6e, 0x76, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, \ + 0x13, 0x53, 0x54, 0x4d, 0x5f, 0x53, 0x54, 0x53, 0x41, 0x46, 0x45, 0x2d, 0x4c, 0x5f, 0x43, 0x41, \ + 0x30, 0x30, 0x30, 0x31, 0x30, 0x20, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x36, 0x30, 0x37, 0x30, 0x30, \ + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x18, 0x0f, 0x32, 0x30, 0x35, 0x34, 0x30, 0x36, 0x30, 0x37, 0x30, \ + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, \ + 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, \ + 0x53, 0x54, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, \ + 0x63, 0x73, 0x20, 0x6e, 0x76, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x13, \ + 0x53, 0x54, 0x4d, 0x5f, 0x53, 0x54, 0x53, 0x41, 0x46, 0x45, 0x2d, 0x4c, 0x5f, 0x43, 0x41, 0x30, \ + 0x30, 0x30, 0x31, 0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x03, 0x21, 0x00, 0x84, \ + 0x47, 0xf2, 0xc0, 0x98, 0xbe, 0x15, 0xf6, 0x05, 0xc6, 0x98, 0xd5, 0xfa, 0xc5, 0x7b, 0x56, 0x0f, \ + 0x1c, 0xcf, 0x1f, 0x37, 0x9f, 0xe9, 0x88, 0xaa, 0x2f, 0xea, 0xa2, 0x93, 0xb5, 0xde, 0xd1, 0xa3, \ + 0x20, 0x30, 0x1e, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, \ + 0xff, 0x02, 0x01, 0x00, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x02, \ + 0x04, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x03, 0x41, 0x00, 0x29, 0x31, 0xa8, 0x6f, 0xed, \ + 0x6f, 0xd7, 0x54, 0x8a, 0x03, 0x20, 0x72, 0x84, 0x5d, 0x77, 0x87, 0x97, 0xe2, 0x36, 0x4b, 0x52, \ + 0x65, 0xea, 0xc1, 0xbf, 0x7b, 0x39, 0x36, 0x05, 0x75, 0x5b, 0x5d, 0x76, 0x19, 0xfd, 0x32, 0x9c, \ + 0xfd, 0x90, 0x93, 0x17, 0xf9, 0x53, 0xb4, 0xb8, 0x21, 0xdf, 0x9c, 0xe2, 0x0d, 0xa7, 0xcd, 0x74, \ + 0x5b, 0x9e, 0xf1, 0xab, 0xf7, 0x94, 0x9f, 0x4a, 0xb0, 0xfb, 0x05 + +#define STSAFE_CERTIFICATE_ZONE_0 0U +#define STSE_STATIC_PRIVATE_KEY_SLOT_0 0U + +/** + * @brief Main program entry point - STSAFE-L010 Multi-step device authentication + * @details Demonstrates detailed device authentication process with individual steps: + * - Reads device certificate from STSAFE-L010 zone 0 + * - Parses both CA and device certificates into structured format + * - Extracts and displays certificate information (subject, issuer, keys) + * - Verifies device certificate signature using CA public key + * - Generates random challenge for device + * - Requests device signature on challenge using private key + * - Verifies signature using device's public key from certificate + * @note This multi-step approach shows each authentication phase separately, + * useful for understanding the authentication protocol or implementing + * custom authentication flows for distant server scenarios + * @retval 0 on success (never reached due to infinite loop) + */ +int main(void) { + stse_ReturnCode_t stse_ret = STSE_API_INVALID_PARAMETER; + stse_Handler_t stse_handle; + PLAT_UI16 certificate_size; + stse_certificate_t parsed_stse_certificate; + stse_certificate_t parsed_ca_selfsigned_cert; + static const uint8_t ca_selfsigned_cert[] = {CA_SELF_SIGNED_CERTIFICATE_01}; + + /* Initialize Terminal */ + apps_terminal_init(115200); + + /* ## Print Example instruction on terminal */ + printf("----------------------------------------------------------------------------------------------------------------"); + printf("\n\r- STSAFE-L010 SPL01 Multi-Steps Device Authentication Example -"); + printf("\n\r----------------------------------------------------------------------------------------------------------------"); + printf("\n\r- This example illustrates STSAFE-L010 device authentication process using Multi-Step approach. -"); + printf("\n\r- it can be taken as reference for building distant server authentication use cases. -"); + printf("\n\r----------------------------------------------------------------------------------------------------------------"); + printf("\n\n\r ( Press key to continue )"); + uart_getc(); + + /* ## Initialize STSAFE-L010 device handler */ + stse_ret = stse_set_default_handler_value(&stse_handle); + if (stse_ret != STSE_OK) { + printf("\n\n\r ## stse_set_default_handler_value : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + apps_process_error(stse_ret); + } + + stse_handle.device_type = STSAFE_L010; + stse_handle.io.BusType = STSE_BUS_TYPE_I2C; + stse_handle.io.BusSpeed = 100; + stse_handle.io.Devaddr = 0x0C; + + printf("\n\n\r ## Initialize target STSAFE-L010"); + stse_ret = stse_init(&stse_handle); + if (stse_ret != STSE_OK) { + printf("\n\r ## stse_init : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + apps_process_error(stse_ret); + } + + /* ## Parse CA self-signed certificate */ + stse_ret = stse_certificate_parse(ca_selfsigned_cert, &parsed_ca_selfsigned_cert, NULL); + if (stse_ret != STSE_OK) { + printf("\n\n\r## ST CA stse_certificate_parse ERROR : 0x%04X", stse_ret); + apps_process_error(stse_ret); + } + printf("\n\n\r## CA self-signed certificate : \n\r"); + stse_certificate_print_parsed_cert(&parsed_ca_selfsigned_cert); + + /* ## Get target STSAFE-L010 Certificate */ + stse_ret = stse_get_device_certificate_size(&stse_handle, STSAFE_CERTIFICATE_ZONE_0, &certificate_size); + if (stse_ret != STSE_OK) { + printf("\n\n\r## stse_get_device_certificate_size : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + apps_process_error(stse_ret); + } + + PLAT_UI8 stse_certificate[certificate_size]; + + stse_ret = stse_get_device_certificate(&stse_handle, STSAFE_CERTIFICATE_ZONE_0, certificate_size, stse_certificate); + if (stse_ret != STSE_OK) { + printf("\n\n\r## stse_get_device_certificate : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + apps_process_error(stse_ret); + } + + /* ## Parse target STSAFE-L010 certificate */ + stse_ret = stse_certificate_parse(stse_certificate, &parsed_stse_certificate, NULL); + if (stse_ret != STSE_OK) { + printf("\n\n\r## STSAFE-L010 stse_certificate_parse : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + apps_process_error(stse_ret); + } + printf("\n\n\r## Target STSAFE-L010 certificate : \n\r"); + stse_certificate_print_parsed_cert(&parsed_stse_certificate); + + /* ## Verify STSAFE-L010 Certificate with CA self-signed Certificate */ + stse_ret = stse_certificate_is_parent(&parsed_ca_selfsigned_cert, &parsed_stse_certificate, NULL); + if (stse_ret != STSE_OK) { + printf("\n\n\r## stse_certificate_is_parent : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + apps_process_error(stse_ret); + } else { + printf("\n\n\r## Device Certificate Verified\n\r"); + } + + /* ## Extract certificate key type */ + stse_ecc_key_type_t key_type = stse_certificate_get_key_type(&parsed_stse_certificate); + PLAT_UI16 signature_size = stse_ecc_info_table[key_type].signature_size; + PLAT_UI8 signature[signature_size]; + + /* ## Generate a challenge ( aligned with key type size requirement) */ + printf("\n\n\r## Host random challenge : \n\r"); + PLAT_UI16 challenge_size = STSAFEL_ECC_SIGNATURE_CHALLENGE_LENGTH; + PLAT_UI8 challenge[challenge_size]; + apps_randomize_buffer(challenge, challenge_size); + apps_print_hex_buffer(challenge, challenge_size); + + /* ## Signature over challenge */ + stse_ret = stse_ecc_generate_signature( + &stse_handle, /* STSE handler */ + STSE_STATIC_PRIVATE_KEY_SLOT_0, /* Slot number */ + key_type, /* Certificate key type */ + challenge, /* Challenge */ + challenge_size, /* Challenge size */ + signature); /* Challenge signature */ + + if (stse_ret != STSE_OK) { + printf("\n\r## stse_ecc_generate_signature : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + apps_process_error(stse_ret); + } + printf("\n\n\r## Device signature over Host challenge: "); + apps_print_hex_buffer(signature, signature_size); + + /*## Verify The Signature of the Random Number*/ + + stse_ret = stse_certificate_verify_signature( + &parsed_stse_certificate, + challenge, + challenge_size, + signature, (signature_size >> 1), + &signature[signature_size >> 1], (signature_size >> 1)); + if (stse_ret != STSE_OK) { + printf("\n\n\r## stse_certificate_verify_signature : "PRINT_RED"ERROR 0x%04X"PRINT_RESET"\n\r", stse_ret); + } else { + printf("\n\n\r## Device Authentication : "PRINT_GREEN"SUCCESS"PRINT_RESET" (Challenge signature verified successfully)"); + } + + printf(PRINT_RESET "\n\r\n\r*#*# STMICROELECTRONICS #*#*\n\r"); + + while (1) { + // infinite loop + } + + return 0; +} diff --git a/Applications/Projects/01_Device_authentication_multi_steps/stse_conf.h b/Applications/Projects/SPL01_Device_authentication_multi_steps/stse_conf.h similarity index 100% rename from Applications/Projects/01_Device_authentication_multi_steps/stse_conf.h rename to Applications/Projects/SPL01_Device_authentication_multi_steps/stse_conf.h diff --git a/Applications/Projects/01_Echo_loop/README.md b/Applications/Projects/SPL01_Echo_loop/README.md similarity index 100% rename from Applications/Projects/01_Echo_loop/README.md rename to Applications/Projects/SPL01_Echo_loop/README.md diff --git a/Applications/Projects/01_Device_authentication/STM32CubeIDE/.cproject b/Applications/Projects/SPL01_Echo_loop/STM32CubeIDE/.cproject similarity index 97% rename from Applications/Projects/01_Device_authentication/STM32CubeIDE/.cproject rename to Applications/Projects/SPL01_Echo_loop/STM32CubeIDE/.cproject index b6b7370..c3adc10 100644 --- a/Applications/Projects/01_Device_authentication/STM32CubeIDE/.cproject +++ b/Applications/Projects/SPL01_Echo_loop/STM32CubeIDE/.cproject @@ -25,7 +25,7 @@