From 2ad67e5e17e1c5db1663ba3120dab00df5514c37 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 25 Aug 2024 18:30:29 +0200 Subject: [PATCH 01/27] Fix new Pico Keys SDK selection callback. Signed-off-by: Pol Henarejos --- src/hsm/sc_hsm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hsm/sc_hsm.c b/src/hsm/sc_hsm.c index e53858e..955b0a2 100644 --- a/src/hsm/sc_hsm.c +++ b/src/hsm/sc_hsm.c @@ -80,7 +80,8 @@ extern int cmd_bip_slip(); extern const uint8_t *ccid_atr; -int sc_hsm_select_aid(app_t *a) { +int sc_hsm_select_aid(app_t *a, uint8_t force) { + (void) force; a->process_apdu = sc_hsm_process_apdu; a->unload = sc_hsm_unload; init_sc_hsm(); From 9cc934282c47af06e335ce5b7928d0ea295b4631 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 25 Aug 2024 19:39:30 +0200 Subject: [PATCH 02/27] Fix memory boundaries check. Signed-off-by: Pol Henarejos --- src/hsm/cmd_key_domain.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hsm/cmd_key_domain.c b/src/hsm/cmd_key_domain.c index 43c9a54..3a69e51 100644 --- a/src/hsm/cmd_key_domain.c +++ b/src/hsm/cmd_key_domain.c @@ -52,6 +52,9 @@ int cmd_key_domain() { if (tf_kd_size == 0) { return SW_WRONG_P1P2(); } + if (2 * p2 >= tf_kd_size) { + return SW_INCORRECT_P1P2(); + } uint8_t *kdata = file_get_data(tf_kd), dkeks = kdata ? kdata[2 * p2] : 0, current_dkeks = kdata ? kdata[2 * p2 + 1] : 0; if (p1 == 0x0) { //dkek import @@ -90,9 +93,6 @@ int cmd_key_domain() { } else { file_t *tf = search_file(EF_XKEK + p2); - if (2 * p2 >= tf_kd_size) { - return SW_INCORRECT_P1P2(); - } if (current_dkeks == 0xff && !file_has_data(tf)) { //XKEK have always 0xff return SW_REFERENCE_NOT_FOUND(); } From 9335b088cf984742401d7d9618851aa076148519 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 25 Aug 2024 19:39:47 +0200 Subject: [PATCH 03/27] Fix non-free'd context. Signed-off-by: Pol Henarejos --- src/hsm/cmd_bip_slip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hsm/cmd_bip_slip.c b/src/hsm/cmd_bip_slip.c index 20f271c..ea08c99 100644 --- a/src/hsm/cmd_bip_slip.c +++ b/src/hsm/cmd_bip_slip.c @@ -317,8 +317,8 @@ int cmd_bip_slip() { &nodes, last_node, &hd_keytype); + mbedtls_ecp_keypair_free(&hd_context); if (r != CCID_OK) { - mbedtls_ecp_keypair_free(&hd_context); return SW_EXEC_ERROR(); } } From ef03ce4020e33fc801cacaf166b9419316951861 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 25 Aug 2024 19:40:26 +0200 Subject: [PATCH 04/27] ADd latests changes in CCID interface memory management. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index f4ad8e1..956f476 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit f4ad8e1af2e2657f3900f1e01db031d7d73d623b +Subproject commit 956f476872e25603ee063b776e3da280670cb15e From 28c63a500cedea1ef48f8786e2c8fee2d787bfce Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 25 Aug 2024 19:55:02 +0200 Subject: [PATCH 05/27] Revert "Fix non-free'd context." This reverts commit 9335b088cf984742401d7d9618851aa076148519. --- src/hsm/cmd_bip_slip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hsm/cmd_bip_slip.c b/src/hsm/cmd_bip_slip.c index ea08c99..20f271c 100644 --- a/src/hsm/cmd_bip_slip.c +++ b/src/hsm/cmd_bip_slip.c @@ -317,8 +317,8 @@ int cmd_bip_slip() { &nodes, last_node, &hd_keytype); - mbedtls_ecp_keypair_free(&hd_context); if (r != CCID_OK) { + mbedtls_ecp_keypair_free(&hd_context); return SW_EXEC_ERROR(); } } From 39a5af864963628e4a35e9431fc497381ef87983 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 25 Aug 2024 20:00:16 +0200 Subject: [PATCH 06/27] Free hd_context if error. Signed-off-by: Pol Henarejos --- src/hsm/cmd_cipher_sym.c | 1 + src/hsm/cmd_signature.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hsm/cmd_cipher_sym.c b/src/hsm/cmd_cipher_sym.c index 1c85c92..bcd714f 100644 --- a/src/hsm/cmd_cipher_sym.c +++ b/src/hsm/cmd_cipher_sym.c @@ -664,6 +664,7 @@ int cmd_cipher_sym() { secret[64] = { 0 }; mbedtls_aes_init(&ctx); if (hd_keytype != 0x3) { + mbedtls_ecdsa_free(&hd_context); return SW_INCORRECT_PARAMS(); } key_size = 32; diff --git a/src/hsm/cmd_signature.c b/src/hsm/cmd_signature.c index 0ba2dc7..fc9bf40 100644 --- a/src/hsm/cmd_signature.c +++ b/src/hsm/cmd_signature.c @@ -284,11 +284,13 @@ int cmd_signature() { } else if (p2 == ALGO_HD) { size_t olen = 0; - uint8_t buf[MBEDTLS_ECDSA_MAX_LEN]; + uint8_t buf[MBEDTLS_ECDSA_MAX_LEN] = {0}; if (hd_context.grp.id == MBEDTLS_ECP_DP_NONE) { + mbedtls_ecdsa_free(&hd_context); return SW_CONDITIONS_NOT_SATISFIED(); } if (hd_keytype != 0x1 && hd_keytype != 0x2) { + mbedtls_ecdsa_free(&hd_context); return SW_INCORRECT_PARAMS(); } md = MBEDTLS_MD_SHA256; From 604fc1aa45aa3a5744f8c58323c9b5270bab04f4 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 26 Aug 2024 02:19:07 +0200 Subject: [PATCH 07/27] Fix long writes. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 956f476..e871c52 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 956f476872e25603ee063b776e3da280670cb15e +Subproject commit e871c52f1870d6cb5fbdb47d80532ce3b20b38ca From b8002a1a0824f4f5180ac8d827de264ff9e74c1f Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 26 Aug 2024 02:33:04 +0200 Subject: [PATCH 08/27] Update ESP32 sdkdefaults Signed-off-by: Pol Henarejos --- sdkconfig.defaults | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sdkconfig.defaults b/sdkconfig.defaults index f8a8d9f..2ba60b4 100755 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -1,9 +1,7 @@ # This file was generated using idf.py save-defconfig. It can be edited manually. # Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration # -IGNORE_UNKNOWN_FILES_FOR_MANAGED_COMPONENTS=1 - -CONFIG_TINYUSB=y +IGNORE_UNKNOWN_FILES_FOR_MANAGED_COMPONENTS=y CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="pico-keys-sdk/partitions.csv" @@ -30,7 +28,7 @@ CONFIG_MBEDTLS_TLS_DISABLED=y # CONFIG_ESP_WIFI_ENABLED is not set # CONFIG_ESP_WIFI_MBEDTLS_CRYPTO is not set # CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT is not set -# CONFIG_WPA_MBEDTLS_CRYPTO is not set +# CONFIG_ESP_WIFI_MBEDTLS_CRYPTO is not set # CONFIG_MBEDTLS_PSK_MODES is not set # CONFIG_MBEDTLS_KEY_EXCHANGE_RSA is not set # CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE is not set @@ -45,8 +43,8 @@ CONFIG_MBEDTLS_TLS_DISABLED=y # CONFIG_MBEDTLS_SSL_ALPN is not set # CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS is not set # CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS is not set -# CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE is not set -# CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA is not set +# CONFIG_ESP_WIFI_ENABLE_WPA3_SAE is not set +# CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA is not set # CONFIG_ESP_WIFI_ENABLE_WPA3_SAE is not set # CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA is not set From c5714a91ab4af8833f3d577416280c3ab7c28599 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 26 Aug 2024 02:39:21 +0200 Subject: [PATCH 09/27] Fix AES key generation for 192 and 256. Fixes #48. Signed-off-by: Pol Henarejos --- tools/pico-hsm-tool.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pico-hsm-tool.py b/tools/pico-hsm-tool.py index c06e1ba..762481c 100644 --- a/tools/pico-hsm-tool.py +++ b/tools/pico-hsm-tool.py @@ -131,7 +131,7 @@ def parse_args(): parser_keygen = subparser.add_parser('keygen', help='Generates private keypair or secret key.') subparser_keygen = parser_keygen.add_subparsers(title='commands', dest='subcommand', required=True) parser_keygen_aes = subparser_keygen.add_parser('aes', help='Generates an AES key.') - parser_keygen_aes.add_argument('--size', help='Specifies the size of AES key [128, 192 or 256]',choices=[128, 192, 256], default=128) + parser_keygen_aes.add_argument('--size', help='Specifies the size of AES key [128, 192 or 256]',choices=[128, 192, 256], default=128, type=int) parser_keygen_x25519 = subparser_keygen.add_parser('x25519', help='Generates a private X25519 keypair.') parser_keygen_x448 = subparser_keygen.add_parser('x448', help='Generates a private X448 keypair.') From 36d10114714015ebd3da56a6053918a18e23568f Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 26 Aug 2024 22:42:02 +0200 Subject: [PATCH 10/27] Fix USB/CCID writes. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index e871c52..c2eda3c 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit e871c52f1870d6cb5fbdb47d80532ce3b20b38ca +Subproject commit c2eda3ca535d4f3e5d4e1b2b4d5c1edb39bc82f4 From af099cd4166e0908b0fe43fde2c81baed9b9e400 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 28 Aug 2024 16:42:46 +0200 Subject: [PATCH 11/27] Add support to RP2350. RP2350 does not support RTC, so we use AON timer instead. --- src/hsm/cmd_extras.c | 81 ++++++++++---------------------------------- 1 file changed, 18 insertions(+), 63 deletions(-) diff --git a/src/hsm/cmd_extras.c b/src/hsm/cmd_extras.c index e304f08..290318a 100644 --- a/src/hsm/cmd_extras.c +++ b/src/hsm/cmd_extras.c @@ -17,8 +17,8 @@ #include "sc_hsm.h" #include "mbedtls/ecdh.h" -#if !defined(ENABLE_EMULATION) && !defined(ESP_PLATFORM) -#include "hardware/rtc.h" +#ifdef PICO_PLATFORM +#include "pico/aon_timer.h" #else #include #include @@ -45,24 +45,14 @@ int cmd_extras() { return SW_INCORRECT_P1P2(); } if (apdu.nc == 0) { -#if !defined(ENABLE_EMULATION) && !defined(ESP_PLATFORM) - datetime_t dt; - if (!rtc_get_datetime(&dt)) { - return SW_EXEC_ERROR(); - } - res_APDU[res_APDU_size++] = dt.year >> 8; - res_APDU[res_APDU_size++] = dt.year & 0xff; - res_APDU[res_APDU_size++] = dt.month; - res_APDU[res_APDU_size++] = dt.day; - res_APDU[res_APDU_size++] = dt.dotw; - res_APDU[res_APDU_size++] = dt.hour; - res_APDU[res_APDU_size++] = dt.min; - res_APDU[res_APDU_size++] = dt.sec; +#ifdef PICO_PLATFORM + struct timespec tv; + aon_timer_get_time(&tv); #else struct timeval tv; - struct tm *tm; gettimeofday(&tv, NULL); - tm = localtime(&tv.tv_sec); +#endif + struct tm *tm = localtime(&tv.tv_sec); res_APDU[res_APDU_size++] = (tm->tm_year + 1900) >> 8; res_APDU[res_APDU_size++] = (tm->tm_year + 1900) & 0xff; res_APDU[res_APDU_size++] = tm->tm_mon; @@ -71,27 +61,12 @@ int cmd_extras() { res_APDU[res_APDU_size++] = tm->tm_hour; res_APDU[res_APDU_size++] = tm->tm_min; res_APDU[res_APDU_size++] = tm->tm_sec; -#endif } else { if (apdu.nc != 8) { return SW_WRONG_LENGTH(); } -#if !defined(ENABLE_EMULATION) && !defined(ESP_PLATFORM) - datetime_t dt; - dt.year = (apdu.data[0] << 8) | (apdu.data[1]); - dt.month = apdu.data[2]; - dt.day = apdu.data[3]; - dt.dotw = apdu.data[4]; - dt.hour = apdu.data[5]; - dt.min = apdu.data[6]; - dt.sec = apdu.data[7]; - if (!rtc_set_datetime(&dt)) { - return SW_WRONG_DATA(); - } -#else struct tm tm; - struct timeval tv; tm.tm_year = ((apdu.data[0] << 8) | (apdu.data[1])) - 1900; tm.tm_mon = apdu.data[2]; tm.tm_mday = apdu.data[3]; @@ -99,7 +74,12 @@ int cmd_extras() { tm.tm_hour = apdu.data[5]; tm.tm_min = apdu.data[6]; tm.tm_sec = apdu.data[7]; - tv.tv_sec = mktime(&tm); + time_t tv_sec = mktime(&tm); +#ifdef PICO_PLATFORM + struct timespec tv = {.tv_sec = tv_sec, .tv_nsec = 0}; + aon_timer_set_time(&tv); +#else + struct timeval tv = {.tv_sec = tv_sec, .tv_usec = 0}; settimeofday(&tv, NULL); #endif } @@ -131,16 +111,9 @@ int cmd_extras() { mbedtls_ecdh_context hkey; mbedtls_ecdh_init(&hkey); mbedtls_ecdh_setup(&hkey, MBEDTLS_ECP_DP_SECP256R1); - int ret = mbedtls_ecdh_gen_public(&hkey.ctx.mbed_ecdh.grp, - &hkey.ctx.mbed_ecdh.d, - &hkey.ctx.mbed_ecdh.Q, - random_gen, - NULL); + int ret = mbedtls_ecdh_gen_public(&hkey.ctx.mbed_ecdh.grp, &hkey.ctx.mbed_ecdh.d, &hkey.ctx.mbed_ecdh.Q, random_gen, NULL); mbedtls_mpi_lset(&hkey.ctx.mbed_ecdh.Qp.Z, 1); - ret = mbedtls_ecp_point_read_binary(&hkey.ctx.mbed_ecdh.grp, - &hkey.ctx.mbed_ecdh.Qp, - apdu.data, - apdu.nc); + ret = mbedtls_ecp_point_read_binary(&hkey.ctx.mbed_ecdh.grp, &hkey.ctx.mbed_ecdh.Qp, apdu.data, apdu.nc); if (ret != 0) { mbedtls_ecdh_free(&hkey); return SW_WRONG_DATA(); @@ -149,38 +122,20 @@ int cmd_extras() { uint8_t buf[MBEDTLS_ECP_MAX_BYTES]; size_t olen = 0; - ret = mbedtls_ecdh_calc_secret(&hkey, - &olen, - buf, - MBEDTLS_ECP_MAX_BYTES, - random_gen, - NULL); + ret = mbedtls_ecdh_calc_secret(&hkey, &olen, buf, MBEDTLS_ECP_MAX_BYTES, random_gen, NULL); if (ret != 0) { mbedtls_ecdh_free(&hkey); mbedtls_platform_zeroize(buf, sizeof(buf)); return SW_WRONG_DATA(); } - ret = mbedtls_hkdf(mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), - NULL, - 0, - buf, - olen, - mse.Qpt, - sizeof(mse.Qpt), - mse.key_enc, - sizeof(mse.key_enc)); + ret = mbedtls_hkdf(mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), NULL, 0, buf, olen, mse.Qpt, sizeof(mse.Qpt), mse.key_enc, sizeof(mse.key_enc)); mbedtls_platform_zeroize(buf, sizeof(buf)); if (ret != 0) { mbedtls_ecdh_free(&hkey); return SW_EXEC_ERROR(); } - ret = mbedtls_ecp_point_write_binary(&hkey.ctx.mbed_ecdh.grp, - &hkey.ctx.mbed_ecdh.Q, - MBEDTLS_ECP_PF_UNCOMPRESSED, - &olen, - res_APDU, - 4096); + ret = mbedtls_ecp_point_write_binary(&hkey.ctx.mbed_ecdh.grp, &hkey.ctx.mbed_ecdh.Q, MBEDTLS_ECP_PF_UNCOMPRESSED, &olen, res_APDU, 4096); mbedtls_ecdh_free(&hkey); if (ret != 0) { return SW_EXEC_ERROR(); From 1c45295d284b212e9cb5f00ac486af28eed79ae0 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 28 Aug 2024 18:44:20 +0200 Subject: [PATCH 12/27] Move ESP32 partitions file. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- sdkconfig.defaults | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index c2eda3c..6f64a6b 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit c2eda3ca535d4f3e5d4e1b2b4d5c1edb39bc82f4 +Subproject commit 6f64a6b5ac51ac8b7f44ed8679123c76d4b95eec diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 2ba60b4..fdfe143 100755 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -4,8 +4,8 @@ IGNORE_UNKNOWN_FILES_FOR_MANAGED_COMPONENTS=y CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="pico-keys-sdk/partitions.csv" -CONFIG_PARTITION_TABLE_FILENAME="pico-keys-sdk/partitions.csv" +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="pico-keys-sdk/config/esp32/partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="pico-keys-sdk/config/esp32/partitions.csv" CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_WL_SECTOR_SIZE_512=y CONFIG_WL_SECTOR_MODE_PERF=y From f7e835983559b7b7c73105991f1eeaf5b348947f Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 28 Aug 2024 18:45:48 +0200 Subject: [PATCH 13/27] Add pico_aon_timer lib. Signed-off-by: Pol Henarejos --- CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a8cd4c..d1c482a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,8 +20,6 @@ cmake_minimum_required(VERSION 3.13) if(ESP_PLATFORM) set(EXTRA_COMPONENT_DIRS src pico-keys-sdk/src) include($ENV{IDF_PATH}/tools/cmake/project.cmake) -set(USB_ITF_CCID 1) -set(USB_ITF_WCID 1) else() if(ENABLE_EMULATION) else() @@ -126,7 +124,7 @@ target_link_options(pico_hsm PUBLIC ) endif (APPLE) else() -pico_add_extra_outputs(pico_hsm) -target_link_libraries(pico_hsm PRIVATE pico_keys_sdk pico_stdlib pico_multicore hardware_flash hardware_sync hardware_adc pico_unique_id hardware_rtc tinyusb_device tinyusb_board) + +target_link_libraries(pico_hsm PRIVATE pico_keys_sdk pico_stdlib pico_multicore hardware_flash hardware_sync hardware_adc pico_unique_id pico_aon_timer tinyusb_device tinyusb_board) endif() endif() From aaf1bc2bbd1f4b3000924bf59e40717ac18a3aaa Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 28 Aug 2024 18:46:24 +0200 Subject: [PATCH 14/27] Add partitions to RP2350. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 6f64a6b..af06fb3 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 6f64a6b5ac51ac8b7f44ed8679123c76d4b95eec +Subproject commit af06fb367eef244d011b798bf04faa7e5604b852 From 09f7ed6640ad47b476c049fd52ab45faf68fd3c9 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 28 Aug 2024 18:47:51 +0200 Subject: [PATCH 15/27] Add support for RP2350. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index af06fb3..2497b63 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit af06fb367eef244d011b798bf04faa7e5604b852 +Subproject commit 2497b633ae38f8fc3435f6c147535b79d21e6b44 From 56ab770a26501d4dc637b225d343de4e0209c44f Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Thu, 29 Aug 2024 16:29:26 +0200 Subject: [PATCH 16/27] Fix partition 0 boot. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 2497b63..4cf8d77 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 2497b633ae38f8fc3435f6c147535b79d21e6b44 +Subproject commit 4cf8d7760946162f63ade189140fa71f3e35d2a1 From 3b92ce0597c3d91e016b36fc5d149f4063fc5ac8 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 30 Aug 2024 13:01:15 +0200 Subject: [PATCH 17/27] Use mutex/semaphores for emulation, like in Pico and ESP. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 4cf8d77..3235cd8 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 4cf8d7760946162f63ade189140fa71f3e35d2a1 +Subproject commit 3235cd8595366881ad6c317a007b78a64c87c824 From 5c3c45a1895e334648fe7ffdcf4a3fcfa62fbe82 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 30 Aug 2024 13:13:57 +0200 Subject: [PATCH 18/27] Add pthread lib to emulation build. Signed-off-by: Pol Henarejos --- CMakeLists.txt | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d1c482a..d054d9e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,27 +102,28 @@ if (NOT MSVC) endif() if(ENABLE_EMULATION) -if (NOT MSVC) -target_compile_options(pico_hsm PUBLIC - -fdata-sections - -ffunction-sections - ) -endif() -if(APPLE) -target_link_options(pico_hsm PUBLIC - -Wl,-dead_strip - ) -elseif(MSVC) + if (NOT MSVC) target_compile_options(pico_hsm PUBLIC - -WX - ) - - target_link_libraries(pico_hsm PUBLIC wsock32 ws2_32 Bcrypt) -else() -target_link_options(pico_hsm PUBLIC - -Wl,--gc-sections + -fdata-sections + -ffunction-sections + ) + endif() + if(APPLE) + target_link_options(pico_hsm PUBLIC + -Wl,-dead_strip + ) + elseif(MSVC) + target_compile_options(pico_hsm PUBLIC + -WX ) -endif (APPLE) + + target_link_libraries(pico_hsm PUBLIC wsock32 ws2_32 Bcrypt) + else() + target_link_options(pico_hsm PUBLIC + -Wl,--gc-sections + ) + endif (APPLE) + target_link_libraries(pico_hsm PRIVATE pthread m) else() target_link_libraries(pico_hsm PRIVATE pico_keys_sdk pico_stdlib pico_multicore hardware_flash hardware_sync hardware_adc pico_unique_id pico_aon_timer tinyusb_device tinyusb_board) From 60f471cdd742e855e7b42efdd9c7acf772b5f883 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 1 Sep 2024 18:17:53 +0200 Subject: [PATCH 19/27] Update Pico Keys SDK. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 3235cd8..f8c4106 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 3235cd8595366881ad6c317a007b78a64c87c824 +Subproject commit f8c4106367052c59717f6bac81b70e716a2ea25c From c5143df212f321ddc9a8cdaf1ce8ef2b6a67cd1b Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sun, 1 Sep 2024 18:30:16 +0200 Subject: [PATCH 20/27] Fix emulation with mutexes Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index f8c4106..3235cd8 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit f8c4106367052c59717f6bac81b70e716a2ea25c +Subproject commit 3235cd8595366881ad6c317a007b78a64c87c824 From f458750c9194c11c72943592381cc6fa80a28761 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 2 Sep 2024 09:53:20 +0200 Subject: [PATCH 21/27] Removed unused extern declaration. Signed-off-by: Pol Henarejos --- src/hsm/sc_hsm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/hsm/sc_hsm.c b/src/hsm/sc_hsm.c index 955b0a2..5cf89cc 100644 --- a/src/hsm/sc_hsm.c +++ b/src/hsm/sc_hsm.c @@ -272,8 +272,6 @@ uint16_t get_device_options() { return 0x0; } -extern uint32_t board_button_read(void); - bool wait_button_pressed() { uint32_t val = EV_PRESS_BUTTON; #ifndef ENABLE_EMULATION From 1da29f22c1e4fa213ca5f2325551d31bca89b846 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 2 Sep 2024 09:55:32 +0200 Subject: [PATCH 22/27] Fix emulation build. Signed-off-by: Pol Henarejos --- CMakeLists.txt | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d054d9e..d1c482a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,28 +102,27 @@ if (NOT MSVC) endif() if(ENABLE_EMULATION) - if (NOT MSVC) - target_compile_options(pico_hsm PUBLIC - -fdata-sections - -ffunction-sections - ) - endif() - if(APPLE) - target_link_options(pico_hsm PUBLIC - -Wl,-dead_strip - ) - elseif(MSVC) - target_compile_options(pico_hsm PUBLIC - -WX +if (NOT MSVC) +target_compile_options(pico_hsm PUBLIC + -fdata-sections + -ffunction-sections ) +endif() +if(APPLE) +target_link_options(pico_hsm PUBLIC + -Wl,-dead_strip + ) +elseif(MSVC) + target_compile_options(pico_hsm PUBLIC + -WX + ) - target_link_libraries(pico_hsm PUBLIC wsock32 ws2_32 Bcrypt) - else() - target_link_options(pico_hsm PUBLIC - -Wl,--gc-sections - ) - endif (APPLE) - target_link_libraries(pico_hsm PRIVATE pthread m) + target_link_libraries(pico_hsm PUBLIC wsock32 ws2_32 Bcrypt) +else() +target_link_options(pico_hsm PUBLIC + -Wl,--gc-sections + ) +endif (APPLE) else() target_link_libraries(pico_hsm PRIVATE pico_keys_sdk pico_stdlib pico_multicore hardware_flash hardware_sync hardware_adc pico_unique_id pico_aon_timer tinyusb_device tinyusb_board) From af23b401cb4d854b89053ee5084eefe804d5f8c8 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 2 Sep 2024 09:55:44 +0200 Subject: [PATCH 23/27] Fix BOOT button in RP2350. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 3235cd8..9f65a2c 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 3235cd8595366881ad6c317a007b78a64c87c824 +Subproject commit 9f65a2cfa024b721a6b7c16863e00558ac1a6f88 From e64eb2157c87517a3b68bd2581eae7b0bd921889 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 2 Sep 2024 10:15:50 +0200 Subject: [PATCH 24/27] Fix emulation build. Signed-off-by: Pol Henarejos --- CMakeLists.txt | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d1c482a..d054d9e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,27 +102,28 @@ if (NOT MSVC) endif() if(ENABLE_EMULATION) -if (NOT MSVC) -target_compile_options(pico_hsm PUBLIC - -fdata-sections - -ffunction-sections - ) -endif() -if(APPLE) -target_link_options(pico_hsm PUBLIC - -Wl,-dead_strip - ) -elseif(MSVC) + if (NOT MSVC) target_compile_options(pico_hsm PUBLIC - -WX - ) - - target_link_libraries(pico_hsm PUBLIC wsock32 ws2_32 Bcrypt) -else() -target_link_options(pico_hsm PUBLIC - -Wl,--gc-sections + -fdata-sections + -ffunction-sections + ) + endif() + if(APPLE) + target_link_options(pico_hsm PUBLIC + -Wl,-dead_strip + ) + elseif(MSVC) + target_compile_options(pico_hsm PUBLIC + -WX ) -endif (APPLE) + + target_link_libraries(pico_hsm PUBLIC wsock32 ws2_32 Bcrypt) + else() + target_link_options(pico_hsm PUBLIC + -Wl,--gc-sections + ) + endif (APPLE) + target_link_libraries(pico_hsm PRIVATE pthread m) else() target_link_libraries(pico_hsm PRIVATE pico_keys_sdk pico_stdlib pico_multicore hardware_flash hardware_sync hardware_adc pico_unique_id pico_aon_timer tinyusb_device tinyusb_board) From 68d2909653856e9e648e656659551367cf7718a4 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 2 Sep 2024 12:04:18 +0200 Subject: [PATCH 25/27] Add RP2350 boards. Signed-off-by: Pol Henarejos --- build_pico_hsm.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/build_pico_hsm.sh b/build_pico_hsm.sh index b190c3e..677aac2 100755 --- a/build_pico_hsm.sh +++ b/build_pico_hsm.sh @@ -6,40 +6,82 @@ VERSION_MINOR="0" rm -rf release/* cd build_release -for board in adafruit_feather_rp2040 \ +for board in 0xcb_helios \ + adafruit_feather_rp2040_usb_host \ + adafruit_feather_rp2040 \ adafruit_itsybitsy_rp2040 \ adafruit_kb2040 \ adafruit_macropad_rp2040 \ adafruit_qtpy_rp2040 \ adafruit_trinkey_qt2040 \ + amethyst_fpga \ + archi \ arduino_nano_rp2040_connect \ + cytron_maker_pi_rp2040 \ datanoisetv_rp2040_dsp \ eetree_gamekit_rp2040 \ garatronic_pybstick26_rp2040 \ + gen4_rp2350_24 \ + gen4_rp2350_24ct \ + gen4_rp2350_24t \ + gen4_rp2350_28 \ + gen4_rp2350_28ct \ + gen4_rp2350_28t \ + gen4_rp2350_32 \ + gen4_rp2350_32ct \ + gen4_rp2350_32t \ + gen4_rp2350_35 \ + gen4_rp2350_35ct \ + gen4_rp2350_35t \ + hellbender_2350A_devboard \ + ilabs_challenger_rp2350_bconnect \ + ilabs_challenger_rp2350_wifi_ble \ + ilabs_opendec02 \ + melopero_perpetuo_rp2350_lora \ melopero_shake_rp2040 \ + metrotech_xerxes_rp2040 \ + net8086_usb_interposer \ nullbits_bit_c_pro \ + phyx_rick_tny_rp2350 \ + pi-plates_micropi \ pico \ pico_w \ + pico2 \ pimoroni_badger2040 \ pimoroni_interstate75 \ pimoroni_keybow2040 \ pimoroni_motor2040 \ pimoroni_pga2040 \ + pimoroni_pga2350 \ + pimoroni_pico_plus2_rp2350 \ pimoroni_picolipo_4mb \ pimoroni_picolipo_16mb \ pimoroni_picosystem \ pimoroni_plasma2040 \ + pimoroni_plasma2350 \ pimoroni_servo2040 \ pimoroni_tiny2040 \ pimoroni_tiny2040_2mb \ + pimoroni_tiny2350 \ pololu_3pi_2040_robot \ + pololu_zumo_2040_robot \ seeed_xiao_rp2040 \ + seeed_xiao_rp2350 \ solderparty_rp2040_stamp \ solderparty_rp2040_stamp_carrier \ solderparty_rp2040_stamp_round_carrier \ + solderparty_rp2350_stamp_xl \ + solderparty_rp2350_stamp \ sparkfun_micromod \ sparkfun_promicro \ + sparkfun_promicro_rp2350 \ sparkfun_thingplus \ + switchscience_picossci2_conta_base \ + switchscience_picossci2_dev_board \ + switchscience_picossci2_micro \ + switchscience_picossci2_rp2350_breakout \ + switchscience_picossci2_tiny \ + tinycircuits_thumby_color_rp2350 \ vgaboard \ waveshare_rp2040_lcd_0.96 \ waveshare_rp2040_lcd_1.28 \ @@ -47,6 +89,10 @@ for board in adafruit_feather_rp2040 \ waveshare_rp2040_plus_4mb \ waveshare_rp2040_plus_16mb \ waveshare_rp2040_zero \ + weact_studio_rp2040_2mb \ + weact_studio_rp2040_4mb \ + weact_studio_rp2040_8mb \ + weact_studio_rp2040_16mb \ wiznet_w5100s_evb_pico do rm -rf * From 8e8bd32b4472b3bb28dd97bf47de0dc18de432f1 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 2 Sep 2024 12:04:36 +0200 Subject: [PATCH 26/27] Upgrade to version 4.2 Signed-off-by: Pol Henarejos --- build_pico_hsm.sh | 2 +- src/hsm/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build_pico_hsm.sh b/build_pico_hsm.sh index 677aac2..f67de9c 100755 --- a/build_pico_hsm.sh +++ b/build_pico_hsm.sh @@ -1,7 +1,7 @@ #!/bin/bash VERSION_MAJOR="4" -VERSION_MINOR="0" +VERSION_MINOR="2" rm -rf release/* cd build_release diff --git a/src/hsm/version.h b/src/hsm/version.h index 201d3d4..9727568 100644 --- a/src/hsm/version.h +++ b/src/hsm/version.h @@ -18,7 +18,7 @@ #ifndef __VERSION_H_ #define __VERSION_H_ -#define HSM_VERSION 0x0400 +#define HSM_VERSION 0x0402 #define HSM_VERSION_MAJOR ((HSM_VERSION >> 8) & 0xff) #define HSM_VERSION_MINOR (HSM_VERSION & 0xff) From 5ae63959d5684441bf57ce4b53a0a368f1252de1 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 2 Sep 2024 18:21:22 +0200 Subject: [PATCH 27/27] Fix LED blink. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 9f65a2c..bc34efe 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 9f65a2cfa024b721a6b7c16863e00558ac1a6f88 +Subproject commit bc34efed5c730dec8355d7482cd647b57e1597e7