From 184d4af31fc3ebfdbd76d3bdba3e00275cec997f Mon Sep 17 00:00:00 2001 From: Sosthene Date: Mon, 27 May 2024 14:41:33 +0200 Subject: [PATCH] [bug] false negative when decrypting message --- crates/sp_client/src/api.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/crates/sp_client/src/api.rs b/crates/sp_client/src/api.rs index 19c49ba..c2ea56e 100644 --- a/crates/sp_client/src/api.rs +++ b/crates/sp_client/src/api.rs @@ -463,25 +463,27 @@ fn handle_recover_transaction( shared_secret.to_byte_array().to_lower_hex_string() ); + let mut plaintext: Vec = vec![]; if let Some(cipher_pos) = messages.iter().position(|m| { if m.status != CachedMessageStatus::CipherWaitingTx { return false; } - m.try_decrypt_with_shared_secret(shared_secret.to_byte_array()) - .is_ok() + let res = m.try_decrypt_with_shared_secret(shared_secret.to_byte_array()); + if res.is_ok() { + plaintext = res.unwrap(); + return true; + } else { + return false; + } }) { let message = messages.get_mut(cipher_pos).unwrap(); let (outpoint, output) = utxo_created.into_iter().next().unwrap(); + let cipher_msg: CipherMessage = serde_json::from_slice(&plaintext)?; message.commited_in = Some(outpoint.clone()); message.shared_secret = Some(shared_secret.to_byte_array().to_lower_hex_string()); message.commitment = Some(commitment_str); - - let plaintext = message - .try_decrypt_with_shared_secret(shared_secret.to_byte_array()) - .unwrap(); - let cipher_msg: CipherMessage = serde_json::from_slice(&plaintext)?; message.plaintext = Some(cipher_msg.message); message.sender = Some(cipher_msg.sender); message.recipient = Some(sp_wallet.get_client().get_receiving_address());