rustls_pki_types

Enum PrivateKeyDer

Source
#[non_exhaustive]
pub enum PrivateKeyDer<'a> { Pkcs1(PrivatePkcs1KeyDer<'a>), Sec1(PrivateSec1KeyDer<'a>), Pkcs8(PrivatePkcs8KeyDer<'a>), }
Expand description

A DER-encoded X.509 private key, in one of several formats

See variant inner types for more detailed information.

This can load several types of PEM-encoded private key, and then reveal which types were found:

use rustls_pki_types::{PrivateKeyDer, pem::PemObject};

// load from a PEM file
let pkcs8 = PrivateKeyDer::from_pem_file("tests/data/nistp256key.pkcs8.pem").unwrap();
let pkcs1 = PrivateKeyDer::from_pem_file("tests/data/rsa1024.pkcs1.pem").unwrap();
let sec1 = PrivateKeyDer::from_pem_file("tests/data/nistp256key.pem").unwrap();
assert!(matches!(pkcs8, PrivateKeyDer::Pkcs8(_)));
assert!(matches!(pkcs1, PrivateKeyDer::Pkcs1(_)));
assert!(matches!(sec1, PrivateKeyDer::Sec1(_)));

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Pkcs1(PrivatePkcs1KeyDer<'a>)

An RSA private key

§

Sec1(PrivateSec1KeyDer<'a>)

A Sec1 private key

§

Pkcs8(PrivatePkcs8KeyDer<'a>)

A PKCS#8 private key

Implementations§

Source§

impl<'a> PrivateKeyDer<'a>

Source

pub fn clone_key(&self) -> PrivateKeyDer<'static>

Available on crate feature alloc only.

Clone the private key to a 'static value

Source

pub fn secret_der(&self) -> &[u8]

Yield the DER-encoded bytes of the private key

Trait Implementations§

Source§

impl<'a> Debug for PrivateKeyDer<'a>

Source§

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

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

impl<'a> From<PrivatePkcs1KeyDer<'a>> for PrivateKeyDer<'a>

Source§

fn from(key: PrivatePkcs1KeyDer<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<PrivatePkcs8KeyDer<'a>> for PrivateKeyDer<'a>

Source§

fn from(key: PrivatePkcs8KeyDer<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<PrivateSec1KeyDer<'a>> for PrivateKeyDer<'a>

Source§

fn from(key: PrivateSec1KeyDer<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> PartialEq for PrivateKeyDer<'a>

Source§

fn eq(&self, other: &PrivateKeyDer<'a>) -> 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 PemObject for PrivateKeyDer<'static>

Available on crate feature alloc only.
Source§

fn from_pem(kind: SectionKind, value: Vec<u8>) -> Option<Self>

Conversion from a PEM SectionKind and body data. Read more
Source§

fn from_pem_slice(pem: &[u8]) -> Result<Self, Error>

Decode the first section of this type from PEM contained in a byte slice. Read more
Source§

fn pem_slice_iter(pem: &[u8]) -> SliceIter<'_, Self>

Iterate over all sections of this type from PEM contained in a byte slice.
Source§

fn from_pem_file(file_name: impl AsRef<Path>) -> Result<Self, Error>

Available on crate feature std only.
Decode the first section of this type from the PEM contents of the named file. Read more
Source§

fn pem_file_iter( file_name: impl AsRef<Path>, ) -> Result<ReadIter<BufReader<File>, Self>, Error>

Available on crate feature std only.
Iterate over all sections of this type from the PEM contents of the named file. Read more
Source§

fn from_pem_reader(rd: impl Read) -> Result<Self, Error>

Available on crate feature std only.
Decode the first section of this type from PEM read from an io::Read.
Source§

fn pem_reader_iter<R: Read>(rd: R) -> ReadIter<BufReader<R>, Self>

Available on crate feature std only.
Iterate over all sections of this type from PEM present in an io::Read.
Source§

impl<'a> TryFrom<&'a [u8]> for PrivateKeyDer<'a>

Source§

type Error = &'static str

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

fn try_from(key: &'a [u8]) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'a> TryFrom<Vec<u8>> for PrivateKeyDer<'a>

Available on crate feature alloc only.
Source§

type Error = &'static str

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

fn try_from(key: Vec<u8>) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'a> Eq for PrivateKeyDer<'a>

Source§

impl<'a> StructuralPartialEq for PrivateKeyDer<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for PrivateKeyDer<'a>

§

impl<'a> RefUnwindSafe for PrivateKeyDer<'a>

§

impl<'a> Send for PrivateKeyDer<'a>

§

impl<'a> Sync for PrivateKeyDer<'a>

§

impl<'a> Unpin for PrivateKeyDer<'a>

§

impl<'a> UnwindSafe for PrivateKeyDer<'a>

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: 32 bytes

Size for each variant:

  • Pkcs1: 24 bytes
  • Sec1: 24 bytes
  • Pkcs8: 24 bytes