pub struct X509StoreContextRef(/* private fields */);
Expand description

A reference to an X509StoreContext.

Implementations§

source§

impl X509StoreContextRef

source

pub fn ex_data<T>(&self, index: Index<X509StoreContext, T>) -> Option<&T>

Returns application data pertaining to an X509 store context.

This corresponds to X509_STORE_CTX_get_ex_data.

source

pub fn error(&self) -> X509VerifyResult

Returns the error code of the context.

This corresponds to X509_STORE_CTX_get_error.

source

pub fn init<F, T>( &mut self, trust: &X509StoreRef, cert: &X509Ref, cert_chain: &StackRef<X509>, with_context: F ) -> Result<T, ErrorStack>where F: FnOnce(&mut X509StoreContextRef) -> Result<T, ErrorStack>,

Initializes this context with the given certificate, certificates chain and certificate store. After initializing the context, the with_context closure is called with the prepared context. As long as the closure is running, the context stays initialized and can be used to e.g. verify a certificate. The context will be cleaned up, after the closure finished.

  • trust - The certificate store with the trusted certificates.
  • cert - The certificate that should be verified.
  • cert_chain - The certificates chain.
  • with_context - The closure that is called with the initialized context.

This corresponds to X509_STORE_CTX_init before calling with_context and to X509_STORE_CTX_cleanup after calling with_context.

source

pub fn verify_cert(&mut self) -> Result<bool, ErrorStack>

Verifies the stored certificate.

Returns true if verification succeeds. The error method will return the specific validation error if the certificate was not valid.

This will only work inside of a call to init.

This corresponds to X509_verify_cert.

source

pub fn set_error(&mut self, result: X509VerifyResult)

Set the error code of the context.

This corresponds to X509_STORE_CTX_set_error.

source

pub fn current_cert(&self) -> Option<&X509Ref>

Returns a reference to the certificate which caused the error or None if no certificate is relevant to the error.

This corresponds to X509_STORE_CTX_get_current_cert.

source

pub fn error_depth(&self) -> u32

Returns a non-negative integer representing the depth in the certificate chain where the error occurred. If it is zero it occurred in the end entity certificate, one if it is the certificate which signed the end entity certificate and so on.

This corresponds to X509_STORE_CTX_get_error_depth.

source

pub fn chain(&self) -> Option<&StackRef<X509>>

Returns a reference to a complete valid X509 certificate chain.

This corresponds to X509_STORE_CTX_get0_chain.

Trait Implementations§

source§

impl AsRef<X509StoreContextRef> for X509StoreContext

source§

fn as_ref(&self) -> &X509StoreContextRef

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Borrow<X509StoreContextRef> for X509StoreContext

source§

fn borrow(&self) -> &X509StoreContextRef

Immutably borrows from an owned value. Read more
source§

impl ForeignTypeRef for X509StoreContextRef

§

type CType = X509_STORE_CTX

The raw C type.
source§

unsafe fn from_ptr<'a>(ptr: *mut Self::CType) -> &'a Self

Constructs a shared instance of this type from its raw type.
source§

unsafe fn from_ptr_mut<'a>(ptr: *mut Self::CType) -> &'a mut Self

Constructs a mutable reference of this type from its raw type.
source§

fn as_ptr(&self) -> *mut Self::CType

Returns a raw pointer to the wrapped value.
source§

impl Send for X509StoreContextRef

source§

impl Sync for X509StoreContextRef

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.