Validity

Struct Validity 

Source
pub struct Validity {
    pub not_before: ASN1Time,
    pub not_after: ASN1Time,
}

Fields§

§not_before: ASN1Time§not_after: ASN1Time

Implementations§

Source§

impl Validity

Source

pub fn time_to_expiration(&self) -> Option<Duration>

The time left before the certificate expires.

If the certificate is not currently valid, then None is returned. Otherwise, the Duration until the certificate expires is returned.

Source

pub fn is_valid_at(&self, time: ASN1Time) -> bool

Check the certificate time validity for the provided date/time

Source

pub fn is_valid(&self) -> bool

Check the certificate time validity

Examples found in repository?
examples/print-cert.rs (line 169)
156fn print_x509_info(x509: &X509Certificate) -> io::Result<()> {
157    let version = x509.version();
158    if version.0 < 3 {
159        println!("  Version: {version}");
160    } else {
161        println!("  Version: INVALID({})", version.0);
162    }
163    println!("  Serial: {}", x509.tbs_certificate.raw_serial_as_string());
164    println!("  Subject: {}", x509.subject());
165    println!("  Issuer: {}", x509.issuer());
166    println!("  Validity:");
167    println!("    NotBefore: {}", x509.validity().not_before);
168    println!("    NotAfter:  {}", x509.validity().not_after);
169    println!("    is_valid:  {}", x509.validity().is_valid());
170    println!("  Subject Public Key Info:");
171    print_x509_ski(x509.public_key());
172    print_x509_signature_algorithm(&x509.signature_algorithm, 4);
173
174    println!("  Signature Value:");
175    for l in format_number_to_hex_with_colon(&x509.signature_value.data, 16) {
176        println!("      {l}");
177    }
178    println!("  Extensions:");
179    for ext in x509.extensions() {
180        print_x509_extension(&ext.oid, ext);
181    }
182    println!();
183    print!("Structure validation status: ");
184    #[cfg(feature = "validate")]
185    {
186        let mut logger = VecLogger::default();
187        // structure validation status
188        let ok = X509StructureValidator
189            .chain(X509CertificateValidator)
190            .validate(x509, &mut logger);
191        if ok {
192            println!("Ok");
193        } else {
194            println!("FAIL");
195        }
196        for warning in logger.warnings() {
197            println!("  [W] {warning}");
198        }
199        for error in logger.errors() {
200            println!("  [E] {error}");
201        }
202        println!();
203        if VALIDATE_ERRORS_FATAL && !logger.errors().is_empty() {
204            return Err(io::Error::new(io::ErrorKind::Other, "validation failed"));
205        }
206    }
207    #[cfg(not(feature = "validate"))]
208    {
209        println!("Unknown (feature 'validate' not enabled)");
210    }
211    #[cfg(feature = "verify")]
212    {
213        print!("Signature verification: ");
214        if x509.subject() == x509.issuer() {
215            if x509.verify_signature(None).is_ok() {
216                println!("OK");
217                println!("  [I] certificate is self-signed");
218            } else if x509.subject() == x509.issuer() {
219                println!("FAIL");
220                println!("  [W] certificate looks self-signed, but signature verification failed");
221            }
222        } else {
223            // if subject is different from issuer, we cannot verify certificate without the public key of the issuer
224            println!("N/A");
225        }
226    }
227    Ok(())
228}

Trait Implementations§

Source§

impl Clone for Validity

Source§

fn clone(&self) -> Validity

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Validity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromDer<'_, X509Error> for Validity

Source§

fn from_der(i: &[u8]) -> X509Result<'_, Self>

Attempt to parse input bytes into a DER object (enforcing constraints)
Source§

impl PartialEq for Validity

Source§

fn eq(&self, other: &Validity) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Validity

Source§

impl StructuralPartialEq for Validity

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.