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
.
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> 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 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> Sequence<'a> for PrivateKeyInfo<'a>
Auto Trait Implementations§
impl<'a> Freeze for PrivateKeyInfo<'a>
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<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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
.
Source§fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8], Error>
fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8], Error>
impl<T> DecodeOwned for Twhere
T: for<'a> Decode<'a>,
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: 104 bytes