Struct pkcs8::PrivateKeyInfo [−][src]
pub struct PrivateKeyInfo<'a> {
pub algorithm: AlgorithmIdentifier<'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: AlgorithmIdentifier<'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
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.
Get the PKCS#8 Version
for this structure.
Version::V1
if public_key
is None
, Version::V2
if Some
.
pub fn encrypt(
&self,
rng: impl CryptoRng + RngCore,
password: impl AsRef<[u8]>
) -> Result<EncryptedPrivateKeyDocument>
This is supported on crate feature encryption
only.
pub fn encrypt(
&self,
rng: impl CryptoRng + RngCore,
password: impl AsRef<[u8]>
) -> Result<EncryptedPrivateKeyDocument>
encryption
only.Encrypt this private key using a symmetric encryption key derived from the provided password.
See PrivateKeyDocument::encrypt
for more information.
This is supported on crate feature alloc
only.
alloc
only.Encode this PrivateKeyInfo
as ASN.1 DER.
This is supported on crate feature pem
only.
pem
only.Encode this PrivateKeyInfo
as PEM-encoded ASN.1 DER with the given
LineEnding
.
Trait Implementations
impl<'a> PartialEq<PrivateKeyInfo<'a>> for PrivateKeyInfo<'a>
This is supported on crate feature subtle
only.
impl<'a> PartialEq<PrivateKeyInfo<'a>> for PrivateKeyInfo<'a>
subtle
only.Performs the conversion.
Performs the conversion.
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
Mutably borrows from an owned value. Read more
Is the provided Tag
decodable as a variant of this CHOICE
?
Compute the length of this value in bytes when encoded as ASN.1 DER.
Encode this value as ASN.1 DER using the provided Encoder
.
Encode this value to the provided byte slice, returning a sub-slice containing the encoded message. Read more
Encode this message as ASN.1 DER, appending it to the provided byte vector. Read more