X509

Struct X509 

Source
pub struct X509(/* private fields */);
Expand description

An X509 public key certificate.

Implementations§

Source§

impl X509

Source

pub fn builder() -> Result<X509Builder, ErrorStack>

Returns a new builder.

Source

pub fn from_pem(pem: &[u8]) -> Result<X509, ErrorStack>

Deserializes a PEM-encoded X509 structure.

The input should have a header of -----BEGIN CERTIFICATE-----.

This corresponds to PEM_read_bio_X509.

Source

pub fn from_der(der: &[u8]) -> Result<X509, ErrorStack>

Deserializes a DER-encoded X509 structure.

This corresponds to d2i_X509.

Source

pub fn stack_from_pem(pem: &[u8]) -> Result<Vec<X509>, ErrorStack>

Deserializes a list of PEM-formatted certificates.

This corresponds to PEM_read_bio_X509.

Methods from Deref<Target = X509Ref>§

Source

pub fn subject_name(&self) -> &X509NameRef

Returns this certificate’s subject name.

This corresponds to X509_get_subject_name.

Source

pub fn subject_name_hash(&self) -> u32

Returns the hash of the certificates subject

This corresponds to X509_subject_name_hash.

Source

pub fn issuer_name(&self) -> &X509NameRef

Returns this certificate’s issuer name.

This corresponds to X509_get_issuer_name.

Source

pub fn issuer_name_hash(&self) -> u32

Returns the hash of the certificates issuer

This corresponds to X509_issuer_name_hash.

Source

pub fn subject_alt_names(&self) -> Option<Stack<GeneralName>>

Returns this certificate’s subject alternative name entries, if they exist.

This corresponds to X509_get_ext_d2i.

Source

pub fn crl_distribution_points(&self) -> Option<Stack<DistPoint>>

Returns this certificate’s CRL distribution points, if they exist.

This corresponds to X509_get_ext_d2i.

Source

pub fn issuer_alt_names(&self) -> Option<Stack<GeneralName>>

Returns this certificate’s issuer alternative name entries, if they exist.

This corresponds to X509_get_ext_d2i.

Source

pub fn authority_info(&self) -> Option<Stack<AccessDescription>>

Returns this certificate’s authority information access entries, if they exist.

This corresponds to X509_get_ext_d2i.

Source

pub fn pathlen(&self) -> Option<u32>

Retrieves the path length extension from a certificate, if it exists.

This corresponds to X509_get_pathlen.

Source

pub fn subject_key_id(&self) -> Option<&Asn1OctetStringRef>

Returns this certificate’s subject key id, if it exists.

This corresponds to X509_get0_subject_key_id.

Source

pub fn authority_key_id(&self) -> Option<&Asn1OctetStringRef>

Returns this certificate’s authority key id, if it exists.

This corresponds to X509_get0_authority_key_id.

Source

pub fn authority_issuer(&self) -> Option<&StackRef<GeneralName>>

Returns this certificate’s authority issuer name entries, if they exist.

This corresponds to X509_get0_authority_issuer.

Source

pub fn authority_serial(&self) -> Option<&Asn1IntegerRef>

Returns this certificate’s authority serial number, if it exists.

This corresponds to X509_get0_authority_serial.

Source

pub fn public_key(&self) -> Result<PKey<Public>, ErrorStack>

This corresponds to X509_get_pubkey.

Source

pub fn digest( &self, hash_type: MessageDigest, ) -> Result<DigestBytes, ErrorStack>

Returns a digest of the DER representation of the certificate.

This corresponds to X509_digest.

Source

pub fn fingerprint( &self, hash_type: MessageDigest, ) -> Result<Vec<u8>, ErrorStack>

👎Deprecated since 0.10.9: renamed to digest
Source

pub fn not_after(&self) -> &Asn1TimeRef

Returns the certificate’s Not After validity period.

This corresponds to X509_getm_notAfter.

Source

pub fn not_before(&self) -> &Asn1TimeRef

Returns the certificate’s Not Before validity period.

This corresponds to X509_getm_notBefore.

Source

pub fn signature(&self) -> &Asn1BitStringRef

Returns the certificate’s signature

This corresponds to X509_get0_signature.

Source

pub fn signature_algorithm(&self) -> &X509AlgorithmRef

Returns the certificate’s signature algorithm.

This corresponds to X509_get0_signature.

Source

pub fn ocsp_responders(&self) -> Result<Stack<OpensslString>, ErrorStack>

Returns the list of OCSP responder URLs specified in the certificate’s Authority Information Access field.

This corresponds to X509_get1_ocsp.

Source

pub fn issued(&self, subject: &X509Ref) -> X509VerifyResult

Checks that this certificate issued subject.

This corresponds to X509_check_issued.

Source

pub fn version(&self) -> i32

Returns certificate version. If this certificate has no explicit version set, it defaults to version 1.

Note that 0 return value stands for version 1, 1 for version 2 and so on.

This corresponds to X509_get_version.

Source

pub fn verify<T>(&self, key: &PKeyRef<T>) -> Result<bool, ErrorStack>
where T: HasPublic,

Check if the certificate is signed using the given public key.

Only the signature is checked: no other checks (such as certificate chain validity) are performed.

Returns true if verification succeeds.

This corresponds to X509_verify.

Source

pub fn serial_number(&self) -> &Asn1IntegerRef

Returns this certificate’s serial number.

This corresponds to X509_get_serialNumber.

Source

pub fn alias(&self) -> Option<&[u8]>

Returns this certificate’s “alias”. This field is populated by OpenSSL in some situations – specifically OpenSSL will store a PKCS#12 friendlyName in this field. This is not a part of the X.509 certificate itself, OpenSSL merely attaches it to this structure in memory.

This corresponds to X509_alias_get0.

Source

pub fn to_pem(&self) -> Result<Vec<u8>, ErrorStack>

Serializes the certificate into a PEM-encoded X509 structure.

The output will have a header of -----BEGIN CERTIFICATE-----.

This corresponds to PEM_write_bio_X509.

Source

pub fn to_der(&self) -> Result<Vec<u8>, ErrorStack>

Serializes the certificate into a DER-encoded X509 structure.

This corresponds to i2d_X509.

Source

pub fn to_text(&self) -> Result<Vec<u8>, ErrorStack>

Converts the certificate to human readable text.

This corresponds to X509_print.

Trait Implementations§

Source§

impl AsRef<X509Ref> for X509

Source§

fn as_ref(&self) -> &X509Ref

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

impl Borrow<X509Ref> for X509

Source§

fn borrow(&self) -> &X509Ref

Immutably borrows from an owned value. Read more
Source§

impl Clone for X509

Source§

fn clone(&self) -> X509

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 X509

Source§

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

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

impl Deref for X509

Source§

type Target = X509Ref

The resulting type after dereferencing.
Source§

fn deref(&self) -> &X509Ref

Dereferences the value.
Source§

impl DerefMut for X509

Source§

fn deref_mut(&mut self) -> &mut X509Ref

Mutably dereferences the value.
Source§

impl Drop for X509

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl ForeignType for X509

Source§

type CType = X509

The raw C type.
Source§

type Ref = X509Ref

The type representing a reference to this type.
Source§

unsafe fn from_ptr(ptr: *mut X509) -> X509

Constructs an instance of this type from its raw type.
Source§

fn as_ptr(&self) -> *mut X509

Returns a raw pointer to the wrapped value.
Source§

impl Ord for X509

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq<X509> for X509Ref

Source§

fn eq(&self, other: &X509) -> 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 PartialEq<X509Ref> for X509

Source§

fn eq(&self, other: &X509Ref) -> 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 PartialEq for X509

Source§

fn eq(&self, other: &Self) -> 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 PartialOrd<X509> for X509Ref

Source§

fn partial_cmp(&self, other: &X509) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialOrd<X509Ref> for X509

Source§

fn partial_cmp(&self, other: &X509Ref) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialOrd for X509

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Stackable for X509

Source§

type StackType = stack_st_X509

The C stack type for this element. Read more
Source§

impl Eq for X509

Source§

impl Send for X509

Source§

impl Sync for X509

Auto Trait Implementations§

§

impl Freeze for X509

§

impl RefUnwindSafe for X509

§

impl Unpin for X509

§

impl UnwindSafe for X509

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<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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes