Test: Add Better Test Harness - #20
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit abc08fc. Configure here.
|
Great to have caught this now. I'm glad I test everything with small amounts first. @sephynox Can you sanity check me on this as well? This seems like an invalid address ( It seems to be indicative of some kind of double-type-prefix display-only issue for addresses parsed from blocks. |
Yes, I fixed this as well here: #21 |
| name = "keetanetwork-block" | ||
| version = "0.1.0" | ||
| source = "git+https://github.com/KeetaNetwork/node-rs#ff64476f36db7747134c947c17e68dad0b199418" | ||
| source = "git+https://github.com/KeetaNetwork/node-rs?branch=feat%2Fblock#7622b5d7480bba5010bea73390b24e56acd5de61" |
There was a problem hiding this comment.
Might be worth flagging that this entry in Cargo.toml
ledger-device-application/Cargo.toml
Line 39 in 55d592f
Could consider adding cargo metadata --locked as an explicit pipeline step to catch this in the future.
fyi @sephynox

Summary
The device returned an invalid Ed25519 public key from GET_PUBLIC_KEY, so Ed25519 addresses were wrong and signatures could not be verified against the network. This went unnoticed because no test checked device output against a reference implementation. This PR fixes the encoding and adds a round-trip suite that verifies every supported algorithm against both the Rust node (
node-rs) and the TypeScript client (keetanet-client), plus CI updates needed to build against Ledger's current toolchain images.Related Issues
Changes Made
Breaking Changes
Ed25519 public keys and addresses reported by the device change. Any address derived from a previous build's Ed25519 output must be re-derived. secp256k1 and secp256r1 outputs are unchanged.
Note
High Risk
Ed25519 public keys and Keeta addresses change for integrators, and signing/crypto paths are validated against new reference verifiers and a moving
node-rsbranch—high impact on wallet compatibility and signature correctness.Overview
Fixes Ed25519
GET_PUBLIC_KEY/ address derivation by compressing the Ledger SDK’s uncompressed point withcx_edwards_compress_point_no_throwand exposing the RFC 8032 32-byte key—breaking prior Ed25519 addresses and pubkeys; secp256k1 and secp256r1 are unchanged.Replaces the old JS block-builder fixture with round-trip functional tests that sign on-device (
sign_message/sign_blockfor all three algorithms) and verify via new Rust (verify_signature_rs/node-rs) and TypeScript (verify_signature_ts/keetanet-client) CLIs. Shared pytest helpers (SET_REP_BLOCK,_stream_sign,sign_message) and CI steps build/cache the Rust verifier and install the TS fixture.Dependency bumps include
ledger_device_sdk/ledger_secure_sdk_sys,node-rsonfeat/block, and minor CI/tooling tweaks (cargo +stable install cargo-audit,.gitignoretarget/).Reviewed by Cursor Bugbot for commit 55d592f. Bugbot is set up for automated code reviews on this repo. Configure here.