use crate::tools::hashing;
use crate::tools::types::{Signature, SignatureKey, VerificationKey};
pub fn sign(signature_key: &SignatureKey, data: &[u8]) -> Signature {
use ed25519_dalek::Signer;
let signature = signature_key.0.sign(data);
Signature::from_bytes_exact(signature.into())
}
pub fn sign_multiple(signature_key: &SignatureKey, datas: &[&[u8]]) -> Signature {
let hash = hashing::hash_multiple(datas);
sign(signature_key, hash.as_ref())
}
pub fn verify(verification_key: &VerificationKey, signature: &Signature, data: &[u8]) -> anyhow::Result<()> {
use ed25519_dalek::{Verifier};
let signature = ed25519_dalek::Signature::from_bytes(signature);
let verifying_key = verification_key.0;
verifying_key.verify(data, &signature)?;
Ok(())
}