[bug] false negative when decrypting message

This commit is contained in:
Sosthene 2024-05-27 14:41:33 +02:00
parent b875b64a0a
commit 184d4af31f

View File

@ -463,25 +463,27 @@ fn handle_recover_transaction(
shared_secret.to_byte_array().to_lower_hex_string() shared_secret.to_byte_array().to_lower_hex_string()
); );
let mut plaintext: Vec<u8> = vec![];
if let Some(cipher_pos) = messages.iter().position(|m| { if let Some(cipher_pos) = messages.iter().position(|m| {
if m.status != CachedMessageStatus::CipherWaitingTx { if m.status != CachedMessageStatus::CipherWaitingTx {
return false; return false;
} }
m.try_decrypt_with_shared_secret(shared_secret.to_byte_array()) let res = m.try_decrypt_with_shared_secret(shared_secret.to_byte_array());
.is_ok() if res.is_ok() {
plaintext = res.unwrap();
return true;
} else {
return false;
}
}) { }) {
let message = messages.get_mut(cipher_pos).unwrap(); let message = messages.get_mut(cipher_pos).unwrap();
let (outpoint, output) = utxo_created.into_iter().next().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.commited_in = Some(outpoint.clone());
message.shared_secret = Some(shared_secret.to_byte_array().to_lower_hex_string()); message.shared_secret = Some(shared_secret.to_byte_array().to_lower_hex_string());
message.commitment = Some(commitment_str); 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.plaintext = Some(cipher_msg.message);
message.sender = Some(cipher_msg.sender); message.sender = Some(cipher_msg.sender);
message.recipient = Some(sp_wallet.get_client().get_receiving_address()); message.recipient = Some(sp_wallet.get_client().get_receiving_address());