Allow inspection of signature verification failures

This commit is contained in:
Trent Nelson 2020-07-30 18:10:41 -06:00 committed by Trent Nelson
parent 7889c7603d
commit 251f974b50
1 changed files with 11 additions and 9 deletions

View File

@ -61,16 +61,18 @@ impl Signature {
Self(GenericArray::clone_from_slice(&signature_slice)) Self(GenericArray::clone_from_slice(&signature_slice))
} }
pub fn verify(&self, pubkey_bytes: &[u8], message_bytes: &[u8]) -> bool { pub(self) fn verify_verbose(
let pubkey = ed25519_dalek::PublicKey::from_bytes(pubkey_bytes); &self,
let signature = self.0.as_slice().try_into(); pubkey_bytes: &[u8],
if pubkey.is_err() || signature.is_err() { message_bytes: &[u8],
return false; ) -> 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)
} }
pubkey
.unwrap() pub fn verify(&self, pubkey_bytes: &[u8], message_bytes: &[u8]) -> bool {
.verify_strict(message_bytes, &signature.unwrap()) self.verify_verbose(pubkey_bytes, message_bytes).is_ok()
.is_ok()
} }
} }