use sha2::{Digest, Sha512};
#[derive(Default)]
pub struct Transcript { h: Sha512 }
impl Transcript {
pub fn new() -> Self { Self { h: Sha512::new() } }
pub fn absorb(&mut self, label: &str, data: &[u8]) {
self.h.update(label.as_bytes());
self.h.update(&(data.len() as u64).to_be_bytes());
self.h.update(data);
}
pub fn finish(self) -> Vec<u8> { self.h.finalize().to_vec() }
}