3.6.7 Seal IetfTranscript

This commit is contained in:
Luke Parker 2023-03-01 00:42:01 -05:00
parent 5a3406bb5f
commit a42a84e1e8
No known key found for this signature in database

View file

@ -87,32 +87,37 @@ pub trait Algorithm<C: Curve>: Clone {
) -> Result<Vec<(C::F, C::G)>, ()>;
}
/// IETF-compliant transcript. This is incredibly naive and should not be used within larger
/// protocols.
#[derive(Clone, Debug)]
pub struct IetfTranscript(Vec<u8>);
impl Transcript for IetfTranscript {
type Challenge = Vec<u8>;
mod sealed {
pub use super::*;
fn new(_: &'static [u8]) -> IetfTranscript {
IetfTranscript(vec![])
}
/// IETF-compliant transcript. This is incredibly naive and should not be used within larger
/// protocols.
#[derive(Clone, Debug)]
pub struct IetfTranscript(pub(crate) Vec<u8>);
impl Transcript for IetfTranscript {
type Challenge = Vec<u8>;
fn domain_separate(&mut self, _: &[u8]) {}
fn new(_: &'static [u8]) -> IetfTranscript {
IetfTranscript(vec![])
}
fn append_message<M: AsRef<[u8]>>(&mut self, _: &'static [u8], message: M) {
self.0.extend(message.as_ref());
}
fn domain_separate(&mut self, _: &[u8]) {}
fn challenge(&mut self, _: &'static [u8]) -> Vec<u8> {
self.0.clone()
}
fn append_message<M: AsRef<[u8]>>(&mut self, _: &'static [u8], message: M) {
self.0.extend(message.as_ref());
}
// FROST won't use this and this shouldn't be used outside of FROST
fn rng_seed(&mut self, _: &'static [u8]) -> [u8; 32] {
unimplemented!()
fn challenge(&mut self, _: &'static [u8]) -> Vec<u8> {
self.0.clone()
}
// FROST won't use this and this shouldn't be used outside of FROST
fn rng_seed(&mut self, _: &'static [u8]) -> [u8; 32] {
unimplemented!()
}
}
}
pub(crate) use sealed::IetfTranscript;
/// HRAm usable by the included Schnorr signature algorithm to generate challenges.
pub trait Hram<C: Curve>: Clone {