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}