fuel_crypto/ed25519.rs
1//! ED25519 signature verification
2
3use ed25519_dalek::Signature;
4use fuel_types::{
5 Bytes32,
6 Bytes64,
7};
8
9use crate::Error;
10
11/// Verify a signature against a message digest and a public key.
12pub fn verify(
13 pub_key: &Bytes32,
14 signature: &Bytes64,
15 message: &[u8],
16) -> Result<(), Error> {
17 let signature = Signature::from_bytes(signature);
18
19 let pub_key = ed25519_dalek::VerifyingKey::from_bytes(pub_key)
20 .map_err(|_| Error::InvalidPublicKey)?;
21
22 if pub_key.verify_strict(message, &signature).is_ok() {
23 Ok(())
24 } else {
25 Err(Error::InvalidSignature)
26 }
27}