Skip to content

Commit

Permalink
(1)add verify_slate_messages for wallet receive (2)log the message co…
Browse files Browse the repository at this point in the history
…ntent
  • Loading branch information
garyyu committed Dec 22, 2018
1 parent aa8d0cf commit 9584ca7
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
9 changes: 7 additions & 2 deletions core/src/libtx/slate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -351,8 +351,8 @@ impl Slate {
/// Verifies any messages in the slate's participant data match their signatures
pub fn verify_messages(&self, secp: &secp::Secp256k1) -> Result<(), Error> {
for p in self.participant_data.iter() {
if let Some(m) = p.message.clone() {
let hashed = blake2b(secp::constants::MESSAGE_SIZE, &[], &m.as_bytes()[..]);
if let Some(msg) = p.message.clone() {
let hashed = blake2b(secp::constants::MESSAGE_SIZE, &[], &msg.as_bytes()[..]);
let m = secp::Message::from_slice(&hashed.as_bytes())?;
if !aggsig::verify_single(
secp,
Expand All @@ -363,9 +363,14 @@ impl Slate {
Some(&p.public_blind_excess),
false,
) {
error!("verify_messages - participant message doesn't match signature. Message: \"{}\"",
String::from_utf8_lossy(&msg.as_bytes()[..]));
return Err(ErrorKind::Signature(
"Optional participant messages do not match signatures".to_owned(),
))?;
} else {
info!("verify_messages - signature verified ok. Participant message: \"{}\"",
String::from_utf8_lossy(&msg.as_bytes()[..]));
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions wallet/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,10 @@ pub fn receive(
let adapter = FileWalletCommAdapter::new();
let mut slate = adapter.receive_tx_async(&args.input)?;
controller::foreign_single_use(wallet, |api| {
if let Err(e) = api.verify_slate_messages(&slate) {
error!("Error validating participant messages: {}", e);
return Err(e);
}
api.receive_tx(&mut slate, Some(&g_args.account), args.message.clone())?;
Ok(())
})?;
Expand Down
8 changes: 8 additions & 0 deletions wallet/src/libwallet/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,14 @@ where
res
}

/// Verifies all messages in the slate match their public keys
pub fn verify_slate_messages(&mut self, slate: &Slate) -> Result<(), Error> {
error!("verify_slate_messages - enter");
let secp = Secp256k1::with_caps(ContextFlag::VerifyOnly);
slate.verify_messages(&secp)?;
Ok(())
}

/// Receive a transaction from a sender
pub fn receive_tx(
&mut self,
Expand Down

0 comments on commit 9584ca7

Please sign in to comment.