Enum X509Error
pub enum X509Error {
Show 22 variants
Generic,
InvalidVersion,
InvalidSerial,
InvalidAlgorithmIdentifier,
InvalidX509Name,
InvalidDate,
InvalidSPKI,
InvalidSubjectUID,
InvalidIssuerUID,
InvalidExtensions,
InvalidAttributes,
DuplicateExtensions,
DuplicateAttributes,
InvalidSignatureValue,
InvalidTbsCertificate,
InvalidUserCertificate,
InvalidCertificate,
SignatureVerificationError,
SignatureUnsupportedAlgorithm,
InvalidNumber,
Der(Error),
NomError(ErrorKind),
}
Expand description
An error that can occur while parsing or validating a certificate.
Variants§
Generic
InvalidVersion
InvalidSerial
InvalidAlgorithmIdentifier
InvalidX509Name
InvalidDate
InvalidSPKI
InvalidSubjectUID
InvalidIssuerUID
InvalidExtensions
InvalidAttributes
DuplicateExtensions
DuplicateAttributes
InvalidSignatureValue
InvalidTbsCertificate
InvalidUserCertificate
InvalidCertificate
Top-level certificate structure is invalid
SignatureVerificationError
SignatureUnsupportedAlgorithm
InvalidNumber
Der(Error)
NomError(ErrorKind)
Trait Implementations§
§impl Error for X509Error
impl Error for X509Error
§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
§impl<'a> FromDer<'a, X509Error> for AttributeTypeAndValue<'a>
impl<'a> FromDer<'a, X509Error> for AttributeTypeAndValue<'a>
§impl<'a> FromDer<'a, X509Error> for AuthorityInfoAccess<'a>
impl<'a> FromDer<'a, X509Error> for AuthorityInfoAccess<'a>
§impl<'a> FromDer<'a, X509Error> for AuthorityKeyIdentifier<'a>
impl<'a> FromDer<'a, X509Error> for AuthorityKeyIdentifier<'a>
§impl<'a> FromDer<'a, X509Error> for BasicConstraints
impl<'a> FromDer<'a, X509Error> for BasicConstraints
§impl<'a> FromDer<'a, X509Error> for CRLDistributionPoints<'a>
impl<'a> FromDer<'a, X509Error> for CRLDistributionPoints<'a>
§impl<'a> FromDer<'a, X509Error> for CertificateRevocationList<'a>
CertificateList ::= SEQUENCE {
tbsCertList TBSCertList,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
impl<'a> FromDer<'a, X509Error> for CertificateRevocationList<'a>
CertificateList ::= SEQUENCE { tbsCertList TBSCertList, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }
§impl<'a> FromDer<'a, X509Error> for ExtendedKeyUsage<'a>
impl<'a> FromDer<'a, X509Error> for ExtendedKeyUsage<'a>
§impl<'a> FromDer<'a, X509Error> for ExtensionRequest<'a>
impl<'a> FromDer<'a, X509Error> for ExtensionRequest<'a>
§impl<'a> FromDer<'a, X509Error> for GeneralName<'a>
impl<'a> FromDer<'a, X509Error> for GeneralName<'a>
§impl<'a> FromDer<'a, X509Error> for InhibitAnyPolicy
impl<'a> FromDer<'a, X509Error> for InhibitAnyPolicy
§impl<'a> FromDer<'a, X509Error> for IssuerAlternativeName<'a>
impl<'a> FromDer<'a, X509Error> for IssuerAlternativeName<'a>
§impl<'a> FromDer<'a, X509Error> for KeyIdentifier<'a>
impl<'a> FromDer<'a, X509Error> for KeyIdentifier<'a>
§impl<'a> FromDer<'a, X509Error> for NSCertType
impl<'a> FromDer<'a, X509Error> for NSCertType
§impl<'a> FromDer<'a, X509Error> for NameConstraints<'a>
impl<'a> FromDer<'a, X509Error> for NameConstraints<'a>
§impl<'a> FromDer<'a, X509Error> for PolicyConstraints
impl<'a> FromDer<'a, X509Error> for PolicyConstraints
§impl<'a> FromDer<'a, X509Error> for PolicyMappings<'a>
impl<'a> FromDer<'a, X509Error> for PolicyMappings<'a>
§impl<'a> FromDer<'a, X509Error> for RSAPublicKey<'a>
impl<'a> FromDer<'a, X509Error> for RSAPublicKey<'a>
§impl<'a> FromDer<'a, X509Error> for RelativeDistinguishedName<'a>
impl<'a> FromDer<'a, X509Error> for RelativeDistinguishedName<'a>
§impl<'a> FromDer<'a, X509Error> for RevokedCertificate<'a>
impl<'a> FromDer<'a, X509Error> for RevokedCertificate<'a>
§impl<'a> FromDer<'a, X509Error> for SubjectAlternativeName<'a>
impl<'a> FromDer<'a, X509Error> for SubjectAlternativeName<'a>
§impl<'a> FromDer<'a, X509Error> for SubjectInfoAccess<'a>
impl<'a> FromDer<'a, X509Error> for SubjectInfoAccess<'a>
§impl<'a> FromDer<'a, X509Error> for SubjectPublicKeyInfo<'a>
impl<'a> FromDer<'a, X509Error> for SubjectPublicKeyInfo<'a>
§impl<'a> FromDer<'a, X509Error> for TbsCertList<'a>
impl<'a> FromDer<'a, X509Error> for TbsCertList<'a>
§impl<'a> FromDer<'a, X509Error> for TbsCertificate<'a>
impl<'a> FromDer<'a, X509Error> for TbsCertificate<'a>
§fn from_der(
i: &'a [u8],
) -> Result<(&'a [u8], TbsCertificate<'a>), Err<X509Error>>
fn from_der( i: &'a [u8], ) -> Result<(&'a [u8], TbsCertificate<'a>), Err<X509Error>>
Parse a DER-encoded TbsCertificate object
TBSCertificate ::= SEQUENCE { version [0] Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 extensions [3] Extensions OPTIONAL -- If present, version MUST be v3 -- }
§impl<'a> FromDer<'a, X509Error> for X509Certificate<'a>
impl<'a> FromDer<'a, X509Error> for X509Certificate<'a>
§fn from_der(
i: &'a [u8],
) -> Result<(&'a [u8], X509Certificate<'a>), Err<X509Error>>
fn from_der( i: &'a [u8], ) -> Result<(&'a [u8], X509Certificate<'a>), Err<X509Error>>
Parse a DER-encoded X.509 Certificate, and return the remaining of the input and the built object.
The returned object uses zero-copy, and so has the same lifetime as the input.
Note that only parsing is done, not validation.
Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }
§Example
To parse a certificate and print the subject and issuer:
let res = parse_x509_certificate(DER);
match res {
Ok((_rem, x509)) => {
let subject = x509.subject();
let issuer = x509.issuer();
println!("X.509 Subject: {}", subject);
println!("X.509 Issuer: {}", issuer);
},
_ => panic!("x509 parsing failed: {:?}", res),
}
§impl<'a> FromDer<'a, X509Error> for X509CertificationRequest<'a>
CertificationRequest ::= SEQUENCE {
certificationRequestInfo CertificationRequestInfo,
signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
signature BIT STRING
}
impl<'a> FromDer<'a, X509Error> for X509CertificationRequest<'a>
CertificationRequest ::= SEQUENCE { certificationRequestInfo CertificationRequestInfo, signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }}, signature BIT STRING }
§impl<'a> FromDer<'a, X509Error> for X509CertificationRequestInfo<'a>
CertificationRequestInfo ::= SEQUENCE {
version INTEGER { v1(0) } (v1,...),
subject Name,
subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
attributes [0] Attributes{{ CRIAttributes }}
}
impl<'a> FromDer<'a, X509Error> for X509CertificationRequestInfo<'a>
CertificationRequestInfo ::= SEQUENCE { version INTEGER { v1(0) } (v1,...), subject Name, subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }}, attributes [0] Attributes{{ CRIAttributes }} }
§impl<'a> FromDer<'a, X509Error> for X509CriAttribute<'a>
impl<'a> FromDer<'a, X509Error> for X509CriAttribute<'a>
§impl<'a> FromDer<'a, X509Error> for X509Extension<'a>
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }
impl<'a> FromDer<'a, X509Error> for X509Extension<'a>
Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING }
§impl<'a> FromDer<'a, X509Error> for X509Version
impl<'a> FromDer<'a, X509Error> for X509Version
§impl<'ber, 'a> FromDer<'ber, X509Error> for AlgorithmIdentifier<'a>where
'ber: 'a,
impl<'ber, 'a> FromDer<'ber, X509Error> for AlgorithmIdentifier<'a>where
'ber: 'a,
§impl<I> ParseError<I> for X509Error
impl<I> ParseError<I> for X509Error
§fn from_error_kind(_input: I, kind: ErrorKind) -> X509Error
fn from_error_kind(_input: I, kind: ErrorKind) -> X509Error
Creates an error from the input position and an ErrorKind
§fn append(_input: I, kind: ErrorKind, _other: X509Error) -> X509Error
fn append(_input: I, kind: ErrorKind, _other: X509Error) -> X509Error
Combines an existing error with a new one created from the input
position and an ErrorKind. This is useful when backtracking
through a parse tree, accumulating error context on the way
§impl<'a> Parser<&'a [u8], TbsCertificate<'a>, X509Error> for TbsCertificateParser
impl<'a> Parser<&'a [u8], TbsCertificate<'a>, X509Error> for TbsCertificateParser
§fn parse(
&mut self,
input: &'a [u8],
) -> Result<(&'a [u8], TbsCertificate<'a>), Err<X509Error>>
fn parse( &mut self, input: &'a [u8], ) -> Result<(&'a [u8], TbsCertificate<'a>), Err<X509Error>>
A parser takes in input type, and returns a
Result
containing
either the remaining input and the output value, or an error§fn flat_map<G, H, O2>(self, g: G) -> FlatMap<Self, G, O>
fn flat_map<G, H, O2>(self, g: G) -> FlatMap<Self, G, O>
Creates a second parser from the output of the first one, then apply over the rest of the input
§fn and_then<G, O2>(self, g: G) -> AndThen<Self, G, O>
fn and_then<G, O2>(self, g: G) -> AndThen<Self, G, O>
Applies a second parser over the output of the first one
§fn and<G, O2>(self, g: G) -> And<Self, G>
fn and<G, O2>(self, g: G) -> And<Self, G>
Applies a second parser after the first one, return their results as a tuple
§impl<'a> Parser<&'a [u8], X509Certificate<'a>, X509Error> for X509CertificateParser
impl<'a> Parser<&'a [u8], X509Certificate<'a>, X509Error> for X509CertificateParser
§fn parse(
&mut self,
input: &'a [u8],
) -> Result<(&'a [u8], X509Certificate<'a>), Err<X509Error>>
fn parse( &mut self, input: &'a [u8], ) -> Result<(&'a [u8], X509Certificate<'a>), Err<X509Error>>
A parser takes in input type, and returns a
Result
containing
either the remaining input and the output value, or an error§fn flat_map<G, H, O2>(self, g: G) -> FlatMap<Self, G, O>
fn flat_map<G, H, O2>(self, g: G) -> FlatMap<Self, G, O>
Creates a second parser from the output of the first one, then apply over the rest of the input
§fn and_then<G, O2>(self, g: G) -> AndThen<Self, G, O>
fn and_then<G, O2>(self, g: G) -> AndThen<Self, G, O>
Applies a second parser over the output of the first one
§fn and<G, O2>(self, g: G) -> And<Self, G>
fn and<G, O2>(self, g: G) -> And<Self, G>
Applies a second parser after the first one, return their results as a tuple
§impl<'a> Parser<&'a [u8], X509Extension<'a>, X509Error> for X509ExtensionParser
impl<'a> Parser<&'a [u8], X509Extension<'a>, X509Error> for X509ExtensionParser
§fn parse(
&mut self,
input: &'a [u8],
) -> Result<(&'a [u8], X509Extension<'a>), Err<X509Error>>
fn parse( &mut self, input: &'a [u8], ) -> Result<(&'a [u8], X509Extension<'a>), Err<X509Error>>
A parser takes in input type, and returns a
Result
containing
either the remaining input and the output value, or an error§fn flat_map<G, H, O2>(self, g: G) -> FlatMap<Self, G, O>
fn flat_map<G, H, O2>(self, g: G) -> FlatMap<Self, G, O>
Creates a second parser from the output of the first one, then apply over the rest of the input
§fn and_then<G, O2>(self, g: G) -> AndThen<Self, G, O>
fn and_then<G, O2>(self, g: G) -> AndThen<Self, G, O>
Applies a second parser over the output of the first one
§fn and<G, O2>(self, g: G) -> And<Self, G>
fn and<G, O2>(self, g: G) -> And<Self, G>
Applies a second parser after the first one, return their results as a tuple
impl StructuralPartialEq for X509Error
Auto Trait Implementations§
impl Freeze for X509Error
impl RefUnwindSafe for X509Error
impl Send for X509Error
impl Sync for X509Error
impl Unpin for X509Error
impl UnwindSafe for X509Error
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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,
§impl<Error> ErrorExt for Error
impl<Error> ErrorExt for Error
§fn context<M>(self, context: M) -> OpaqueError
fn context<M>(self, context: M) -> OpaqueError
Wrap the error in a context. Read more
§fn with_context<C, F>(self, context: F) -> OpaqueError
fn with_context<C, F>(self, context: F) -> OpaqueError
Lazily wrap the error with a context. Read more
§fn backtrace(self) -> OpaqueError
fn backtrace(self) -> OpaqueError
§fn into_opaque(self) -> OpaqueError
fn into_opaque(self) -> OpaqueError
Convert the error into an
OpaqueError
. Read more§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Create a new
Policy
that returns Action::Follow
only if self
and other
return
Action::Follow
. Read more§impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
type Error = <U as RamaTryFrom<T>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
impl<T, U> RamaTryInto<U> for Twhere
U: RamaTryFrom<T>,
type Error = <U as RamaTryFrom<T>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T> ToSmolStr for T
impl<T> ToSmolStr for T
fn to_smolstr(&self) -> SmolStr
§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string
, but without panic on OOM.