#[non_exhaustive]pub struct AuthCert {
pub dir_key_certificate_version: AuthCertVersion,
pub dir_address: Option<SocketAddrV4>,
pub fingerprint: Fingerprint,
pub dir_key_published: Iso8601TimeSp,
pub dir_key_expires: Iso8601TimeSp,
pub dir_identity_key: PublicKey,
pub dir_signing_key: PublicKey,
pub dir_key_crosscert: CrossCert,
}Expand description
A single directory authority key certificate
This is the body, not including signatures.
https://spec.torproject.org/dir-spec/creating-key-certificates.html
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.dir_key_certificate_version: AuthCertVersionIntro line
Currently must be version 3.
https://spec.torproject.org/dir-spec/creating-key-certificates.html#item:dir-key-certificate-version
dir_address: Option<SocketAddrV4>An IPv4 address for this authority.
fingerprint: FingerprintH(KP_auth_id_rsa)
https://spec.torproject.org/dir-spec/creating-key-certificates.html#item:fingerprint
dir_key_published: Iso8601TimeSpDeclared time when this certificate was published
https://spec.torproject.org/dir-spec/creating-key-certificates.html#item:dir-key-published
dir_key_expires: Iso8601TimeSpDeclared time when this certificate expires.
https://spec.torproject.org/dir-spec/creating-key-certificates.html#item:dir-key-expires
dir_identity_key: PublicKeyKP_auth_id_rsa
The long-term RSA identity key for this authority
https://spec.torproject.org/dir-spec/creating-key-certificates.html#item:dir-identity-key
dir_signing_key: PublicKeyKP_auth_sign_rsa
The medium-term RSA signing key for this authority
https://spec.torproject.org/dir-spec/creating-key-certificates.html#item:dir-signing-key
dir_key_crosscert: CrossCertSHA1(DER(KP_auth_id_rsa)) signed by KP_auth_sign_rsa
https://spec.torproject.org/dir-spec/creating-key-certificates.html#item:dir-key-crosscert
Implementations§
Source§impl AuthCert
impl AuthCert
Sourcepub fn builder() -> AuthCertBuilder
Available on crate feature build_docs only.
pub fn builder() -> AuthCertBuilder
build_docs only.Make an AuthCertBuilder object that can be used to
construct authority certificates for testing.
Sourcepub fn parse(s: &str) -> Result<UncheckedAuthCert>
pub fn parse(s: &str) -> Result<UncheckedAuthCert>
Parse an authority certificate from a string.
This function verifies the certificate’s signatures, but doesn’t check its expiration dates.
Sourcepub fn parse_multiple(
s: &str,
) -> Result<impl Iterator<Item = Result<UncheckedAuthCert>> + '_>
pub fn parse_multiple( s: &str, ) -> Result<impl Iterator<Item = Result<UncheckedAuthCert>> + '_>
Return an iterator yielding authority certificates from a string.
Sourcepub fn signing_key(&self) -> &PublicKey
pub fn signing_key(&self) -> &PublicKey
Return the signing key certified by this certificate.
Sourcepub fn key_ids(&self) -> AuthCertKeyIds
pub fn key_ids(&self) -> AuthCertKeyIds
Return an AuthCertKeyIds object describing the keys in this certificate.
Sourcepub fn id_fingerprint(&self) -> &RsaIdentity
pub fn id_fingerprint(&self) -> &RsaIdentity
Return an RsaIdentity for this certificate’s identity key.
Sourcepub fn published(&self) -> SystemTime
pub fn published(&self) -> SystemTime
Return the time when this certificate says it was published.
Sourcepub fn expires(&self) -> SystemTime
pub fn expires(&self) -> SystemTime
Return the time when this certificate says it should expire.
Trait Implementations§
Source§impl NetdocParseable for AuthCert
impl NetdocParseable for AuthCert
Source§fn doctype_for_error() -> &'static str
fn doctype_for_error() -> &'static str
parse2 only.Source§fn is_intro_item_keyword(kw: KeywordRef<'_>) -> bool
fn is_intro_item_keyword(kw: KeywordRef<'_>) -> bool
parse2 only.Keyword an intro Item Keyword for this kind of document? Read moreSource§fn from_items<'s>(
input: &mut ItemStream<'s>,
outer_stop: StopAt<impl StopPredicate>,
) -> Result<AuthCert, ErrorProblem>
fn from_items<'s>( input: &mut ItemStream<'s>, outer_stop: StopAt<impl StopPredicate>, ) -> Result<AuthCert, ErrorProblem>
parse2 only.Auto Trait Implementations§
impl Freeze for AuthCert
impl RefUnwindSafe for AuthCert
impl Send for AuthCert
impl Sync for AuthCert
impl Unpin for AuthCert
impl UnwindSafe for AuthCert
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
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>
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>
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)
&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)
&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>
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>
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