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}