X509Builder

Struct X509Builder 

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

A builder used to construct an X509.

Implementations§

Source§

impl X509Builder

Source

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

Creates a new builder.

This corresponds to X509_new.

Source

pub fn set_not_after( &mut self, not_after: &Asn1TimeRef, ) -> Result<(), ErrorStack>

Sets the notAfter constraint on the certificate.

This corresponds to X509_set1_notAfter.

Source

pub fn set_not_before( &mut self, not_before: &Asn1TimeRef, ) -> Result<(), ErrorStack>

Sets the notBefore constraint on the certificate.

This corresponds to X509_set1_notBefore.

Source

pub fn set_version(&mut self, version: i32) -> Result<(), ErrorStack>

Sets the version of the certificate.

Note that the version is zero-indexed; that is, a certificate corresponding to version 3 of the X.509 standard should pass 2 to this method.

This corresponds to X509_set_version.

Source

pub fn set_serial_number( &mut self, serial_number: &Asn1IntegerRef, ) -> Result<(), ErrorStack>

Sets the serial number of the certificate.

This corresponds to X509_set_serialNumber.

Source

pub fn set_issuer_name( &mut self, issuer_name: &X509NameRef, ) -> Result<(), ErrorStack>

Sets the issuer name of the certificate.

This corresponds to X509_set_issuer_name.

Source

pub fn set_subject_name( &mut self, subject_name: &X509NameRef, ) -> Result<(), ErrorStack>

Sets the subject name of the certificate.

When building certificates, the C, ST, and O options are common when using the openssl command line tools. The CN field is used for the common name, such as a DNS name.

use openssl::x509::{X509, X509NameBuilder};

let mut x509_name = openssl::x509::X509NameBuilder::new().unwrap();
x509_name.append_entry_by_text("C", "US").unwrap();
x509_name.append_entry_by_text("ST", "CA").unwrap();
x509_name.append_entry_by_text("O", "Some organization").unwrap();
x509_name.append_entry_by_text("CN", "www.example.com").unwrap();
let x509_name = x509_name.build();

let mut x509 = openssl::x509::X509::builder().unwrap();
x509.set_subject_name(&x509_name).unwrap();

This corresponds to X509_set_subject_name.

Source

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

Sets the public key associated with the certificate.

This corresponds to X509_set_pubkey.

Source

pub fn x509v3_context<'a>( &'a self, issuer: Option<&'a X509Ref>, conf: Option<&'a ConfRef>, ) -> X509v3Context<'a>

Returns a context object which is needed to create certain X509 extension values.

Set issuer to None if the certificate will be self-signed.

This corresponds to X509V3_set_ctx.

Source

pub fn append_extension( &mut self, extension: X509Extension, ) -> Result<(), ErrorStack>

Adds an X509 extension value to the certificate.

This works just as append_extension except it takes ownership of the X509Extension.

Source

pub fn append_extension2( &mut self, extension: &X509ExtensionRef, ) -> Result<(), ErrorStack>

Adds an X509 extension value to the certificate.

This corresponds to X509_add_ext.

Source

pub fn sign<T>( &mut self, key: &PKeyRef<T>, hash: MessageDigest, ) -> Result<(), ErrorStack>
where T: HasPrivate,

Signs the certificate with a private key.

This corresponds to X509_sign.

Source

pub fn build(self) -> X509

Consumes the builder, returning the certificate.

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<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> 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, 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