From e04196f1f1ac701609ebdb8bf28e7454765f2808 Mon Sep 17 00:00:00 2001 From: Laan Tungir Date: Sat, 1 Aug 2026 05:26:42 -0400 Subject: [PATCH] v0.1.8 - Consolidated USB test page, fixed OTP round-trip, reformatted SD card, added pad checksum logging --- examples/feather_webusb_demo.html | 527 ------------------ firmware/README.md | 10 +- firmware/cyd_esp32_2432s028/README.md | 4 +- firmware/teensy41/signer/signer.ino | 14 +- src/main.c | 4 +- .../cyd_webserial_demo.html => usb-test.html | 113 +++- 6 files changed, 109 insertions(+), 563 deletions(-) delete mode 100644 examples/feather_webusb_demo.html rename examples/cyd_webserial_demo.html => usb-test.html (86%) diff --git a/examples/feather_webusb_demo.html b/examples/feather_webusb_demo.html deleted file mode 100644 index a6fe644..0000000 --- a/examples/feather_webusb_demo.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - - - n_signer Feather WebUSB Demo - - - -
-

n_signer Feather WebUSB Demo

-

Connect to the board, choose a key index, fetch a pubkey, sign a kind 1 event, and test NIP-04 / NIP-44 encrypt + decrypt RPCs.

- -
-
- - Disconnected -
-

-    
- -
-
-

Public Key

- - -
- -
-

-      
- -
-

Sign Kind 1 Event

- - - - -
- -
-

-      
- -
-

NIP-04 Encrypt

- - - - -
- -
-

-      
- -
-

NIP-04 Decrypt

- - - - -
- -
-

-      
- -
-

NIP-44 Encrypt

- - - - -
- -
-

-      
- -
-

NIP-44 Decrypt

- - - - -
- -
-

-      
-
-
- - - - diff --git a/firmware/README.md b/firmware/README.md index 0401d97..672a124 100644 --- a/firmware/README.md +++ b/firmware/README.md @@ -46,10 +46,10 @@ CDC path: ./.venv/bin/python ./examples/feather_sign_event.py /dev/ttyACM0 ``` -WebUSB path: +WebUSB / Web Serial path (unified): -- Open [`examples/feather_webusb_demo.html`](../examples/feather_webusb_demo.html) -- Connect in Chrome/Edge +- Open [`usb-test.html`](../usb-test.html) in Chrome/Edge +- Connect via Web Serial (works for Teensy 4.1 USB CDC, CYD CH340, Feather, etc.) - Run `get_public_key` - Confirm pubkey matches CDC result @@ -58,9 +58,9 @@ WebUSB path: The CYD has no native USB; its CH340 bridge exposes a serial port. The browser transport is **Web Serial** (`navigator.serial`), Chromium-only. A full test page covering every algorithm and verb lives at -[`examples/cyd_webserial_demo.html`](../examples/cyd_webserial_demo.html): +[`usb-test.html`](../usb-test.html): -- Open [`examples/cyd_webserial_demo.html`](../examples/cyd_webserial_demo.html) in Chrome/Edge +- Open [`usb-test.html`](../usb-test.html) in Chrome/Edge - Click **Connect Web Serial**, select the CH340 port (`1a86:7523`) - Exercise each card: `get_public_key` (all 6 algorithms), `sign`/`verify`, `encapsulate`/`decapsulate`, `derive_shared_secret`, `derive`, diff --git a/firmware/cyd_esp32_2432s028/README.md b/firmware/cyd_esp32_2432s028/README.md index 898c728..4afb679 100644 --- a/firmware/cyd_esp32_2432s028/README.md +++ b/firmware/cyd_esp32_2432s028/README.md @@ -95,9 +95,9 @@ hardware note below. The CYD has no native USB; the CH340 bridge exposes a serial port. The browser transport is **Web Serial** (`navigator.serial`), Chromium-only. A full test page covering every algorithm and verb lives at -[`examples/cyd_webserial_demo.html`](../../examples/cyd_webserial_demo.html): +[`usb-test.html`](../../usb-test.html): -1. Open [`examples/cyd_webserial_demo.html`](../../examples/cyd_webserial_demo.html) in Chrome/Edge. +1. Open [`usb-test.html`](../../usb-test.html) in Chrome/Edge. 2. Click **Connect Web Serial**, select the CH340 port (`1a86:7523`). 3. On the CYD touchscreen, enter or generate a mnemonic to reach the "ready" state. 4. Exercise each card: `get_public_key` (all 6 algorithms), `sign`/`verify`, diff --git a/firmware/teensy41/signer/signer.ino b/firmware/teensy41/signer/signer.ino index d5ca047..b2e200f 100644 --- a/firmware/teensy41/signer/signer.ino +++ b/firmware/teensy41/signer/signer.ino @@ -20,7 +20,7 @@ // each boot. Mirrors CYD_DEBUG_AUTO_GENERATE in // firmware/cyd_esp32_2432s028/main/main.c. Set to 0 for the normal interactive // boot flow (show the startup menu, wait for the user to tap Generate/Enter). -#define DEBUG_AUTO_GENERATE 1 +#define DEBUG_AUTO_GENERATE 0 #include #include @@ -507,7 +507,17 @@ void setup() { } else { Serial.print("Found "); Serial.print(n_pads); - Serial.println(" pad(s), showing selection screen..."); + Serial.println(" pad(s):"); + for (int i = 0; i < n_pads; i++) { + Serial.print(" ["); + Serial.print(i); + Serial.print("] "); + Serial.print(pad_chksums[i]); + Serial.print(" ("); + Serial.print((unsigned long)pad_sizes[i]); + Serial.println(" bytes)"); + } + Serial.println("Showing selection screen..."); const char *chksum_ptrs[4]; for (int i = 0; i < n_pads; i++) chksum_ptrs[i] = pad_chksums[i]; char selected[65]; diff --git a/src/main.c b/src/main.c index 8b2f55f..aa7d05e 100644 --- a/src/main.c +++ b/src/main.c @@ -762,8 +762,8 @@ int socket_name_random(char *out, size_t out_len); /* Version information (auto-updated by build/version tooling) */ #define NSIGNER_VERSION_MAJOR 0 #define NSIGNER_VERSION_MINOR 1 -#define NSIGNER_VERSION_PATCH 7 -#define NSIGNER_VERSION "v0.1.7" +#define NSIGNER_VERSION_PATCH 8 +#define NSIGNER_VERSION "v0.1.8" /* NSIGNER_HEADERLESS_DECLS_END */ diff --git a/examples/cyd_webserial_demo.html b/usb-test.html similarity index 86% rename from examples/cyd_webserial_demo.html rename to usb-test.html index c20ec7a..661cbe1 100644 --- a/examples/cyd_webserial_demo.html +++ b/usb-test.html @@ -3,7 +3,7 @@ - n_signer CYD Web Serial Demo + n_signer USB Test