pub struct PrivateKeyInfo {
    pub version: u8,
    pub private_key_algorithm: AlgorithmIdentifier,
    pub private_key: PrivateKeyValue,
    pub public_key: Option<ExplicitContextTag1<Optional<BitStringAsn1>>>,
}
Expand description

Public-Key Cryptography Standards (PKCS) #8 Asymmetric Key Packages

Section 5

Private-key information shall have ASN.1 type OneAsymmetricKey (Backwards-compatible with PrivateKeyInfo from RFC5208):

OneAsymmetricKey ::= SEQUENCE {
     version                   Version,
     privateKeyAlgorithm       PrivateKeyAlgorithmIdentifier,
     privateKey                PrivateKey,
     attributes           [0]  IMPLICIT Attributes OPTIONAL,
     ...,
     [[2: publicKey       [1] PublicKey OPTIONAL ]],
     ...
}

  Version ::= INTEGER { v1(0), v2(1) } (v1, ..., v2)

  PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier

  PrivateKey ::= OCTET STRING

  PublicKey ::= BIT STRING

  Attributes ::= SET OF Attribute { { OneAsymmetricKeyAttributes } }

The fields of type OneAsymmetricKey have the following meanings:

version identifies the version of OneAsymmetricKey. If publicKey is present, then version is set to v2(1) else version is set to v1(0).

privateKeyAlgorithm identifies the private-key algorithm. One example of a private-key algorithm is PKCS #1’s rsaEncryption.

privateKey is an octet string whose contents are the value of the private key. The interpretation of the contents is defined in the registration of the private-key algorithm. For an RSA private key, for example, the contents are a BER encoding of a value of type RSAPrivateKey.

publicKey is OPTIONAL. When present, it contains the public key encoded in a BIT STRING. The structure within the BIT STRING, if any, depends on the privateKeyAlgorithm

attributes is a set of attributes. These are the extended information that is encrypted along with the private-key information.

Fields§

§version: u8§private_key_algorithm: AlgorithmIdentifier§private_key: PrivateKeyValue§public_key: Option<ExplicitContextTag1<Optional<BitStringAsn1>>>

Implementations§

source§

impl PrivateKeyInfo

source

pub fn new_rsa_encryption( modulus: IntegerAsn1, public_exponent: IntegerAsn1, private_exponent: IntegerAsn1, primes: (IntegerAsn1, IntegerAsn1), exponents: (IntegerAsn1, IntegerAsn1), coefficient: IntegerAsn1 ) -> Self

source

pub fn new_ec_encryption( curve_oid: ObjectIdentifier, secret: impl Into<OctetStringAsn1>, public_point: Option<BitString>, skip_optional_params: bool ) -> Self

Creates a new PrivateKeyInfo with the given curve_oid and secret.

If skip_optional_params is true, the parameters field will be omitted from internal ECPrivateKey ASN.1 structure, reducing duplication. This information is still present in the private_key_algorithm field.

source

pub fn new_ed_encryption( algorithm: ObjectIdentifier, secret: impl Into<OctetStringAsn1>, public_key: Option<BitString> ) -> Self

Trait Implementations§

source§

impl Clone for PrivateKeyInfo

source§

fn clone(&self) -> PrivateKeyInfo

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 PrivateKeyInfo

source§

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

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

impl<'de> Deserialize<'de> for PrivateKeyInfo

source§

fn deserialize<D>( deserializer: D ) -> Result<Self, <D as Deserializer<'de>>::Error>where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl PartialEq<PrivateKeyInfo> for PrivateKeyInfo

source§

fn eq(&self, other: &PrivateKeyInfo) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for PrivateKeyInfo

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for PrivateKeyInfo

source§

impl StructuralEq for PrivateKeyInfo

source§

impl StructuralPartialEq for PrivateKeyInfo

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> ToOwned for Twhere T: Clone,

§

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 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.
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,