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
Problem
DeviceRegistrationinkeep-core/src/wallet.rscaptures{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
DeviceRegistrationwith optional metadata fields (additive, backward compatible via#[serde(skip_serializing_if = "Option::is_none", default)]):Sources for the new fields:
--kind <name>,--fingerprint <hex>flags onkeep wallet registerget_device_inforequest (tracked separately)Reference
HardwareWalletConfigstores{kind, fingerprint, token}for analogous purposeScope
DeviceRegistrationwith serde skip_if defaultskeep wallet registrationsCLI output and the desktop wallet card