summaryrefslogtreecommitdiff
path: root/exes/webhook/src/handler/signature.rs
blob: 5a486455bc8b185aa532d3c11c77c0a32db780e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
use ed25519_dalek::{PublicKey, Signature, Verifier};

#[inline]
pub fn validate(public_key: &PublicKey, data: &[u8], hex_signature: &str) -> bool {
    let mut slice: [u8; Signature::BYTE_SIZE] = [0; Signature::BYTE_SIZE];
    let signature_result = hex::decode_to_slice(hex_signature, &mut slice);

    if signature_result.is_ok() {
        public_key.verify(data, &Signature::from(slice)).is_ok()
    } else {
        false
    }
}