diff --git a/base_layer/core/src/transactions/key_manager/inner.rs b/base_layer/core/src/transactions/key_manager/inner.rs index 4d8c784768..5d90f49209 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))?