pub trait NetdocParseableSignatures: Sized {
type HashesAccu: Default + Debug + Clone;
// Required methods
fn is_item_keyword(kw: KeywordRef<'_>) -> bool;
fn from_items<'s>(
input: &mut ItemStream<'s>,
signed_doc_body: SignedDocumentBody<'s>,
sig_hashes: &mut Self::HashesAccu,
stop_at: StopAt<impl StopPredicate>,
) -> Result<Self, ErrorProblem>;
}Expand description
The signatures section of a network document, that can be parsed
Required Associated Types§
Sourcetype HashesAccu: Default + Debug + Clone
type HashesAccu: Default + Debug + Clone
The type used to accumulate document hashes during parsing
Initialised to Default at the start of parsing,
by the parse2 core
Each item in a signatures section is parsed by a SignatureItemParseable impl.
That impl definites an item-specific
HashAccu
type.
The derived
signatures section parsing code finds
the item-specific hash accumulator type
<ITEM as SignatureItemParseable>::HashAccu
via AsMut:
NetdocParseableSignatures::HashesAccu
must impl AsMut for each
SignatureItemParseable::HashAccu.
For a signatures section that can contain multiple signatures with different
hashes, the AsMut will normally be derived by derive_more::AsMut.
For a document with only one hash type,
NetdocParseableSignatures::HashesAccu and SignatureItemParseable::HashAccu
can be the same newtype,
deriving AsMut<Self>.
During signature verification, the document-specific verification could
should throw VerifyFailed::Bug if a hash needed for a signature item
wasn’t populated.
(This isn’t possible if each item’s SignatureItemParseable::from_unparsed_and_body
always calculates and stores the hash.)
Required Methods§
Sourcefn is_item_keyword(kw: KeywordRef<'_>) -> bool
fn is_item_keyword(kw: KeywordRef<'_>) -> bool
Is kw one of this signature section’s keywords
Sourcefn from_items<'s>(
input: &mut ItemStream<'s>,
signed_doc_body: SignedDocumentBody<'s>,
sig_hashes: &mut Self::HashesAccu,
stop_at: StopAt<impl StopPredicate>,
) -> Result<Self, ErrorProblem>
fn from_items<'s>( input: &mut ItemStream<'s>, signed_doc_body: SignedDocumentBody<'s>, sig_hashes: &mut Self::HashesAccu, stop_at: StopAt<impl StopPredicate>, ) -> Result<Self, ErrorProblem>
Parse the signature section from a stream of items
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementors§
Source§impl NetdocParseableSignatures for RouterDescSignatures
impl NetdocParseableSignatures for RouterDescSignatures
type HashesAccu = RouterHashAccu
Source§impl NetdocParseableSignatures for tor_netdoc::parse2::poc::netstatus::cons::NetworkStatusSignatures
Available on crate feature incomplete only.
impl NetdocParseableSignatures for tor_netdoc::parse2::poc::netstatus::cons::NetworkStatusSignatures
incomplete only.Source§impl NetdocParseableSignatures for tor_netdoc::parse2::poc::netstatus::md::NetworkStatusSignatures
Available on crate feature incomplete only.
impl NetdocParseableSignatures for tor_netdoc::parse2::poc::netstatus::md::NetworkStatusSignatures
incomplete only.Source§impl NetdocParseableSignatures for tor_netdoc::parse2::poc::netstatus::vote::NetworkStatusSignatures
Available on crate feature incomplete only.
impl NetdocParseableSignatures for tor_netdoc::parse2::poc::netstatus::vote::NetworkStatusSignatures
incomplete only.