Struct pkcs8::PrivateKeyInfo
source · pub struct PrivateKeyInfo<'a> {
pub algorithm: AlgorithmIdentifierRef<'a>,
pub private_key: &'a [u8],
pub public_key: Option<&'a [u8]>,
}
Expand description
PKCS#8 PrivateKeyInfo
.
ASN.1 structure containing an AlgorithmIdentifier
, private key
data in an algorithm specific format, and optional attributes
(ignored by this implementation).
Supports PKCS#8 v1 as described in RFC 5208 and PKCS#8 v2 as described in RFC 5958. PKCS#8 v2 keys include an additional public key field.
PKCS#8 v1 PrivateKeyInfo
Described in RFC 5208 Section 5:
PrivateKeyInfo ::= SEQUENCE {
version Version,
privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
privateKey PrivateKey,
attributes [0] IMPLICIT Attributes OPTIONAL }
Version ::= INTEGER
PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
PrivateKey ::= OCTET STRING
Attributes ::= SET OF Attribute
PKCS#8 v2 OneAsymmetricKey
PKCS#8 OneAsymmetricKey
as described in RFC 5958 Section 2:
PrivateKeyInfo ::= OneAsymmetricKey
OneAsymmetricKey ::= SEQUENCE {
version Version,
privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
privateKey PrivateKey,
attributes [0] Attributes OPTIONAL,
...,
[[2: publicKey [1] PublicKey OPTIONAL ]],
...
}
Version ::= INTEGER { v1(0), v2(1) } (v1, ..., v2)
PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
PrivateKey ::= OCTET STRING
Attributes ::= SET OF Attribute
PublicKey ::= BIT STRING
Fields§
§algorithm: AlgorithmIdentifierRef<'a>
X.509 AlgorithmIdentifier
for the private key type.
private_key: &'a [u8]
Private key data.
public_key: Option<&'a [u8]>
Public key data, optionally available if version is V2.
Implementations§
source§impl<'a> PrivateKeyInfo<'a>
impl<'a> PrivateKeyInfo<'a>
sourcepub fn new(algorithm: AlgorithmIdentifierRef<'a>, private_key: &'a [u8]) -> Self
pub fn new(algorithm: AlgorithmIdentifierRef<'a>, private_key: &'a [u8]) -> Self
Create a new PKCS#8 PrivateKeyInfo
message.
This is a helper method which initializes attributes
and public_key
to None
, helpful if you aren’t using those.
sourcepub fn version(&self) -> Version
pub fn version(&self) -> Version
Get the PKCS#8 Version
for this structure.
Version::V1
if public_key
is None
, Version::V2
if Some
.
sourcepub fn encrypt(
&self,
rng: impl CryptoRng + RngCore,
password: impl AsRef<[u8]>
) -> Result<SecretDocument>
Available on crate feature encryption
only.
pub fn encrypt( &self, rng: impl CryptoRng + RngCore, password: impl AsRef<[u8]> ) -> Result<SecretDocument>
encryption
only.Encrypt this private key using a symmetric encryption key derived from the provided password.
Uses the following algorithms for encryption:
- PBKDF: scrypt with default parameters:
- log₂(N): 15
- r: 8
- p: 1
- Cipher: AES-256-CBC (best available option for PKCS#5 encryption)
sourcepub fn encrypt_with_params(
&self,
pbes2_params: Parameters<'_>,
password: impl AsRef<[u8]>
) -> Result<SecretDocument>
Available on crate feature encryption
only.
pub fn encrypt_with_params( &self, pbes2_params: Parameters<'_>, password: impl AsRef<[u8]> ) -> Result<SecretDocument>
encryption
only.Encrypt this private key using a symmetric encryption key derived
from the provided password and pbes2::Parameters
.
Trait Implementations§
source§impl<'a> Clone for PrivateKeyInfo<'a>
impl<'a> Clone for PrivateKeyInfo<'a>
source§fn clone(&self) -> PrivateKeyInfo<'a>
fn clone(&self) -> PrivateKeyInfo<'a>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'a> ConstantTimeEq for PrivateKeyInfo<'a>
Available on crate feature subtle
only.
impl<'a> ConstantTimeEq for PrivateKeyInfo<'a>
subtle
only.source§impl<'a> Debug for PrivateKeyInfo<'a>
impl<'a> Debug for PrivateKeyInfo<'a>
source§impl<'a> DecodeValue<'a> for PrivateKeyInfo<'a>
impl<'a> DecodeValue<'a> for PrivateKeyInfo<'a>
source§fn decode_value<R: Reader<'a>>(
reader: &mut R,
header: Header
) -> Result<PrivateKeyInfo<'a>>
fn decode_value<R: Reader<'a>>( reader: &mut R, header: Header ) -> Result<PrivateKeyInfo<'a>>
Reader
.source§impl EncodeValue for PrivateKeyInfo<'_>
impl EncodeValue for PrivateKeyInfo<'_>
source§impl<'a> PartialEq<PrivateKeyInfo<'a>> for PrivateKeyInfo<'a>
Available on crate feature subtle
only.
impl<'a> PartialEq<PrivateKeyInfo<'a>> for PrivateKeyInfo<'a>
subtle
only.source§impl PemLabel for PrivateKeyInfo<'_>
Available on crate feature pem
only.
impl PemLabel for PrivateKeyInfo<'_>
pem
only.source§impl<'a> TryFrom<&'a [u8]> for PrivateKeyInfo<'a>
impl<'a> TryFrom<&'a [u8]> for PrivateKeyInfo<'a>
source§impl TryFrom<&PrivateKeyInfo<'_>> for SecretDocument
Available on crate feature alloc
only.
impl TryFrom<&PrivateKeyInfo<'_>> for SecretDocument
alloc
only.source§fn try_from(private_key: &PrivateKeyInfo<'_>) -> Result<SecretDocument>
fn try_from(private_key: &PrivateKeyInfo<'_>) -> Result<SecretDocument>
source§impl TryFrom<PrivateKeyInfo<'_>> for SecretDocument
Available on crate feature alloc
only.
impl TryFrom<PrivateKeyInfo<'_>> for SecretDocument
alloc
only.source§fn try_from(private_key: PrivateKeyInfo<'_>) -> Result<SecretDocument>
fn try_from(private_key: PrivateKeyInfo<'_>) -> Result<SecretDocument>
impl<'a> Eq for PrivateKeyInfo<'a>
subtle
only.impl<'a> Sequence<'a> for PrivateKeyInfo<'a>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for PrivateKeyInfo<'a>
impl<'a> Send for PrivateKeyInfo<'a>
impl<'a> Sync for PrivateKeyInfo<'a>
impl<'a> Unpin for PrivateKeyInfo<'a>
impl<'a> UnwindSafe for PrivateKeyInfo<'a>
Blanket Implementations§
source§impl<'a, T> Decode<'a> for Twhere
T: DecodeValue<'a> + FixedTag,
impl<'a, T> Decode<'a> for Twhere T: DecodeValue<'a> + FixedTag,
source§impl<T> DecodePem for Twhere
T: DecodeOwned + PemLabel,
impl<T> DecodePem for Twhere T: DecodeOwned + PemLabel,
source§impl<T> Encode for Twhere
T: EncodeValue + Tagged,
impl<T> Encode for Twhere T: EncodeValue + Tagged,
source§fn encoded_len(&self) -> Result<Length, Error>
fn encoded_len(&self) -> Result<Length, Error>
Compute the length of this value in bytes when encoded as ASN.1 DER.
source§fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
Encode this value as ASN.1 DER using the provided Writer
.