pub struct AuthCertUnverified {
body: AuthCert,
pub sigs: SignaturesData<AuthCertUnverified>,
}Expand description
Signed (unverified) form of AuthCert
Embodies:
AuthCert: document bodyAuthCertSignatures: signatures
If this type was parsed from a document text, the signatures have not yet been verified.
Use a .verify_... method to obtain useable, verified, contents.
Fields§
§body: AuthCertThe actual body
sigs: SignaturesData<AuthCertUnverified>Signatures
Implementations§
Source§impl AuthCertUnverified
impl AuthCertUnverified
Sourcepub fn verify(
self,
v3idents: &[RsaIdentity],
pre_tolerance: Duration,
post_tolerance: Duration,
now: SystemTime,
) -> StdResult<AuthCert, VerifyFailed>
pub fn verify( self, v3idents: &[RsaIdentity], pre_tolerance: Duration, post_tolerance: Duration, now: SystemTime, ) -> StdResult<AuthCert, VerifyFailed>
Verifies the signature of a AuthCert
§Algorithm
- Check whether this comes from a valid authority in
v3idents. - Check whether the timestamps are valid (± tolerance).
- Check whether the fingerprint and long-term identity key match.
- Check the cross-certificate (proof-of-ownership of signing key).
- Check the outer certificate (proof-of-ownership of identity key).
TODO: Replace pre_tolerance and post_tolerance with
tor_dircommon::config::DirTolerance which is not possible at the
moment due to a circular dependency of tor-dircommon depending
upon tor-netdoc.
TODO: Consider whether to try to deduplicate this signature checking
somehow, wrt to UncheckedAuthCert.
Sourcepub fn verify_selfcert(
self,
now: SystemTime,
) -> StdResult<AuthCert, VerifyFailed>
pub fn verify_selfcert( self, now: SystemTime, ) -> StdResult<AuthCert, VerifyFailed>
Verify the signatures (and check validity times)
The pre and post tolerance (time check allowances) used are both zero.
§Security considerations
The caller must check that the KP_auth_id is correct/relevant.
Trait Implementations§
Source§impl Clone for AuthCertUnverified
impl Clone for AuthCertUnverified
Source§fn clone(&self) -> AuthCertUnverified
fn clone(&self) -> AuthCertUnverified
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AuthCertUnverified
impl Debug for AuthCertUnverified
Source§impl NetdocParseable for AuthCertUnverified
impl NetdocParseable for AuthCertUnverified
Source§fn doctype_for_error() -> &'static str
fn doctype_for_error() -> &'static str
Document type for errors, normally its intro keyword
Source§fn is_intro_item_keyword(kw: KeywordRef<'_>) -> bool
fn is_intro_item_keyword(kw: KeywordRef<'_>) -> bool
Is
Keyword an intro Item Keyword for this kind of document? Read moreSource§fn is_structural_keyword(kw: KeywordRef<'_>) -> Option<IsStructural>
fn is_structural_keyword(kw: KeywordRef<'_>) -> Option<IsStructural>
Is
Keyword a structural keyword for this kind of document? Read moreSource§fn from_items<'s>(
input: &mut ItemStream<'s>,
outer_stop: StopAt<impl StopPredicate>,
) -> Result<AuthCertUnverified, ErrorProblem>
fn from_items<'s>( input: &mut ItemStream<'s>, outer_stop: StopAt<impl StopPredicate>, ) -> Result<AuthCertUnverified, ErrorProblem>
Parse the document from a stream of Items Read more
Source§impl NetdocUnverified for AuthCertUnverified
impl NetdocUnverified for AuthCertUnverified
Source§type Signatures = AuthCertSignatures
type Signatures = AuthCertSignatures
The signatures (the whole signature section)
Source§fn inspect_unverified(
&self,
) -> (&Self::Body, &SignaturesData<AuthCertUnverified>)
fn inspect_unverified( &self, ) -> (&Self::Body, &SignaturesData<AuthCertUnverified>)
Inspect the document (and its signatures) Read more
Source§fn unwrap_unverified(self) -> (Self::Body, SignaturesData<AuthCertUnverified>)
fn unwrap_unverified(self) -> (Self::Body, SignaturesData<AuthCertUnverified>)
Obtain the actual document (and signatures), without verifying Read more
Source§fn from_parts(
body: Self::Body,
sigs: SignaturesData<AuthCertUnverified>,
) -> Self
fn from_parts( body: Self::Body, sigs: SignaturesData<AuthCertUnverified>, ) -> Self
Construct a new
NetdocUnverified from a body and signatures Read moreAuto Trait Implementations§
impl Freeze for AuthCertUnverified
impl RefUnwindSafe for AuthCertUnverified
impl Send for AuthCertUnverified
impl Sync for AuthCertUnverified
impl Unpin for AuthCertUnverified
impl UnsafeUnpin for AuthCertUnverified
impl UnwindSafe for AuthCertUnverified
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more