From 41c1c990384d7ea0a63cf054387b627f4995741e Mon Sep 17 00:00:00 2001 From: brianp Date: Wed, 10 Apr 2024 14:20:48 +0200 Subject: [PATCH] Only use ledger for outputs that have managed keys --- base_layer/core/src/transactions/key_manager/inner.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/base_layer/core/src/transactions/key_manager/inner.rs b/base_layer/core/src/transactions/key_manager/inner.rs index e0e1b8b8b7..160d7ed265 100644 --- a/base_layer/core/src/transactions/key_manager/inner.rs +++ b/base_layer/core/src/transactions/key_manager/inner.rs @@ -439,10 +439,11 @@ where TBackend: KeyManagerBackend + 'static // ----------------------------------------------------------------------------------------------------------------- pub async fn get_script_private_key(&self, script_key_id: &TariKeyId) -> Result { - let k = self.get_private_key(script_key_id).await.map_err(|e| e.into()); - match self.wallet_type { - WalletType::Software => k, - WalletType::Ledger(account) => { + match (self.wallet_type, script_key_id) { + (WalletType::Software, _) | (WalletType::Ledger(_), TariKeyId::Imported { .. } | TariKeyId::Zero) => { + self.get_private_key(script_key_id).await.map_err(|e| e.into()) + }, + (WalletType::Ledger(account), TariKeyId::Managed { branch: _, index }) => { #[cfg(not(feature = "ledger"))] return Err(TransactionError::LedgerDeviceError(LedgerDeviceError::NotSupported)); @@ -452,7 +453,7 @@ where TBackend: KeyManagerBackend + 'static .map_err(|e| LedgerDeviceError::HidApi(e.to_string()))?; let mut data = (account as u64).to_le_bytes().to_vec(); - data.extend_from_slice(k?.as_bytes()); // Static index. Fix this. + data.extend_from_slice(&index.to_le_bytes()); // Static index. Fix this. let command = APDUCommand { cla: 0x80, ins: 0x03,