From e480d578813a24e609967aa07009e7dcc1d8e794 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 4 Sep 2023 17:26:53 +0200 Subject: [PATCH 01/13] Update HSM SDK pointer. Signed-off-by: Pol Henarejos --- pico-hsm-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pico-hsm-sdk b/pico-hsm-sdk index c7849e0..7944076 160000 --- a/pico-hsm-sdk +++ b/pico-hsm-sdk @@ -1 +1 @@ -Subproject commit c7849e0bdaa49ddd7ab9773875a975d71b991177 +Subproject commit 794407686ad0f9c5935806ae66a95c8b43c6cb8f From 88f5bbfd58576a6c513e48fba3bf0056b62bdd00 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 5 Sep 2023 00:18:06 +0200 Subject: [PATCH 02/13] Added support for Ed25519. Signed-off-by: Pol Henarejos --- src/openpgp/openpgp.c | 83 ++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/src/openpgp/openpgp.c b/src/openpgp/openpgp.c index f65d69f..f202df4 100644 --- a/src/openpgp/openpgp.c +++ b/src/openpgp/openpgp.c @@ -29,6 +29,7 @@ #include "asn1.h" #include "usb.h" #include "ccid/ccid.h" +#include "mbedtls/eddsa.h" bool has_pw1 = false; bool has_pw2 = false; @@ -585,6 +586,7 @@ int parse_pw_status(const file_t *f, int mode) { #define ALGO_RSA 0x01 #define ALGO_ECDH 0x12 #define ALGO_ECDSA 0x13 +#define ALGO_EDDSA 0x16 #define ALGO_AES 0x70 #define ALGO_AES_128 0x71 #define ALGO_AES_192 0x72 @@ -691,6 +693,12 @@ static const uint8_t algorithm_attr_cv25519[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x97, 0x55, 0x01, 0x05, 0x01 }; +static const uint8_t algorithm_attr_ed25519[] = { + 10, + ALGO_EDDSA, + 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01 + }; + int parse_algo(const uint8_t *algo, uint16_t tag) { res_APDU[res_APDU_size++] = tag & 0xff; memcpy(res_APDU + res_APDU_size, algo, algo[0] + 1); @@ -716,6 +724,7 @@ int parse_algoinfo(const file_t *f, int mode) { datalen += parse_algo(algorithm_attr_bp256r1, EF_ALGO_SIG); datalen += parse_algo(algorithm_attr_bp384r1, EF_ALGO_SIG); datalen += parse_algo(algorithm_attr_bp512r1, EF_ALGO_SIG); + datalen += parse_algo(algorithm_attr_ed25519, EF_ALGO_SIG); datalen += parse_algo(algorithm_attr_rsa1k, EF_ALGO_DEC); datalen += parse_algo(algorithm_attr_rsa2k, EF_ALGO_DEC); @@ -742,6 +751,7 @@ int parse_algoinfo(const file_t *f, int mode) { datalen += parse_algo(algorithm_attr_bp256r1, EF_ALGO_AUT); datalen += parse_algo(algorithm_attr_bp384r1, EF_ALGO_AUT); datalen += parse_algo(algorithm_attr_bp512r1, EF_ALGO_AUT); + datalen += parse_algo(algorithm_attr_ed25519, EF_ALGO_AUT); uint16_t lpdif = res_APDU + res_APDU_size - lp - 2; *lp++ = lpdif >> 8; *lp++ = lpdif & 0xff; @@ -1167,8 +1177,8 @@ int store_keys(void *key_ctx, int type, uint16_t key_id) { mbedtls_mpi_write_binary(&rsa->P, kdata, key_size / 2); mbedtls_mpi_write_binary(&rsa->Q, kdata + key_size / 2, key_size / 2); } - else if (type == ALGO_ECDSA || type == ALGO_ECDH) { - mbedtls_ecdsa_context *ecdsa = (mbedtls_ecdsa_context *) key_ctx; + else if (type == ALGO_ECDSA || type == ALGO_ECDH || type == ALGO_EDDSA) { + mbedtls_ecp_keypair *ecdsa = (mbedtls_ecp_keypair *) key_ctx; key_size = mbedtls_mpi_size(&ecdsa->d); kdata[0] = ecdsa->grp.id & 0xff; mbedtls_ecp_write_key(ecdsa, kdata + 1, key_size); @@ -1235,7 +1245,7 @@ int load_private_key_rsa(mbedtls_rsa_context *ctx, file_t *fkey) { return CCID_OK; } -int load_private_key_ecdsa(mbedtls_ecdsa_context *ctx, file_t *fkey) { +int load_private_key_ecdsa(mbedtls_ecp_keypair *ctx, file_t *fkey) { int key_size = file_get_size(fkey); uint8_t kdata[67]; //Worst case, 521 bit + 1byte memcpy(kdata, file_get_data(fkey), key_size); @@ -1245,7 +1255,7 @@ int load_private_key_ecdsa(mbedtls_ecdsa_context *ctx, file_t *fkey) { mbedtls_ecp_group_id gid = kdata[0]; int r = mbedtls_ecp_read_key(gid, ctx, kdata + 1, key_size - 1); if (r != 0) { - mbedtls_ecdsa_free(ctx); + mbedtls_ecp_keypair_free(ctx); return CCID_EXEC_ERROR; } return CCID_OK; @@ -1288,6 +1298,9 @@ mbedtls_ecp_group_id get_ec_group_id_from_attr(const uint8_t *algo, size_t algo_ else if (memcmp(algorithm_attr_x448 + 2, algo, algo_len) == 0) { return MBEDTLS_ECP_DP_CURVE448; } + else if (memcmp(algorithm_attr_ed25519 + 2, algo, algo_len) == 0) { + return MBEDTLS_ECP_DP_ED25519; + } return MBEDTLS_ECP_DP_NONE; } @@ -1306,7 +1319,7 @@ void make_rsa_response(mbedtls_rsa_context *rsa) { put_uint16_t(res_APDU_size - 5, res_APDU + 3); } -void make_ecdsa_response(mbedtls_ecdsa_context *ecdsa) { +void make_ecdsa_response(mbedtls_ecp_keypair *ecdsa) { uint8_t pt[MBEDTLS_ECP_MAX_PT_LEN]; size_t plen = 0; mbedtls_ecp_point_write_binary(&ecdsa->grp, @@ -1387,23 +1400,23 @@ static int cmd_keypair_gen() { return SW_EXEC_ERROR(); } } - else if (algo[0] == ALGO_ECDH || algo[0] == ALGO_ECDSA) { + else if (algo[0] == ALGO_ECDH || algo[0] == ALGO_ECDSA || algo[0] == ALGO_EDDSA) { printf("KEYPAIR ECDSA\r\n"); mbedtls_ecp_group_id gid = get_ec_group_id_from_attr(algo + 1, algo_len - 1); if (gid == MBEDTLS_ECP_DP_NONE) { return SW_FUNC_NOT_SUPPORTED(); } - mbedtls_ecdsa_context ecdsa; - mbedtls_ecdsa_init(&ecdsa); + mbedtls_ecp_keypair ecdsa; + mbedtls_ecp_keypair_init(&ecdsa); uint8_t index = 0; r = mbedtls_ecdsa_genkey(&ecdsa, gid, random_gen, &index); if (r != 0) { - mbedtls_ecdsa_free(&ecdsa); + mbedtls_ecp_keypair_free(&ecdsa); return SW_EXEC_ERROR(); } r = store_keys(&ecdsa, algo[0], fid); make_ecdsa_response(&ecdsa); - mbedtls_ecdsa_free(&ecdsa); + mbedtls_ecp_keypair_free(&ecdsa); if (r != CCID_OK) { return SW_EXEC_ERROR(); } @@ -1517,7 +1530,7 @@ int rsa_sign(mbedtls_rsa_context *ctx, return r; } -int ecdsa_sign(mbedtls_ecdsa_context *ctx, +int ecdsa_sign(mbedtls_ecp_keypair *ctx, const uint8_t *data, size_t data_len, uint8_t *out, @@ -1525,7 +1538,14 @@ int ecdsa_sign(mbedtls_ecdsa_context *ctx, mbedtls_mpi ri, si; mbedtls_mpi_init(&ri); mbedtls_mpi_init(&si); - int r = mbedtls_ecdsa_sign(&ctx->grp, &ri, &si, &ctx->d, data, data_len, random_gen, NULL); + + int r = 0; + if (ctx->grp.id == MBEDTLS_ECP_DP_ED25519) { + r = mbedtls_eddsa_sign(&ctx->grp, &ri, &si, &ctx->d, data, data_len, MBEDTLS_EDDSA_PURE, NULL, 0, random_gen, NULL); + } + else { + r = mbedtls_ecdsa_sign(&ctx->grp, &ri, &si, &ctx->d, data, data_len, random_gen, NULL); + } if (r == 0) { size_t plen = (ctx->grp.nbits + 7) / 8; mbedtls_mpi_write_binary(&ri, out, plen); @@ -1647,18 +1667,18 @@ static int cmd_pso() { res_APDU_size = olen; } } - else if (algo[0] == ALGO_ECDH || algo[0] == ALGO_ECDSA) { + else if (algo[0] == ALGO_ECDH || algo[0] == ALGO_ECDSA || algo[0] == ALGO_EDDSA) { if (P1(apdu) == 0x9E && P2(apdu) == 0x9A) { - mbedtls_ecdsa_context ctx; - mbedtls_ecdsa_init(&ctx); + mbedtls_ecp_keypair ctx; + mbedtls_ecp_keypair_init(&ctx); r = load_private_key_ecdsa(&ctx, ef); if (r != CCID_OK) { - mbedtls_ecdsa_free(&ctx); + mbedtls_ecp_keypair_free(&ctx); return SW_EXEC_ERROR(); } size_t olen = 0; r = ecdsa_sign(&ctx, apdu.data, apdu.nc, res_APDU, &olen); - mbedtls_ecdsa_free(&ctx); + mbedtls_ecp_keypair_free(&ctx); if (r != 0) { return SW_EXEC_ERROR(); } @@ -1794,17 +1814,17 @@ static int cmd_internal_aut() { } res_APDU_size = olen; } - else if (algo[0] == ALGO_ECDH || algo[0] == ALGO_ECDSA) { - mbedtls_ecdsa_context ctx; - mbedtls_ecdsa_init(&ctx); + else if (algo[0] == ALGO_ECDH || algo[0] == ALGO_ECDSA || algo[0] == ALGO_EDDSA) { + mbedtls_ecp_keypair ctx; + mbedtls_ecp_keypair_init(&ctx); r = load_private_key_ecdsa(&ctx, ef); if (r != CCID_OK) { - mbedtls_ecdsa_free(&ctx); + mbedtls_ecp_keypair_free(&ctx); return SW_EXEC_ERROR(); } size_t olen = 0; r = ecdsa_sign(&ctx, apdu.data, apdu.nc, res_APDU, &olen); - mbedtls_ecdsa_free(&ctx); + mbedtls_ecp_keypair_free(&ctx); if (r != 0) { return SW_EXEC_ERROR(); } @@ -1974,8 +1994,8 @@ static int cmd_import_data() { return SW_EXEC_ERROR(); } } - else if (algo[0] == ALGO_ECDSA || algo[0] == ALGO_ECDH) { - mbedtls_ecdsa_context ecdsa; + else if (algo[0] == ALGO_ECDSA || algo[0] == ALGO_ECDH || algo[0] == ALGO_EDDSA) { + mbedtls_ecp_keypair ecdsa; if (p[1] == NULL || len[1] == 0) { return SW_WRONG_DATA(); } @@ -1983,20 +2003,25 @@ static int cmd_import_data() { if (gid == MBEDTLS_ECP_DP_NONE) { return SW_FUNC_NOT_SUPPORTED(); } - mbedtls_ecdsa_init(&ecdsa); + mbedtls_ecp_keypair_init(&ecdsa); r = mbedtls_ecp_read_key(gid, &ecdsa, p[1], len[1]); if (r != 0) { - mbedtls_ecdsa_free(&ecdsa); + mbedtls_ecp_keypair_free(&ecdsa); return SW_EXEC_ERROR(); } - r = mbedtls_ecp_mul(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, &ecdsa.grp.G, random_gen, NULL); + if (ecdsa.grp.id == MBEDTLS_ECP_DP_ED25519) { + r = mbedtls_ecp_point_edwards(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, random_gen, NULL); + } + else { + r = mbedtls_ecp_mul(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, &ecdsa.grp.G, random_gen, NULL); + } if (r != 0) { - mbedtls_ecdsa_free(&ecdsa); + mbedtls_ecp_keypair_free(&ecdsa); return SW_EXEC_ERROR(); } r = store_keys(&ecdsa, ALGO_ECDSA, fid); make_ecdsa_response(&ecdsa); - mbedtls_ecdsa_free(&ecdsa); + mbedtls_ecp_keypair_free(&ecdsa); if (r != CCID_OK) { return SW_EXEC_ERROR(); } From 939c7fa7ab95536ac93f4255010d60b5a5927a48 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 5 Sep 2023 01:10:52 +0200 Subject: [PATCH 03/13] Add workflow to eddsa branch. Signed-off-by: Pol Henarejos --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0e57754..66e8795 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,10 +14,10 @@ name: "Emulation and test" on: workflow_dispatch: push: - branches: [ "main" ] + branches: [ "main", "eddsa" ] pull_request: # The branches below must be a subset of the branches above - branches: [ "main" ] + branches: [ "main", "eddsa" ] schedule: - cron: '23 5 * * 4' From cb2d7845228545eb6851a19d5ac9f2bd067fd853 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 17:38:01 +0200 Subject: [PATCH 04/13] Update modules Signed-off-by: Pol Henarejos --- .gitmodules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 6e06e69..f25a157 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "pico-hsm-sdk"] - path = pico-hsm-sdk - url = ../pico-hsm-sdk +[submodule "pico-keys-sdk"] + path = pico-keys-sdk + url = ../pico-keys-sdk From 90af0da7a0c719e15b28f5c22e73ddd8d092e2f2 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 17:43:41 +0200 Subject: [PATCH 05/13] Rename Signed-off-by: Pol Henarejos --- pico-keys-sdk | 1 + 1 file changed, 1 insertion(+) create mode 160000 pico-keys-sdk diff --git a/pico-keys-sdk b/pico-keys-sdk new file mode 160000 index 0000000..739e9f1 --- /dev/null +++ b/pico-keys-sdk @@ -0,0 +1 @@ +Subproject commit 739e9f1b98c4f8aacedfa67a11df87d773ebf776 From 88e19bae3575269d98ee5e6b22e30470fb821942 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 17:44:08 +0200 Subject: [PATCH 06/13] Update 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 739e9f1..75ab3ec 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 739e9f1b98c4f8aacedfa67a11df87d773ebf776 +Subproject commit 75ab3ec70e93387cc16e9da9fd28874e1932d0c3 From 631ffbe4a72b33bd51288f4421b767facf781ced Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 17:46:04 +0200 Subject: [PATCH 07/13] Update cmake Signed-off-by: Pol Henarejos --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5373849..e8cef21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,7 @@ set(INCLUDES ${INCLUDES} ) set(USB_ITF_CCID 1) -include(pico-hsm-sdk/pico_hsm_sdk_import.cmake) +include(pico-keys-sdk/pico_keys_sdk_import.cmake) target_sources(pico_openpgp PUBLIC ${SOURCES}) target_include_directories(pico_openpgp PUBLIC ${INCLUDES}) From 2fd07a7dc37a7cdb48b5ee6da7e47e98898e01d5 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 19:22:30 +0200 Subject: [PATCH 08/13] Add EDDSA algo. Signed-off-by: Pol Henarejos --- src/openpgp/openpgp.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openpgp/openpgp.h b/src/openpgp/openpgp.h index 513c366..ce33599 100644 --- a/src/openpgp/openpgp.h +++ b/src/openpgp/openpgp.h @@ -51,6 +51,7 @@ extern int pin_reset_retries(const file_t *pin, bool force); #define ALGO_RSA 0x01 #define ALGO_ECDH 0x12 #define ALGO_ECDSA 0x13 +#define ALGO_EDDSA 0x16 #define ALGO_AES 0x70 #define ALGO_AES_128 0x71 #define ALGO_AES_192 0x72 From 77299f7047ed6dd1d8750eaa5ad898ec81614cd1 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 19:23:19 +0200 Subject: [PATCH 09/13] Add esp32 cmake. Signed-off-by: Pol Henarejos --- src/openpgp/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/openpgp/CMakeLists.txt diff --git a/src/openpgp/CMakeLists.txt b/src/openpgp/CMakeLists.txt new file mode 100644 index 0000000..a0fff70 --- /dev/null +++ b/src/openpgp/CMakeLists.txt @@ -0,0 +1,6 @@ +idf_component_register( + SRCS ${SOURCES} + INCLUDE_DIRS . ../../pico-keys-sdk/src ../../pico-keys-sdk/src/fs ../../pico-keys-sdk/src/rng ../../pico-keys-sdk/src/usb ../../pico-keys-sdk/tinycbor/src + REQUIRES bootloader_support esp_partition esp_tinyusb zorxx__neopixel mbedtls efuse +) +idf_component_set_property(${COMPONENT_NAME} WHOLE_ARCHIVE ON) From 09af4625a95a1cd3f875205e508f758cb6753272 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 20:02:06 +0200 Subject: [PATCH 10/13] Fix indentation. Signed-off-by: Pol Henarejos --- CMakeLists.txt | 102 ++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f4bfd13..1207dbd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,81 +18,79 @@ 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(EXTRA_COMPONENT_DIRS src pico-keys-sdk/src) + include($ENV{IDF_PATH}/tools/cmake/project.cmake) else() + if(ENABLE_EMULATION) + else() + include(pico_sdk_import.cmake) + endif() - if(ENABLE_EMULATION) - else() - include(pico_sdk_import.cmake) - endif() + project(pico_openpgp C CXX ASM) + set(CMAKE_C_STANDARD 11) + set(CMAKE_CXX_STANDARD 17) - project(pico_openpgp C CXX ASM) + if(ENABLE_EMULATION) + else() + pico_sdk_init() + endif() - set(CMAKE_C_STANDARD 11) - set(CMAKE_CXX_STANDARD 17) - - if(ENABLE_EMULATION) - else() - pico_sdk_init() - endif() - - add_executable(pico_openpgp) + add_executable(pico_openpgp) endif() set(SOURCES ${SOURCES} - ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/openpgp.c - ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/files.c - ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/piv.c - ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/management.c + ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/openpgp.c + ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/files.c + ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/piv.c + ${CMAKE_CURRENT_LIST_DIR}/src/openpgp/management.c ) set(USB_ITF_CCID 1) set(USB_ITF_WCID 1) include(pico-keys-sdk/pico_keys_sdk_import.cmake) if(ESP_PLATFORM) - project(pico_openpgp) + project(pico_openpgp) endif() set(INCLUDES ${INCLUDES} - ${CMAKE_CURRENT_LIST_DIR}/src/openpgp + ${CMAKE_CURRENT_LIST_DIR}/src/openpgp ) if(NOT ESP_PLATFORM) - target_sources(pico_openpgp PUBLIC ${SOURCES}) - target_include_directories(pico_openpgp PUBLIC ${INCLUDES}) + target_sources(pico_openpgp PUBLIC ${SOURCES}) + target_include_directories(pico_openpgp PUBLIC ${INCLUDES}) + target_compile_options(pico_openpgp PUBLIC + -Wall + ) + if(NOT MSVC) target_compile_options(pico_openpgp PUBLIC - -Wall + -Werror ) + endif() + + if(ENABLE_EMULATION) if(NOT MSVC) - target_compile_options(pico_openpgp PUBLIC - -Werror - ) + target_compile_options(pico_openpgp PUBLIC + -fdata-sections + -ffunction-sections + ) endif() + if(APPLE) + target_link_options(pico_openpgp PUBLIC + -Wl,-dead_strip + ) + elseif(MSVC) + target_compile_options(pico_openpgp PUBLIC + -WX + ) - if(ENABLE_EMULATION) - if(NOT MSVC) - target_compile_options(pico_openpgp PUBLIC - -fdata-sections - -ffunction-sections - ) - endif() - if(APPLE) - target_link_options(pico_openpgp PUBLIC - -Wl,-dead_strip - ) - elseif(MSVC) - target_compile_options(pico_openpgp PUBLIC - -WX - ) - - target_link_libraries(pico_openpgp PUBLIC wsock32 ws2_32 Bcrypt) - else() - target_link_options(pico_openpgp PUBLIC - -Wl,--gc-sections - ) - endif(APPLE) - target_link_libraries(pico_openpgp PRIVATE pthread m) - endif() + target_link_libraries(pico_openpgp PUBLIC wsock32 ws2_32 Bcrypt) + else() + target_link_options(pico_openpgp PUBLIC + -Wl,--gc-sections + ) + endif(APPLE) + target_link_libraries(pico_openpgp PRIVATE pthread m) + endif() endif() From 1d508f254dba13ba0b78a5de90bc7f30d2cf4ef5 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 30 Sep 2024 20:10:00 +0200 Subject: [PATCH 11/13] Not used Signed-off-by: Pol Henarejos --- pico-hsm-sdk | 1 - 1 file changed, 1 deletion(-) delete mode 160000 pico-hsm-sdk diff --git a/pico-hsm-sdk b/pico-hsm-sdk deleted file mode 160000 index 7944076..0000000 --- a/pico-hsm-sdk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 794407686ad0f9c5935806ae66a95c8b43c6cb8f From b1161c46142b539f7218ec2e6b711a275cd4beff Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 8 Jan 2025 10:21:35 +0100 Subject: [PATCH 12/13] Update Pico Keys SDK EdDSA pointer. 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 83e6d0c..c42a6e1 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 83e6d0c89fae443b4ab7f596b5f06db49f234f78 +Subproject commit c42a6e1a83da1a604c696f97bcefd8405b05d3ed From 153c60fb47324e7478b2eccf1d1f0abbcd362a9b Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 21 Feb 2025 17:34:41 +0100 Subject: [PATCH 13/13] Fix cyw43 build. 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 4120a8c..6ec374a 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 4120a8c1a61a0a63040a83522133a10cd9a75e5a +Subproject commit 6ec374a6ac53a4de34ed26ae19be126fe7c704e7