Skip to main content

agent_cid/
sign.rs

1use base64::{engine::general_purpose::STANDARD, Engine};
2use ed25519_dalek::{Signature, Verifier, VerifyingKey};
3
4pub fn verify_bytes(sig: &[u8], message: &[u8], pubkey: &[u8; 32]) -> bool {
5    let Ok(vk) = VerifyingKey::from_bytes(pubkey) else {
6        return false;
7    };
8    let Ok(arr) = <[u8; 64]>::try_from(sig) else {
9        return false;
10    };
11    let sig = Signature::from_bytes(&arr);
12    vk.verify(message, &sig).is_ok()
13}
14
15pub fn b64encode(data: &[u8]) -> String {
16    STANDARD.encode(data)
17}
18
19pub fn b64decode(s: &str) -> Result<Vec<u8>, base64::DecodeError> {
20    STANDARD.decode(s.as_bytes())
21}