Struct rsa::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: RngCore + CryptoRng>( 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: RngCore + CryptoRng>( 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> ) -> RsaPrivateKey

Constructs an RSA key pair from the individual components.

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 occationally 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 d(&self) -> &BigUint

Returns the private exponent of the key.

source

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

Returns the prime factors.

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 approriate error.

source

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

Decrypt the given message.

source

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

Decrypt the given message.

Uses rng to blind the decryption process.

source

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

Sign the given digest.

source

pub fn sign_blinded<R: RngCore + CryptoRng>( &self, rng: &mut R, padding: PaddingScheme, digest_in: &[u8] ) -> Result<Vec<u8>>

Sign the given digest.

Use rng for blinding.

Trait Implementations§

source§

impl Clone for RsaPrivateKey

source§

fn clone(&self) -> RsaPrivateKey

Returns a copy 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 DecodePrivateKey for RsaPrivateKey

source§

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

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

fn from_pkcs8_doc(doc: &PrivateKeyDocument) -> Result<Self, Error>

Deserialize PKCS#8 private key from a PrivateKeyDocument.
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 Deref for RsaPrivateKey

§

type Target = RsaPublicKey

The resulting type after dereferencing.
source§

fn deref(&self) -> &RsaPublicKey

Dereferences the value.
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<PrivateKeyDocument>

Serialize a PrivateKeyDocument 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 From<RsaPrivateKey> for RsaPublicKey

source§

fn from(private_key: RsaPrivateKey) -> Self

Converts to this type from the input type.
source§

impl PartialEq for RsaPrivateKey

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> PublicKeyParts for &'a 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 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

§

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 Zeroize for RsaPrivateKey

source§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.
source§

impl Eq 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> DecodeRsaPrivateKey for T

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<RsaPrivateKeyDocument, Error>

Serialize a RsaPrivateKeyDocument 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

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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>,

§

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