Skip to content

Track device kind and fingerprint on DeviceRegistration #374

@kwsantiago

Description

@kwsantiago

Problem

DeviceRegistration in keep-core/src/wallet.rs captures {signer_pubkey, wallet_name, registered_at, hmac}. It does not record the device kind (e.g., "Ledger", "BitBox02", "Coldcard"), the master key fingerprint, or firmware version. Without this metadata, the CLI and desktop UI cannot distinguish between multiple registered devices, and participants in a multisig have no way to confirm which physical device each co-signer registered.

Solution

Extend DeviceRegistration with optional metadata fields (additive, backward compatible via #[serde(skip_serializing_if = "Option::is_none", default)]):

pub struct DeviceRegistration {
    pub signer_pubkey: [u8; 32],
    pub wallet_name: String,
    pub registered_at: u64,
    pub hmac: Option<Zeroizing<Vec<u8>>>,
    // new:
    pub device_kind: Option<String>,
    pub fingerprint: Option<[u8; 4]>,
    pub firmware_version: Option<String>,
}

Sources for the new fields:

  • CLI: --kind <name>, --fingerprint <hex> flags on keep wallet register
  • Desktop: optional fields in the Register screen
  • Future: fetch directly from signer via a NIP-46 get_device_info request (tracked separately)

Reference

Scope

  • Add three optional fields to DeviceRegistration with serde skip_if defaults
  • Plumb through CLI flags and desktop UI inputs
  • Keep serde backward compat (existing encrypted descriptors deserialize unchanged)
  • Display metadata in keep wallet registrations CLI output and the desktop wallet card

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestnip46NIP-46 remote signer protocolnostr-frostNostr FROST coordination protocolp4Backlog PrioritywdcWallet Descriptor Coordination

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions