From 251f974b50b852510d07fe93544a542f39ec0764 Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Thu, 30 Jul 2020 18:10:41 -0600 Subject: [PATCH] Allow inspection of signature verification failures --- sdk/src/signature.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/sdk/src/signature.rs b/sdk/src/signature.rs index 94d1605ab1..3d72da9c2b 100644 --- a/sdk/src/signature.rs +++ b/sdk/src/signature.rs @@ -61,16 +61,18 @@ impl Signature { Self(GenericArray::clone_from_slice(&signature_slice)) } + pub(self) fn verify_verbose( + &self, + pubkey_bytes: &[u8], + message_bytes: &[u8], + ) -> Result<(), ed25519_dalek::SignatureError> { + let publickey = ed25519_dalek::PublicKey::from_bytes(pubkey_bytes)?; + let signature = self.0.as_slice().try_into()?; + publickey.verify_strict(message_bytes, &signature) + } + pub fn verify(&self, pubkey_bytes: &[u8], message_bytes: &[u8]) -> bool { - let pubkey = ed25519_dalek::PublicKey::from_bytes(pubkey_bytes); - let signature = self.0.as_slice().try_into(); - if pubkey.is_err() || signature.is_err() { - return false; - } - pubkey - .unwrap() - .verify_strict(message_bytes, &signature.unwrap()) - .is_ok() + self.verify_verbose(pubkey_bytes, message_bytes).is_ok() } }