From c5c25a8a6c41c4e6f38aa3bd5f59a20f232b6e73 Mon Sep 17 00:00:00 2001 From: SW van Heerden Date: Tue, 13 Aug 2024 11:23:02 +0200 Subject: [PATCH 1/3] fix backup spend --- .../src/transactions/key_manager/inner.rs | 28 +++++++++---------- .../src/output_manager_service/service.rs | 3 +- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/base_layer/core/src/transactions/key_manager/inner.rs b/base_layer/core/src/transactions/key_manager/inner.rs index 4d8c784768..0006c11e90 100644 --- a/base_layer/core/src/transactions/key_manager/inner.rs +++ b/base_layer/core/src/transactions/key_manager/inner.rs @@ -1506,10 +1506,8 @@ where TBackend: KeyManagerBackend + 'static txo_version: &TransactionOutputVersion, metadata_signature_message: &[u8; 32], ) -> Result { - let ephemeral_private_key = self.get_private_key(ephemeral_private_nonce_id).await?; - let ephemeral_pubkey = PublicKey::from_secret_key(&ephemeral_private_key); - let sender_offset_private_key = self.get_private_key(sender_offset_key_id).await?; // Take the index and use it to find the key from ledger - let sender_offset_public_key = PublicKey::from_secret_key(&sender_offset_private_key); + let ephemeral_pubkey = self.get_public_key_at_key_id(&ephemeral_private_nonce_id).await?; + let sender_offset_public_key = self.get_public_key_at_key_id(&sender_offset_key_id).await?; let challenge = TransactionOutput::finalize_metadata_signature_challenge( txo_version, @@ -1520,16 +1518,18 @@ where TBackend: KeyManagerBackend + 'static metadata_signature_message, ); - let metadata_signature = ComAndPubSignature::sign( - &PrivateKey::default(), - &PrivateKey::default(), - &sender_offset_private_key, - &PrivateKey::default(), - &PrivateKey::default(), - &ephemeral_private_key, - &challenge, - &*self.crypto_factories.commitment, - )?; + let sender_partial_metadata_signature_self = self.sign_with_nonce_and_challenge(sender_offset_key_id, &ephemeral_private_nonce_id, &challenge) + .await?; + + let metadata_signature = ComAndPubSignature::new( + Default::default(), + sender_partial_metadata_signature_self.get_public_nonce().clone(), + Default::default(), + Default::default(), + sender_partial_metadata_signature_self.get_signature().clone(), + ); + + Ok(metadata_signature) } diff --git a/base_layer/wallet/src/output_manager_service/service.rs b/base_layer/wallet/src/output_manager_service/service.rs index 963d1b0f79..93a5f9494b 100644 --- a/base_layer/wallet/src/output_manager_service/service.rs +++ b/base_layer/wallet/src/output_manager_service/service.rs @@ -1765,9 +1765,10 @@ where .with_sender_offset_public_key(sender_offset_public_key) .with_script_key(self.resources.key_manager.get_spend_key().await?.key_id) .with_minimum_value_promise(minimum_value_promise) - .sign_as_sender_and_receiver( + .sign_as_sender_and_receiver_verified( &self.resources.key_manager, &sender_offset_private_key_id_self, + &recipient_address, ) .await .map_err(|e|service_error_with_id(tx_id, e.to_string(), true))? From 02491d3c2a10eb13ac654fc7bd4cefd9237dcabf Mon Sep 17 00:00:00 2001 From: SW van Heerden Date: Wed, 14 Aug 2024 11:38:42 +0200 Subject: [PATCH 2/3] fmt --- base_layer/core/src/transactions/key_manager/inner.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base_layer/core/src/transactions/key_manager/inner.rs b/base_layer/core/src/transactions/key_manager/inner.rs index 0006c11e90..8978b539e9 100644 --- a/base_layer/core/src/transactions/key_manager/inner.rs +++ b/base_layer/core/src/transactions/key_manager/inner.rs @@ -1518,7 +1518,8 @@ where TBackend: KeyManagerBackend + 'static metadata_signature_message, ); - let sender_partial_metadata_signature_self = self.sign_with_nonce_and_challenge(sender_offset_key_id, &ephemeral_private_nonce_id, &challenge) + let sender_partial_metadata_signature_self = self + .sign_with_nonce_and_challenge(sender_offset_key_id, &ephemeral_private_nonce_id, &challenge) .await?; let metadata_signature = ComAndPubSignature::new( @@ -1529,7 +1530,6 @@ where TBackend: KeyManagerBackend + 'static sender_partial_metadata_signature_self.get_signature().clone(), ); - Ok(metadata_signature) } From 8a769104dcf3ff509d3f58107a8b494555b929b5 Mon Sep 17 00:00:00 2001 From: SW van Heerden Date: Wed, 14 Aug 2024 20:08:42 +0200 Subject: [PATCH 3/3] fmt --- base_layer/core/src/transactions/key_manager/inner.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/base_layer/core/src/transactions/key_manager/inner.rs b/base_layer/core/src/transactions/key_manager/inner.rs index 8978b539e9..5d90f49209 100644 --- a/base_layer/core/src/transactions/key_manager/inner.rs +++ b/base_layer/core/src/transactions/key_manager/inner.rs @@ -1506,8 +1506,8 @@ where TBackend: KeyManagerBackend + 'static txo_version: &TransactionOutputVersion, metadata_signature_message: &[u8; 32], ) -> Result { - let ephemeral_pubkey = self.get_public_key_at_key_id(&ephemeral_private_nonce_id).await?; - let sender_offset_public_key = self.get_public_key_at_key_id(&sender_offset_key_id).await?; + let ephemeral_pubkey = self.get_public_key_at_key_id(ephemeral_private_nonce_id).await?; + let sender_offset_public_key = self.get_public_key_at_key_id(sender_offset_key_id).await?; let challenge = TransactionOutput::finalize_metadata_signature_challenge( txo_version, @@ -1519,7 +1519,7 @@ where TBackend: KeyManagerBackend + 'static ); let sender_partial_metadata_signature_self = self - .sign_with_nonce_and_challenge(sender_offset_key_id, &ephemeral_private_nonce_id, &challenge) + .sign_with_nonce_and_challenge(sender_offset_key_id, ephemeral_private_nonce_id, &challenge) .await?; let metadata_signature = ComAndPubSignature::new(