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

Trait Implementations§

Source§

impl Clone for Validity

Source§

fn clone(&self) -> Validity

Returns a copy 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.