Skip to content

✨ (signer) [NO-ISSUE]: Add signer packages for multiple blockchain networks#1284

Open
mbertin-ledger wants to merge 21 commits intodevelopfrom
task/no-issue-signer-generation
Open

✨ (signer) [NO-ISSUE]: Add signer packages for multiple blockchain networks#1284
mbertin-ledger wants to merge 21 commits intodevelopfrom
task/no-issue-signer-generation

Conversation

@mbertin-ledger
Copy link
Member

Summary

Add new signer packages for multiple blockchain networks, implementing APDU protocols based on their respective hw-app-xxx packages from ledger-live. Each signer provides:

  • GetAppConfigCommand: Retrieves app version from the device
  • GetAddressCommand: Derives public key and address from BIP32 path
  • SignTransactionCommand/Task: Signs transactions with chunking support
  • SignMessageCommand: Message signing (where supported by the chain)

New Signer Packages

Package CLA Based on
signer-xrp 0xe0 hw-app-xrp
signer-algorand 0x80 hw-app-algorand
signer-tron 0xe0 hw-app-trx
signer-near 0x80 hw-app-near
signer-icon 0xe0 hw-app-icx
signer-stellar 0xe0 hw-app-str
signer-aptos 0x5b hw-app-aptos
signer-canton 0xe0 hw-app-cardano (Canton-specific)
signer-celo 0xe0 hw-app-eth (Celo extends ETH)
signer-concordium 0xe0 hw-app-concordium
signer-hedera 0xe0 hw-app-hash
signer-helium 0xe0 hw-app-helium
signer-kaspa 0x5b hw-app-kaspa
signer-multiversx 0xed app-multiversx
signer-polkadot 0xf9 hw-app-polkadot
signer-sui 0x00 app-sui
signer-tezos 0x80 hw-app-tezos
signer-vechain 0xe0 hw-app-vet

Implementation Details

  • All signers use CommandErrorHelper from @ledgerhq/signer-utils for consistent error handling
  • Transaction signing uses chunked data transfer for large payloads
  • Path serialization follows each chain's specific requirements (big/little endian, path depth)
  • Apps/sample and apps/docs updated with new signer integrations

Test Plan

  • Verify all signer packages build successfully (pnpm turbo build --filter="@ledgerhq/device-signer-kit-*")
  • Check TypeScript compilation passes (pnpm typecheck)
  • Verify sample app loads without errors
  • Manual testing with hardware device for critical chains (XRP, Algorand, etc.)

Notes

  • Message signing is marked as unsupported for chains that don't have this feature in their Ledger app (Sui, Tezos, VeChain, Polkadot, etc.)
  • Some address derivation implementations may need refinement based on chain-specific requirements (e.g., Aptos address is sha3_256 hash of pubkey)

Made with Cursor

@mbertin-ledger mbertin-ledger requested a review from a team as a code owner February 5, 2026 13:42
Copilot AI review requested due to automatic review settings February 5, 2026 13:42
@vercel
Copy link

vercel bot commented Feb 5, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
device-sdk-ts-sample Error Error Feb 11, 2026 9:56am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
doc-device-management-kit Ignored Ignored Feb 11, 2026 9:56am

Request Review

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds comprehensive signer implementations for 18 blockchain networks, implementing APDU protocols based on their respective Ledger hardware wallet apps. Each signer provides commands for app configuration retrieval, address derivation, transaction signing, and message signing (where supported).

Changes:

  • Adds new signer packages for Algorand, Aptos, Canton, Celo, Concordium, Hedera, Helium, Icon, Kaspa, Multiversx, Near, Polkadot, Stellar, Sui, Tezos, Tron, Vechain, and XRP
  • Integrates all new signers into the sample app with corresponding providers and views
  • Updates documentation references to include all new signers

Reviewed changes

Copilot reviewed 288 out of 994 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/signer/signer-*/package.json Package configuration for each new signer
packages/signer/signer-*/src/internal/app-binder/*Command.ts APDU command implementations per chain
packages/signer/signer-*/src/internal/app-binder/*Task.ts Transaction/message signing tasks with chunking
apps/sample/src/providers/Signer*Provider/index.tsx React providers for sample app integration
apps/sample/src/app/signers/*/page.tsx Sample app pages for each signer
package.json Root package scripts for signer packages
apps/docs/pages/docs/references/signers/_meta.js Documentation metadata

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +100 to +106
let hash = 0;
for (let i = 0; i < publicKey.length; i++) {
const char = publicKey.charCodeAt(i);
hash = (hash << 5) - hash + char;
hash = hash & hash;
}
const address = "canton_" + Math.abs(hash).toString(16);
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Canton address generation uses a simple hash function on the hex string representation of the public key rather than the actual bytes. This implementation appears incorrect - Canton addresses should be derived from the public key bytes using a proper cryptographic hash function and encoding scheme specific to Canton.

Copilot uses AI. Check for mistakes.
Comment on lines +9 to +193

canton: "Signer Canton",



celo: "Signer Celo",




concordium: "Signer Concordium",





hedera: "Signer Hedera",






helium: "Signer Helium",







icon: "Signer Icon",








kaspa: "Signer Kaspa",









multiversx: "Signer Multiversx",










near: "Signer Near",











polkadot: "Signer Polkadot",












stellar: "Signer Stellar",













sui: "Signer Sui",














tezos: "Signer Tezos",















tron: "Signer Tron",
















vechain: "Signer Vechain",

















xrp: "Signer Xrp",


















Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple consecutive blank lines throughout the file create unnecessary whitespace. This file should have consistent spacing between entries, with at most one blank line between items.

Suggested change
canton: "Signer Canton",
celo: "Signer Celo",
concordium: "Signer Concordium",
hedera: "Signer Hedera",
helium: "Signer Helium",
icon: "Signer Icon",
kaspa: "Signer Kaspa",
multiversx: "Signer Multiversx",
near: "Signer Near",
polkadot: "Signer Polkadot",
stellar: "Signer Stellar",
sui: "Signer Sui",
tezos: "Signer Tezos",
tron: "Signer Tron",
vechain: "Signer Vechain",
xrp: "Signer Xrp",
canton: "Signer Canton",
celo: "Signer Celo",
concordium: "Signer Concordium",
hedera: "Signer Hedera",
helium: "Signer Helium",
icon: "Signer Icon",
kaspa: "Signer Kaspa",
multiversx: "Signer Multiversx",
near: "Signer Near",
polkadot: "Signer Polkadot",
stellar: "Signer Stellar",
sui: "Signer Sui",
tezos: "Signer Tezos",
tron: "Signer Tron",
vechain: "Signer Vechain",
xrp: "Signer Xrp",

Copilot uses AI. Check for mistakes.
Comment on lines +90 to +92
<SignerXrpProvider>
<SignerVechainProvider>
<SignerTronProvider>
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The deeply nested provider structure creates code that's difficult to read and maintain. Consider refactoring to compose providers using a higher-order component or a provider composition utility.

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Contributor

github-actions bot commented Feb 5, 2026

Fails
🚫

Please fix the PR branch name to match the convention, see CONTRIBUTING.md.

Wrong branch name: task/no-issue-signer-generation

ℹ️ Regex to match: /^(release|chore\/backmerge(-.+){0,}|(feature|feat|bugfix|bug|hotfix|fix|support|chore|core|doc|refacto|refactor)\/((dsdk|live)-[0-9]+|no-issue|NOISSUE|issue-[0-9]+)-.+)/i

  • Rules:
    • Must start with a type (feature, feat, bugfix, bug, hotfix, fix, support, chore, core, doc, refacto, refactor)
    • Followed by a SLASH ("/")
    • Followed by a JIRA issue number (DSDK-1234) (LIVE-1234) or "no-issue" or "issue-1234" if fixing a Github issue
    • Followed by a DASH ("-")
    • Followed by a description

ℹ️ Example: feat/dsdk-1234-my-feature

🚫

One or more commit message does not match the convention, see CONTRIBUTING.md.

Wrong commit messages:
• `✨ (signer): implement Aptos signer APDU protocol

Implement the Aptos signer with proper APDU commands based on hw-app-aptos:

  • GetAppConfigCommand: retrieves app version (CLA=0x5b, INS=0x03)
  • GetAddressCommand: retrieves public key, chain code, and address (INS=0x05)
  • SignTransactionCommand: handles chunked transaction signing (INS=0x06)
  • SignMessageCommand: marked as unsupported for Aptos
  • SignTransactionTask: orchestrates chunked transaction data

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Canton signer APDU protocol

Implement the Canton signer with proper APDU commands based on hw-app-canton:

  • GetAppConfigCommand: retrieves app version (CLA=0xe0, INS=0x03)
  • GetAddressCommand: retrieves public key and address (INS=0x05)
  • SignTransactionCommand: handles chunked signing with P2 flags (INS=0x06)
  • SignMessageCommand: marked as unsupported (Canton uses signTransaction)
  • SignTransactionTask: orchestrates chunked transaction signing

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Celo signer APDU protocol

Implement the Celo signer with proper APDU commands (Celo extends Ethereum):

  • GetAppConfigCommand: retrieves app version and config flags (CLA=0xe0, INS=0x06)
  • GetAddressCommand: retrieves public key, address and chain code (INS=0x02)
  • SignTransactionCommand: handles chunked transaction signing (INS=0x04)
  • SignMessageCommand: handles chunked message signing (INS=0x08)
  • SignTransactionTask: orchestrates chunked transaction signing
  • SignMessageTask: orchestrates chunked message signing

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Concordium signer APDU protocol

Implement the Concordium signer with proper APDU commands based on hw-app-concordium:

  • GetAppConfigCommand: placeholder (GET_VERSION not implemented on device yet)
  • GetAddressCommand: retrieves public key (CLA=0xe0, INS=0x01)
  • SignTransactionCommand: handles chunked transfer signing (INS=0x02)
  • SignMessageCommand: marked as unsupported (use signTransfer)
  • SignTransactionTask: orchestrates chunked transaction signing

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Hedera signer APDU protocol

Implement the Hedera signer with proper APDU commands based on hw-app-hedera:

  • GetAppConfigCommand: placeholder (no version command available)
  • GetAddressCommand: retrieves public key (CLA=0xe0, INS=0x02)
  • SignTransactionCommand: signs transaction (INS=0x04, only index 0)
  • SignMessageCommand: marked as unsupported
  • SignTransactionTask: wraps single transaction signing

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Helium signer APDU protocol

Implement the Helium signer with proper APDU commands based on hw-app-helium:

  • GetAppConfigCommand: retrieves app version (CLA=0xe0, INS=0x01)
  • GetAddressCommand: retrieves address and public key (INS=0x02)
  • SignTransactionCommand: signs PaymentV2 transactions (INS=0x08)
  • SignMessageCommand: marked as unsupported
  • SignTransactionTask: wraps single transaction signing

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Kaspa signer APDU protocol

Implement the Kaspa signer with proper APDU commands based on hw-app-kaspa:

  • GetAppConfigCommand: retrieves app version (CLA=0xe0, INS=0x04)
  • GetAddressCommand: retrieves public key and address (INS=0x05)
  • SignTransactionCommand: handles multi-step transaction signing (INS=0x06)
  • SignMessageCommand: signs personal messages (INS=0x07)
  • SignTransactionTask: orchestrates transaction signing flow

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement MultiversX signer APDU protocol

Implement the MultiversX signer with proper APDU commands based on app-multiversx:

  • GetAppConfigCommand: retrieves version and config flags (CLA=0xed, INS=0x02)
  • GetAddressCommand: retrieves public key and bech32 address (INS=0x03)
  • SignTransactionCommand: handles chunked tx hash signing (INS=0x07)
  • SignMessageCommand: handles chunked message signing (INS=0x06)
  • SignTransactionTask: orchestrates transaction signing
  • SignMessageTask: orchestrates message signing

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Polkadot signer APDU protocol

Implement the Polkadot signer with proper APDU commands based on hw-app-polkadot:

  • GetAppConfigCommand: retrieves version (CLA=0xf9, INS=0x00)
  • GetAddressCommand: retrieves public key and ss58 address (INS=0x01)
  • SignTransactionCommand: handles chunked transaction signing (INS=0x02)
  • SignMessageCommand: marked as unsupported
  • SignTransactionTask: orchestrates transaction signing with metadata

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Sui signer APDU protocol

Implement the Sui signer with proper APDU commands based on app-sui:

  • GetAppConfigCommand: retrieves version (CLA=0x00, INS=0x00)
  • GetAddressCommand: retrieves public key and address (INS=0x02/0x01)
  • SignTransactionCommand: handles chunked transaction signing (INS=0x03)
  • SignMessageCommand: marked as unsupported
  • SignTransactionTask: orchestrates transaction signing

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement Tezos signer APDU protocol

Implement the Tezos signer with proper APDU commands based on hw-app-tezos:

  • GetAppConfigCommand: retrieves version and baking flag (CLA=0x80, INS=0x00)
  • GetAddressCommand: retrieves public key with curve support (INS=0x02/0x03)
  • SignTransactionCommand: handles chunked operation signing (INS=0x04)
  • SignMessageCommand: marked as unsupported
  • SignTransactionTask: orchestrates transaction signing with curve selection
  • Supports ED25519, SECP256K1, and SECP256R1 curves

Co-authored-by: Cursor cursoragent@cursor.com✨ (signer): implement VeChain signer APDU protocol

Implement the VeChain signer with proper APDU commands based on hw-app-vet:

  • GetAppConfigCommand: retrieves version (CLA=0xe0, INS=0x06)
  • GetAddressCommand: retrieves public key and address with chain code support (INS=0x02)
  • SignTransactionCommand: handles chunked transaction signing (INS=0x04)
  • SignMessageCommand: marked as unsupported
  • SignTransactionTask: orchestrates transaction signing with v/r/s extraction

Co-authored-by: Cursor cursoragent@cursor.com`

ℹ️ Regex to match: /^.+\s\(([a-z]+\-?){1,}\)(\s\[(NO-ISSUE|([A-Z]+\-\d+))\])?: [A-Z].*/

  • Rules:
    • Must start with a word (a gitmoji compliant emoji)
    • Followed by a SPACE
    • Followed by a scope in parentheses and in LOWERCASE
    • Optional
      • Followed by a SPACE
      • Followed by a JIRA issue number in brackets [DSDK-1234] or [NO-ISSUE]
    • Followed by a colon (":") and a SPACE
    • Followed by a Capitalized message

Example: 💚 (scope): My feature
Special case for commit messages coming from a pull request merge:

  • 💚 (scope) [DSDK-1234]: My feature - 💚 (scope) [NO-ISSUE]: My title
Messages
⚠️ No changeset file found. Please make sure this is intended or add a changeset file.

Generated by 🚫 dangerJS against a57872b

mbertin-ledger and others added 21 commits February 11, 2026 10:51
Generate signer scaffolds for multiple blockchains (algorand, aptos, canton,
celo, concordium, hedera, helium, icon, kaspa, multiversx, near, polkadot,
stellar, sui, tezos, tron, vechain, xrp) using ldmk-tool generate-signer.

Fully implement XRP signer with APDU protocol:
- GetAppConfigCommand: Retrieve app version
- GetAddressCommand: Get XRP address with Ed25519/secp256k1 support
- SignTransactionCommand: Sign transactions with chunked data handling
- SignTransactionTask: Orchestrate multi-chunk transaction signing
- XRP-specific error handling following signer-eth patterns

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement full APDU command handling for Algorand signer:
- GetAddressCommand: Get public key with account index (CLA=0x80, INS=0x03)
- SignTransactionCommand: Sign msgpack-encoded transactions with chunking
- SignTransactionTask: Orchestrate chunked signing (250-byte chunks)
- GetAppConfigCommand: Basic app config retrieval
- SignMessageCommand: Mark as unsupported (Algorand only supports msgpack)
- Error handling following signer-eth patterns

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement full APDU command handling for Tron signer:
- GetAppConfigCommand: Get app version and flags (CLA=0xe0, INS=0x06)
- GetAddressCommand: Get address with full derivation path (INS=0x02)
- SignTransactionCommand: Sign transactions with chunking (INS=0x04)
- SignTransactionTask: Orchestrate chunked signing (250-byte chunks)
- SignMessageCommand: Sign personal messages (INS=0x08)
- SignMessageTask: Handle chunked message signing
- Error handling following signer-eth patterns

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement full APDU command handling for NEAR signer:
- GetAddressCommand: Get public key/address (CLA=0x80, INS=0x04/0x05)
- SignTransactionCommand: Sign transactions with chunking (INS=0x02)
- SignTransactionTask: Orchestrate chunked signing (255-byte chunks)
- GetAppConfigCommand: Basic app config retrieval
- SignMessageCommand: Mark as unsupported (NEAR only supports transactions)
- Error handling following signer-eth patterns

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement full APDU command handling for ICON signer:
- GetAppConfigCommand: Get app version (CLA=0xe0, INS=0x06)
- GetAddressCommand: Get address with chaincode option (INS=0x02)
- SignTransactionCommand: Sign transactions with chunking (INS=0x04)
- SignTransactionTask: Orchestrate chunked signing (150-byte chunks)
- SignMessageCommand: Mark as unsupported (ICON only supports transactions)
- Error handling following signer-eth patterns

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement full APDU command handling for Stellar signer:
- GetAppConfigCommand: Get version and hash signing status (CLA=0xe0, INS=0x06)
- GetAddressCommand: Get raw Ed25519 public key (INS=0x02)
- SignTransactionCommand: Sign transactions with chunking (INS=0x04)
- SignTransactionTask: Orchestrate chunked signing (255-byte chunks)
- SignMessageCommand: Sign messages with chunking (INS=0x0c)
- SignMessageTask: Orchestrate chunked message signing
- Error handling following signer-eth patterns

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Aptos signer with proper APDU commands based on hw-app-aptos:
- GetAppConfigCommand: retrieves app version (CLA=0x5b, INS=0x03)
- GetAddressCommand: retrieves public key, chain code, and address (INS=0x05)
- SignTransactionCommand: handles chunked transaction signing (INS=0x06)
- SignMessageCommand: marked as unsupported for Aptos
- SignTransactionTask: orchestrates chunked transaction data

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Canton signer with proper APDU commands based on hw-app-canton:
- GetAppConfigCommand: retrieves app version (CLA=0xe0, INS=0x03)
- GetAddressCommand: retrieves public key and address (INS=0x05)
- SignTransactionCommand: handles chunked signing with P2 flags (INS=0x06)
- SignMessageCommand: marked as unsupported (Canton uses signTransaction)
- SignTransactionTask: orchestrates chunked transaction signing

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Celo signer with proper APDU commands (Celo extends Ethereum):
- GetAppConfigCommand: retrieves app version and config flags (CLA=0xe0, INS=0x06)
- GetAddressCommand: retrieves public key, address and chain code (INS=0x02)
- SignTransactionCommand: handles chunked transaction signing (INS=0x04)
- SignMessageCommand: handles chunked message signing (INS=0x08)
- SignTransactionTask: orchestrates chunked transaction signing
- SignMessageTask: orchestrates chunked message signing

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Concordium signer with proper APDU commands based on hw-app-concordium:
- GetAppConfigCommand: placeholder (GET_VERSION not implemented on device yet)
- GetAddressCommand: retrieves public key (CLA=0xe0, INS=0x01)
- SignTransactionCommand: handles chunked transfer signing (INS=0x02)
- SignMessageCommand: marked as unsupported (use signTransfer)
- SignTransactionTask: orchestrates chunked transaction signing

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Hedera signer with proper APDU commands based on hw-app-hedera:
- GetAppConfigCommand: placeholder (no version command available)
- GetAddressCommand: retrieves public key (CLA=0xe0, INS=0x02)
- SignTransactionCommand: signs transaction (INS=0x04, only index 0)
- SignMessageCommand: marked as unsupported
- SignTransactionTask: wraps single transaction signing

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Helium signer with proper APDU commands based on hw-app-helium:
- GetAppConfigCommand: retrieves app version (CLA=0xe0, INS=0x01)
- GetAddressCommand: retrieves address and public key (INS=0x02)
- SignTransactionCommand: signs PaymentV2 transactions (INS=0x08)
- SignMessageCommand: marked as unsupported
- SignTransactionTask: wraps single transaction signing

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Kaspa signer with proper APDU commands based on hw-app-kaspa:
- GetAppConfigCommand: retrieves app version (CLA=0xe0, INS=0x04)
- GetAddressCommand: retrieves public key and address (INS=0x05)
- SignTransactionCommand: handles multi-step transaction signing (INS=0x06)
- SignMessageCommand: signs personal messages (INS=0x07)
- SignTransactionTask: orchestrates transaction signing flow

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the MultiversX signer with proper APDU commands based on app-multiversx:
- GetAppConfigCommand: retrieves version and config flags (CLA=0xed, INS=0x02)
- GetAddressCommand: retrieves public key and bech32 address (INS=0x03)
- SignTransactionCommand: handles chunked tx hash signing (INS=0x07)
- SignMessageCommand: handles chunked message signing (INS=0x06)
- SignTransactionTask: orchestrates transaction signing
- SignMessageTask: orchestrates message signing

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Polkadot signer with proper APDU commands based on hw-app-polkadot:
- GetAppConfigCommand: retrieves version (CLA=0xf9, INS=0x00)
- GetAddressCommand: retrieves public key and ss58 address (INS=0x01)
- SignTransactionCommand: handles chunked transaction signing (INS=0x02)
- SignMessageCommand: marked as unsupported
- SignTransactionTask: orchestrates transaction signing with metadata

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Sui signer with proper APDU commands based on app-sui:
- GetAppConfigCommand: retrieves version (CLA=0x00, INS=0x00)
- GetAddressCommand: retrieves public key and address (INS=0x02/0x01)
- SignTransactionCommand: handles chunked transaction signing (INS=0x03)
- SignMessageCommand: marked as unsupported
- SignTransactionTask: orchestrates transaction signing

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the Tezos signer with proper APDU commands based on hw-app-tezos:
- GetAppConfigCommand: retrieves version and baking flag (CLA=0x80, INS=0x00)
- GetAddressCommand: retrieves public key with curve support (INS=0x02/0x03)
- SignTransactionCommand: handles chunked operation signing (INS=0x04)
- SignMessageCommand: marked as unsupported
- SignTransactionTask: orchestrates transaction signing with curve selection
- Supports ED25519, SECP256K1, and SECP256R1 curves

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the VeChain signer with proper APDU commands based on hw-app-vet:
- GetAppConfigCommand: retrieves version (CLA=0xe0, INS=0x06)
- GetAddressCommand: retrieves public key and address with chain code support (INS=0x02)
- SignTransactionCommand: handles chunked transaction signing (INS=0x04)
- SignMessageCommand: marked as unsupported
- SignTransactionTask: orchestrates transaction signing with v/r/s extraction

Co-authored-by: Cursor <cursoragent@cursor.com>
Export GetAppConfigDA*, GetAddressDA*, SignTransactionDA*, and
SignMessageDA* types from all new signer packages to fix the sample
app build which imports these types.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace placeholder BTC icons with correct crypto icons for each signer:
- ALGO for Algorand
- APT for Aptos
- ADA for Canton (based on Cardano)
- CELO for Celo
- HBAR for Hedera
- ICX for ICON
- EGLD for MultiversX
- NEAR for Near
- DOT for Polkadot
- XLM for Stellar
- XTZ for Tezos
- TRX for Tron
- VET for VeChain
- XRP for XRP (already correct)

Use GENERIC icon for chains without specific icons:
Concordium, Helium, Kaspa, Sui

Co-authored-by: Cursor <cursoragent@cursor.com>
Update the default derivation path for XRP signer in the sample app
to use the correct XRP coin type (144) instead of Bitcoin's (0).

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants