Struct pkcs8::PrivateKeyInfo
source · [−]pub struct PrivateKeyInfo<'a> {
pub algorithm: AlgorithmIdentifier<'a>,
pub private_key: &'a [u8],
pub attributes: Option<Attributes<'a>>,
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.
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.
attributes: Option<Attributes<'a>>
Attributes.
public_key: Option<&'a [u8]>
Public key data, optionally available if version is V2.
Implementations
sourceimpl<'a> PrivateKeyInfo<'a>
impl<'a> PrivateKeyInfo<'a>
sourcepub fn new(algorithm: AlgorithmIdentifier<'a>, private_key: &'a [u8]) -> Self
pub fn new(algorithm: AlgorithmIdentifier<'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 to_der(&self) -> PrivateKeyDocument
pub fn to_der(&self) -> PrivateKeyDocument
Encode this PrivateKeyInfo
as ASN.1 DER.
Trait Implementations
sourceimpl<'a> Clone for PrivateKeyInfo<'a>
impl<'a> Clone for PrivateKeyInfo<'a>
sourcefn clone(&self) -> PrivateKeyInfo<'a>
fn clone(&self) -> PrivateKeyInfo<'a>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<'a> Debug for PrivateKeyInfo<'a>
impl<'a> Debug for PrivateKeyInfo<'a>
sourceimpl From<&PrivateKeyInfo<'_>> for PrivateKeyDocument
impl From<&PrivateKeyInfo<'_>> for PrivateKeyDocument
sourcefn from(private_key_info: &PrivateKeyInfo<'_>) -> PrivateKeyDocument
fn from(private_key_info: &PrivateKeyInfo<'_>) -> PrivateKeyDocument
Converts to this type from the input type.
sourceimpl From<PrivateKeyInfo<'_>> for PrivateKeyDocument
impl From<PrivateKeyInfo<'_>> for PrivateKeyDocument
sourcefn from(private_key_info: PrivateKeyInfo<'_>) -> PrivateKeyDocument
fn from(private_key_info: PrivateKeyInfo<'_>) -> PrivateKeyDocument
Converts to this type from the input type.
sourceimpl<'a> Message<'a> for PrivateKeyInfo<'a>
impl<'a> Message<'a> for PrivateKeyInfo<'a>
sourceimpl<'a> TryFrom<&'a [u8]> for PrivateKeyInfo<'a>
impl<'a> TryFrom<&'a [u8]> 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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<'a, T> Choice<'a> for T where
T: Decodable<'a> + Encodable + Tagged,
impl<'a, T> Choice<'a> for T where
T: Decodable<'a> + Encodable + Tagged,
sourcefn can_decode(tag: Tag) -> bool
fn can_decode(tag: Tag) -> bool
Is the provided Tag
decodable as a variant of this CHOICE
?
sourceimpl<'a, M> Encodable for M where
M: Message<'a>,
impl<'a, M> Encodable for M where
M: Message<'a>,
sourcefn 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.
sourcefn encode(&self, encoder: &mut Encoder<'_>) -> Result<(), Error>
fn encode(&self, encoder: &mut Encoder<'_>) -> Result<(), Error>
Encode this value as ASN.1 DER using the provided Encoder
.
sourcefn encode_to_slice(&self, buf: &'a mut [u8]) -> Result<&'a [u8], Error>
fn encode_to_slice(&self, buf: &'a mut [u8]) -> Result<&'a [u8], Error>
Encode this value to the provided byte slice, returning a sub-slice containing the encoded message. Read more