RsaPrivateKey

Struct RsaPrivateKey 

Source
pub struct RsaPrivateKey { /* private fields */ }
Expand description

Represents a whole RSA key, public and private parts.

Implementations§

Source§

impl RsaPrivateKey

Source

pub fn new<R: CryptoRngCore + ?Sized>( rng: &mut R, bit_size: usize, ) -> Result<RsaPrivateKey>

Generate a new Rsa key pair of the given bit size using the passed in rng.

Source

pub fn new_with_exp<R: CryptoRngCore + ?Sized>( rng: &mut R, bit_size: usize, exp: &BigUint, ) -> Result<RsaPrivateKey>

Generate a new RSA key pair of the given bit size and the public exponent using the passed in rng.

Unless you have specific needs, you should use RsaPrivateKey::new instead.

Source

pub fn from_components( n: BigUint, e: BigUint, d: BigUint, primes: Vec<BigUint>, ) -> Result<RsaPrivateKey>

Constructs an RSA key pair from individual components:

  • n: RSA modulus
  • e: public exponent (i.e. encrypting exponent)
  • d: private exponent (i.e. decrypting exponent)
  • primes: prime factors of n: typically two primes p and q. More than two primes can be provided for multiprime RSA, however this is generally not recommended. If no primes are provided, a prime factor recovery algorithm will be employed to attempt to recover the factors (as described in NIST SP 800-56B Revision 2 Appendix C.2). This algorithm only works if there are just two prime factors p and q (as opposed to multiprime), and e is between 2^16 and 2^256.
Source

pub fn from_p_q( p: BigUint, q: BigUint, public_exponent: BigUint, ) -> Result<RsaPrivateKey>

Constructs an RSA key pair from its two primes p and q.

This will rebuild the private exponent and the modulus.

Private exponent will be rebuilt using the method defined in NIST 800-56B Section 6.2.1.

Source

pub fn from_primes( primes: Vec<BigUint>, public_exponent: BigUint, ) -> Result<RsaPrivateKey>

Constructs an RSA key pair from its primes.

This will rebuild the private exponent and the modulus.

Source

pub fn to_public_key(&self) -> RsaPublicKey

Get the public key from the private key, cloning n and e.

Generally this is not needed since RsaPrivateKey implements the PublicKey trait, but it can occasionally be useful to discard the private information entirely.

Source

pub fn precompute(&mut self) -> Result<()>

Performs some calculations to speed up private key operations.

Source

pub fn clear_precomputed(&mut self)

Clears precomputed values by setting to None

Source

pub fn crt_coefficient(&self) -> Option<BigUint>

Compute CRT coefficient: (1/q) mod p.

Source

pub fn validate(&self) -> Result<()>

Performs basic sanity checks on the key. Returns Ok(()) if everything is good, otherwise an appropriate error.

Source

pub fn decrypt<P: PaddingScheme>( &self, padding: P, ciphertext: &[u8], ) -> Result<Vec<u8>>

Decrypt the given message.

Source

pub fn decrypt_blinded<R: CryptoRngCore, P: PaddingScheme>( &self, rng: &mut R, padding: P, ciphertext: &[u8], ) -> Result<Vec<u8>>

Decrypt the given message.

Uses rng to blind the decryption process.

Source

pub fn sign<S: SignatureScheme>( &self, padding: S, digest_in: &[u8], ) -> Result<Vec<u8>>

Sign the given digest.

Source

pub fn sign_with_rng<R: CryptoRngCore, S: SignatureScheme>( &self, rng: &mut R, padding: S, digest_in: &[u8], ) -> Result<Vec<u8>>

Sign the given digest using the provided rng, which is used in the following ways depending on the SignatureScheme:

  • Pkcs1v15Sign padding: uses the RNG to mask the private key operation with random blinding, which helps mitigate sidechannel attacks.
  • Pss always requires randomness. Use Pss::new for a standard RSASSA-PSS signature, or Pss::new_blinded for RSA-BSSA blind signatures.

Trait Implementations§

Source§

impl<D> AsRef<RsaPrivateKey> for BlindedSigningKey<D>
where D: Digest,

Source§

fn as_ref(&self) -> &RsaPrivateKey

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<D> AsRef<RsaPrivateKey> for SigningKey<D>
where D: Digest,

Source§

fn as_ref(&self) -> &RsaPrivateKey

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<D> AsRef<RsaPrivateKey> for SigningKey<D>
where D: Digest,

Source§

fn as_ref(&self) -> &RsaPrivateKey

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<RsaPublicKey> for RsaPrivateKey

Source§

fn as_ref(&self) -> &RsaPublicKey

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for RsaPrivateKey

Source§

fn clone(&self) -> RsaPrivateKey

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RsaPrivateKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for RsaPrivateKey

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl EncodePrivateKey for RsaPrivateKey

Source§

fn to_pkcs8_der(&self) -> Result<SecretDocument>

Serialize a SecretDocument containing a PKCS#8-encoded private key.
Source§

fn to_pkcs8_pem( &self, line_ending: LineEnding, ) -> Result<Zeroizing<String>, Error>

Serialize this private key as PEM-encoded PKCS#8 with the given LineEnding.
Source§

fn write_pkcs8_der_file(&self, path: impl AsRef<Path>) -> Result<(), Error>

Write ASN.1 DER-encoded PKCS#8 private key to the given path
Source§

fn write_pkcs8_pem_file( &self, path: impl AsRef<Path>, line_ending: LineEnding, ) -> Result<(), Error>

Write ASN.1 DER-encoded PKCS#8 private key to the given path
Source§

impl From<&RsaPrivateKey> for RsaPublicKey

Source§

fn from(private_key: &RsaPrivateKey) -> Self

Converts to this type from the input type.
Source§

impl<D> From<BlindedSigningKey<D>> for RsaPrivateKey
where D: Digest,

Source§

fn from(key: BlindedSigningKey<D>) -> Self

Converts to this type from the input type.
Source§

impl<D> From<RsaPrivateKey> for BlindedSigningKey<D>
where D: Digest,

Source§

fn from(key: RsaPrivateKey) -> Self

Converts to this type from the input type.
Source§

impl From<RsaPrivateKey> for RsaPublicKey

Source§

fn from(private_key: RsaPrivateKey) -> Self

Converts to this type from the input type.
Source§

impl<D> From<RsaPrivateKey> for SigningKey<D>
where D: Digest,

Source§

fn from(key: RsaPrivateKey) -> Self

Converts to this type from the input type.
Source§

impl<D> From<RsaPrivateKey> for SigningKey<D>
where D: Digest,

Source§

fn from(key: RsaPrivateKey) -> Self

Converts to this type from the input type.
Source§

impl<D> From<SigningKey<D>> for RsaPrivateKey
where D: Digest,

Source§

fn from(key: SigningKey<D>) -> Self

Converts to this type from the input type.
Source§

impl<D> From<SigningKey<D>> for RsaPrivateKey
where D: Digest,

Source§

fn from(key: SigningKey<D>) -> Self

Converts to this type from the input type.
Source§

impl Hash for RsaPrivateKey

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for RsaPrivateKey

Source§

fn eq(&self, other: &RsaPrivateKey) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PrivateKeyParts for RsaPrivateKey

Source§

fn d(&self) -> &BigUint

Returns the private exponent of the key.
Source§

fn primes(&self) -> &[BigUint]

Returns the prime factors.
Source§

fn dp(&self) -> Option<&BigUint>

Returns the precomputed dp value, D mod (P-1)
Source§

fn dq(&self) -> Option<&BigUint>

Returns the precomputed dq value, D mod (Q-1)
Source§

fn qinv(&self) -> Option<&BigInt>

Returns the precomputed qinv value, Q^-1 mod P
Source§

fn crt_values(&self) -> Option<&[CrtValue]>

Returns an iterator over the CRT Values
Source§

impl PublicKeyParts for RsaPrivateKey

Source§

fn n(&self) -> &BigUint

Returns the modulus of the key.
Source§

fn e(&self) -> &BigUint

Returns the public exponent of the key.
Source§

fn size(&self) -> usize

Returns the modulus size in bytes. Raw signatures and ciphertexts for or by this public key will have the same size.
Source§

impl TryFrom<PrivateKeyInfo<'_>> for RsaPrivateKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(private_key_info: PrivateKeyInfo<'_>) -> Result<Self>

Performs the conversion.
Source§

impl Eq for RsaPrivateKey

Source§

impl ZeroizeOnDrop for RsaPrivateKey

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DecodePrivateKey for T
where T: for<'a> TryFrom<PrivateKeyInfo<'a>, Error = Error>,

Source§

fn from_pkcs8_der(bytes: &[u8]) -> Result<T, Error>

Deserialize PKCS#8 private key from ASN.1 DER-encoded data (binary format).
Source§

fn from_pkcs8_pem(s: &str) -> Result<Self, Error>

Deserialize PKCS#8-encoded private key from PEM. Read more
Source§

fn read_pkcs8_der_file(path: impl AsRef<Path>) -> Result<Self, Error>

Load PKCS#8 private key from an ASN.1 DER-encoded file on the local filesystem (binary format).
Source§

fn read_pkcs8_pem_file(path: impl AsRef<Path>) -> Result<Self, Error>

Load PKCS#8 private key from a PEM-encoded file on the local filesystem.
Source§

impl<T> DecodeRsaPrivateKey for T
where T: for<'a> TryFrom<PrivateKeyInfo<'a>, Error = Error>,

Source§

fn from_pkcs1_der(private_key: &[u8]) -> Result<T, Error>

Deserialize PKCS#1 private key from ASN.1 DER-encoded data (binary format).
Source§

fn from_pkcs1_pem(s: &str) -> Result<Self, Error>

Deserialize PKCS#1-encoded private key from PEM. Read more
Source§

fn read_pkcs1_der_file(path: impl AsRef<Path>) -> Result<Self, Error>

Load PKCS#1 private key from an ASN.1 DER-encoded file on the local filesystem (binary format).
Source§

fn read_pkcs1_pem_file(path: impl AsRef<Path>) -> Result<Self, Error>

Load PKCS#1 private key from a PEM-encoded file on the local filesystem.
Source§

impl<T> EncodeRsaPrivateKey for T

Source§

fn to_pkcs1_der(&self) -> Result<SecretDocument, Error>

Serialize a SecretDocument containing a PKCS#1-encoded private key.
Source§

fn to_pkcs1_pem( &self, line_ending: LineEnding, ) -> Result<Zeroizing<String>, Error>

Serialize this private key as PEM-encoded PKCS#1 with the given LineEnding.
Source§

fn write_pkcs1_der_file(&self, path: impl AsRef<Path>) -> Result<(), Error>

Write ASN.1 DER-encoded PKCS#1 private key to the given path.
Source§

fn write_pkcs1_pem_file( &self, path: impl AsRef<Path>, line_ending: LineEnding, ) -> Result<(), Error>

Write ASN.1 DER-encoded PKCS#1 private key to the given path.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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: 344 bytes