use crate::consts::SIGNATURE_VALUE_LENGTH;
use sha2::{Digest, Sha256};
use crate::protocol::signature::Sign;
use crate::protocol::SignatureValue;
#[derive(Debug, Default)]
pub struct MavSha256 {
hasher: Sha256,
}
impl Sign for MavSha256 {
fn reset(&mut self) {
self.hasher.reset();
}
fn digest(&mut self, bytes: &[u8]) {
self.hasher.update(bytes)
}
fn produce(&self) -> SignatureValue {
let sha256 = self.hasher.clone().finalize();
let mut bytes = [0; SIGNATURE_VALUE_LENGTH];
bytes.copy_from_slice(&sha256[0..SIGNATURE_VALUE_LENGTH]);
bytes
}
}