Struct picky_asn1_x509::private_key_info::PrivateKeyInfo
source · 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
impl PrivateKeyInfo
pub fn new_rsa_encryption( modulus: IntegerAsn1, public_exponent: IntegerAsn1, private_exponent: IntegerAsn1, primes: (IntegerAsn1, IntegerAsn1), exponents: (IntegerAsn1, IntegerAsn1), coefficient: IntegerAsn1, ) -> Self
sourcepub fn new_ec_encryption(
curve_oid: ObjectIdentifier,
secret: impl Into<OctetStringAsn1>,
public_point: Option<BitString>,
skip_optional_params: bool,
) -> Self
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.
pub fn new_ed_encryption( algorithm: ObjectIdentifier, secret: impl Into<OctetStringAsn1>, public_key: Option<BitString>, ) -> Self
Trait Implementations§
source§impl Clone for PrivateKeyInfo
impl Clone for PrivateKeyInfo
source§fn clone(&self) -> PrivateKeyInfo
fn clone(&self) -> PrivateKeyInfo
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PrivateKeyInfo
impl Debug for PrivateKeyInfo
source§impl<'de> Deserialize<'de> for PrivateKeyInfo
impl<'de> Deserialize<'de> for PrivateKeyInfo
source§fn deserialize<D>(
deserializer: D,
) -> Result<Self, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Self, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
source§impl PartialEq for PrivateKeyInfo
impl PartialEq for PrivateKeyInfo
source§fn eq(&self, other: &PrivateKeyInfo) -> bool
fn eq(&self, other: &PrivateKeyInfo) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for PrivateKeyInfo
impl Serialize for PrivateKeyInfo
impl Eq for PrivateKeyInfo
impl StructuralPartialEq for PrivateKeyInfo
Auto Trait Implementations§
impl Freeze for PrivateKeyInfo
impl RefUnwindSafe for PrivateKeyInfo
impl Send for PrivateKeyInfo
impl Sync for PrivateKeyInfo
impl Unpin for PrivateKeyInfo
impl UnwindSafe for PrivateKeyInfo
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§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)