From de9f53acd8d0caca981b5dbb20cb7674876bf8fc Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 25 Nov 2024 23:52:56 +0100 Subject: [PATCH 1/6] Fix RP2350 build. Signed-off-by: Pol Henarejos --- CMakeLists.txt | 2 ++ pico-keys-sdk | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f4bfd13..e7ff723 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,6 +93,8 @@ if(NOT ESP_PLATFORM) ) endif(APPLE) target_link_libraries(pico_openpgp PRIVATE pthread m) + else() + pico_add_extra_outputs(${CMAKE_PROJECT_NAME}) endif() endif() diff --git a/pico-keys-sdk b/pico-keys-sdk index 8c25e9b..a271785 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 8c25e9be87f5556738550d309358198163111420 +Subproject commit a271785814583757e493bedaab24635a4f8a6a54 From 75335855409200db74fe212f4a511512789bd54f Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 27 Dec 2024 02:17:59 +0100 Subject: [PATCH 2/6] Add nightly build. Signed-off-by: Pol Henarejos --- .github/workflows/nightly.yml | 35 +++++++++++++++++++++++++++++++++++ workflows/autobuild.sh | 5 +++++ 2 files changed, 40 insertions(+) create mode 100644 .github/workflows/nightly.yml diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 0000000..864abb4 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,35 @@ +name: "Nightly deploy" + +on: + schedule: + - cron: '0 2 * * *' + workflow_dispatch: + +jobs: + nightly: + name: Deploy nightly + strategy: + fail-fast: false + matrix: + refs: [main] + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ matrix.refs }} + submodules: 'recursive' + - name : Build + env: + PICO_SDK_PATH: ../pico-sdk + run: | + ./workflows/autobuild.sh pico + ./build_pico_fido.sh + ./workflows/autobuild.sh esp32 + - name: Update nightly release + uses: pyTooling/Actions/releaser@main + with: + tag: nightly-${{ matrix.refs }} + rm: true + token: ${{ secrets.GITHUB_TOKEN }} + files: release/*.* diff --git a/workflows/autobuild.sh b/workflows/autobuild.sh index 8f830c3..1512511 100755 --- a/workflows/autobuild.sh +++ b/workflows/autobuild.sh @@ -22,6 +22,7 @@ mkdir build_pico cd build_pico cmake -DPICO_SDK_PATH=../pico-sdk .. make +cd .. elif [[ $1 == "esp32" ]]; then sudo apt install -y git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 git clone --recursive https://github.com/espressif/esp-idf.git @@ -31,6 +32,10 @@ cd esp-idf cd .. idf.py set-target esp32s3 idf.py all +mkdir -p release +cd build +esptool.py --chip ESP32-S3 merge_bin -o ../release/esp32-s3.bin @flash_args +cd .. else mkdir build cd build From 6fc27c97ca8f02afd6b4bb070925a84dc5f564e8 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 27 Dec 2024 02:21:44 +0100 Subject: [PATCH 3/6] Fix bin name. Signed-off-by: Pol Henarejos --- workflows/autobuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/autobuild.sh b/workflows/autobuild.sh index 1512511..16c9600 100755 --- a/workflows/autobuild.sh +++ b/workflows/autobuild.sh @@ -34,7 +34,7 @@ idf.py set-target esp32s3 idf.py all mkdir -p release cd build -esptool.py --chip ESP32-S3 merge_bin -o ../release/esp32-s3.bin @flash_args +esptool.py --chip ESP32-S3 merge_bin -o ../release/pico_openpgp_esp32-s3.bin @flash_args cd .. else mkdir build From e63a58a49e390f33e6597411ab1c685e76bd96b6 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 27 Dec 2024 02:28:29 +0100 Subject: [PATCH 4/6] Fix nightly build. Signed-off-by: Pol Henarejos --- .github/workflows/nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 864abb4..61a9640 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -24,7 +24,7 @@ jobs: PICO_SDK_PATH: ../pico-sdk run: | ./workflows/autobuild.sh pico - ./build_pico_fido.sh + ./build_pico_openpgp.sh ./workflows/autobuild.sh esp32 - name: Update nightly release uses: pyTooling/Actions/releaser@main From fa8026bca26c21e9bbce1642f9c1348cbcedd29e Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 27 Dec 2024 02:51:28 +0100 Subject: [PATCH 5/6] Increase TinyUSB esp stack size. Signed-off-by: Pol Henarejos --- sdkconfig.defaults | 1 + 1 file changed, 1 insertion(+) diff --git a/sdkconfig.defaults b/sdkconfig.defaults index d917312..d5613aa 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -4,6 +4,7 @@ IGNORE_UNKNOWN_FILES_FOR_MANAGED_COMPONENTS=1 CONFIG_TINYUSB=y +CONFIG_TINYUSB_TASK_STACK_SIZE=16384 CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="pico-keys-sdk/config/esp32/partitions.csv" From eaa88517192f59d2a0a6dc8f99a05e75ad9f099b Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 27 Dec 2024 02:54:07 +0100 Subject: [PATCH 6/6] Move Pico Keys SDK pointer. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- src/openpgp/openpgp.c | 6 +++--- src/openpgp/piv.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index a271785..9e2b6ac 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit a271785814583757e493bedaab24635a4f8a6a54 +Subproject commit 9e2b6ac4b6ad7f978b5c28600a007136fc6cb2ce diff --git a/src/openpgp/openpgp.c b/src/openpgp/openpgp.c index 926fbb1..536d922 100644 --- a/src/openpgp/openpgp.c +++ b/src/openpgp/openpgp.c @@ -107,7 +107,7 @@ static int cmd_select() { uint16_t fid = 0x0; if (apdu.nc >= 2) { - fid = get_uint16_t(apdu.data, 0); + fid = get_uint16_t_be(apdu.data); } if (!pe) { @@ -1321,14 +1321,14 @@ void make_rsa_response(mbedtls_rsa_context *rsa) { res_APDU_size = 5; res_APDU[res_APDU_size++] = 0x81; res_APDU[res_APDU_size++] = 0x82; - put_uint16_t(mbedtls_mpi_size(&rsa->N), res_APDU + res_APDU_size); res_APDU_size += 2; + put_uint16_t_be(mbedtls_mpi_size(&rsa->N), res_APDU + res_APDU_size); res_APDU_size += 2; mbedtls_mpi_write_binary(&rsa->N, res_APDU + res_APDU_size, mbedtls_mpi_size(&rsa->N)); res_APDU_size += mbedtls_mpi_size(&rsa->N); res_APDU[res_APDU_size++] = 0x82; res_APDU[res_APDU_size++] = mbedtls_mpi_size(&rsa->E) & 0xff; mbedtls_mpi_write_binary(&rsa->E, res_APDU + res_APDU_size, mbedtls_mpi_size(&rsa->E)); res_APDU_size += mbedtls_mpi_size(&rsa->E); - put_uint16_t(res_APDU_size - 5, res_APDU + 3); + put_uint16_t_be(res_APDU_size - 5, res_APDU + 3); } void make_ecdsa_response(mbedtls_ecdsa_context *ecdsa) { diff --git a/src/openpgp/piv.c b/src/openpgp/piv.c index 6b37772..dc72d99 100644 --- a/src/openpgp/piv.c +++ b/src/openpgp/piv.c @@ -475,7 +475,7 @@ static int cmd_get_metadata() { } res_APDU[res_APDU_size++] = 0x81; res_APDU[res_APDU_size++] = 0x82; - put_uint16_t(mbedtls_mpi_size(&ctx.N), res_APDU + res_APDU_size); res_APDU_size += 2; + put_uint16_t_be(mbedtls_mpi_size(&ctx.N), res_APDU + res_APDU_size); res_APDU_size += 2; mbedtls_mpi_write_binary(&ctx.N, res_APDU + res_APDU_size, mbedtls_mpi_size(&ctx.N)); res_APDU_size += mbedtls_mpi_size(&ctx.N); res_APDU[res_APDU_size++] = 0x82;