pub struct Rsa<T>(/* private fields */);
Expand description
An RSA key.
Implementations§
Source§impl Rsa<Public>
impl Rsa<Public>
Sourcepub fn from_public_components(
n: BigNum,
e: BigNum,
) -> Result<Rsa<Public>, ErrorStack>
pub fn from_public_components( n: BigNum, e: BigNum, ) -> Result<Rsa<Public>, ErrorStack>
Creates a new RSA key with only public components.
n
is the modulus common to both public and private key.
e
is the public exponent.
This corresponds to RSA_new
and uses RSA_set0_key
.
Sourcepub fn public_key_from_pem(pem: &[u8]) -> Result<Rsa<Public>, ErrorStack>
pub fn public_key_from_pem(pem: &[u8]) -> Result<Rsa<Public>, ErrorStack>
Decodes a PEM-encoded SubjectPublicKeyInfo structure containing an RSA key.
The input should have a header of -----BEGIN PUBLIC KEY-----
.
This corresponds to PEM_read_bio_RSA_PUBKEY
.
Sourcepub fn public_key_from_pem_pkcs1(pem: &[u8]) -> Result<Rsa<Public>, ErrorStack>
pub fn public_key_from_pem_pkcs1(pem: &[u8]) -> Result<Rsa<Public>, ErrorStack>
Decodes a PEM-encoded PKCS#1 RSAPublicKey structure.
The input should have a header of -----BEGIN RSA PUBLIC KEY-----
.
This corresponds to PEM_read_bio_RSAPublicKey
.
Sourcepub fn public_key_from_der(der: &[u8]) -> Result<Rsa<Public>, ErrorStack>
pub fn public_key_from_der(der: &[u8]) -> Result<Rsa<Public>, ErrorStack>
Decodes a DER-encoded SubjectPublicKeyInfo structure containing an RSA key.
This corresponds to d2i_RSA_PUBKEY
.
Sourcepub fn public_key_from_der_pkcs1(der: &[u8]) -> Result<Rsa<Public>, ErrorStack>
pub fn public_key_from_der_pkcs1(der: &[u8]) -> Result<Rsa<Public>, ErrorStack>
Decodes a DER-encoded PKCS#1 RSAPublicKey structure.
This corresponds to d2i_RSAPublicKey
.
Source§impl Rsa<Private>
impl Rsa<Private>
Sourcepub fn from_private_components(
n: BigNum,
e: BigNum,
d: BigNum,
p: BigNum,
q: BigNum,
dmp1: BigNum,
dmq1: BigNum,
iqmp: BigNum,
) -> Result<Rsa<Private>, ErrorStack>
pub fn from_private_components( n: BigNum, e: BigNum, d: BigNum, p: BigNum, q: BigNum, dmp1: BigNum, dmq1: BigNum, iqmp: BigNum, ) -> Result<Rsa<Private>, ErrorStack>
Creates a new RSA key with private components (public components are assumed).
This a convenience method over:
RsaPrivateKeyBuilder::new(n, e, d)?
.set_factors(p, q)?
.set_crt_params(dmp1, dmq1, iqmp)?
.build();
Sourcepub fn generate(bits: u32) -> Result<Rsa<Private>, ErrorStack>
pub fn generate(bits: u32) -> Result<Rsa<Private>, ErrorStack>
Generates a public/private key pair with the specified size.
The public exponent will be 65537.
This corresponds to RSA_generate_key_ex
.
Sourcepub fn generate_with_e(
bits: u32,
e: &BigNumRef,
) -> Result<Rsa<Private>, ErrorStack>
pub fn generate_with_e( bits: u32, e: &BigNumRef, ) -> Result<Rsa<Private>, ErrorStack>
Generates a public/private key pair with the specified size and a custom exponent.
Unless you have specific needs and know what you’re doing, use Rsa::generate
instead.
This corresponds to RSA_generate_key_ex
.
Sourcepub fn private_key_from_pem(pem: &[u8]) -> Result<Rsa<Private>, ErrorStack>
pub fn private_key_from_pem(pem: &[u8]) -> Result<Rsa<Private>, ErrorStack>
Deserializes a private key from a PEM-encoded PKCS#1 RSAPrivateKey structure.
This corresponds to PEM_read_bio_RSAPrivateKey
.
Sourcepub fn private_key_from_pem_passphrase(
pem: &[u8],
passphrase: &[u8],
) -> Result<Rsa<Private>, ErrorStack>
pub fn private_key_from_pem_passphrase( pem: &[u8], passphrase: &[u8], ) -> Result<Rsa<Private>, ErrorStack>
Deserializes a private key from a PEM-encoded encrypted PKCS#1 RSAPrivateKey structure.
This corresponds to PEM_read_bio_RSAPrivateKey
.
Sourcepub fn private_key_from_pem_callback<F>(
pem: &[u8],
callback: F,
) -> Result<Rsa<Private>, ErrorStack>
pub fn private_key_from_pem_callback<F>( pem: &[u8], callback: F, ) -> Result<Rsa<Private>, ErrorStack>
Deserializes a private key from a PEM-encoded encrypted PKCS#1 RSAPrivateKey structure.
The callback should fill the password into the provided buffer and return its length.
This corresponds to PEM_read_bio_RSAPrivateKey
.
Sourcepub fn private_key_from_der(der: &[u8]) -> Result<Rsa<Private>, ErrorStack>
pub fn private_key_from_der(der: &[u8]) -> Result<Rsa<Private>, ErrorStack>
Decodes a DER-encoded PKCS#1 RSAPrivateKey structure.
This corresponds to d2i_RSAPrivateKey
.
Methods from Deref<Target = RsaRef<T>>§
Sourcepub fn private_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>
pub fn private_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>
Serializes the private key to a PEM-encoded PKCS#1 RSAPrivateKey structure.
The output will have a header of -----BEGIN RSA PRIVATE KEY-----
.
This corresponds to PEM_write_bio_RSAPrivateKey
.
Sourcepub fn private_key_to_pem_passphrase(
&self,
cipher: Cipher,
passphrase: &[u8],
) -> Result<Vec<u8>, ErrorStack>
pub fn private_key_to_pem_passphrase( &self, cipher: Cipher, passphrase: &[u8], ) -> Result<Vec<u8>, ErrorStack>
Serializes the private key to a PEM-encoded encrypted PKCS#1 RSAPrivateKey structure.
The output will have a header of -----BEGIN RSA PRIVATE KEY-----
.
This corresponds to PEM_write_bio_RSAPrivateKey
.
Sourcepub fn private_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>
pub fn private_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>
Serializes the private key to a DER-encoded PKCS#1 RSAPrivateKey structure.
This corresponds to i2d_RSAPrivateKey
.
Sourcepub fn private_decrypt(
&self,
from: &[u8],
to: &mut [u8],
padding: Padding,
) -> Result<usize, ErrorStack>
pub fn private_decrypt( &self, from: &[u8], to: &mut [u8], padding: Padding, ) -> Result<usize, ErrorStack>
Decrypts data using the private key, returning the number of decrypted bytes.
§Panics
Panics if self
has no private components, or if to
is smaller
than self.size()
.
This corresponds to RSA_private_decrypt
.
Sourcepub fn private_encrypt(
&self,
from: &[u8],
to: &mut [u8],
padding: Padding,
) -> Result<usize, ErrorStack>
pub fn private_encrypt( &self, from: &[u8], to: &mut [u8], padding: Padding, ) -> Result<usize, ErrorStack>
Encrypts data using the private key, returning the number of encrypted bytes.
§Panics
Panics if self
has no private components, or if to
is smaller
than self.size()
.
This corresponds to RSA_private_encrypt
.
Sourcepub fn d(&self) -> &BigNumRef
pub fn d(&self) -> &BigNumRef
Returns a reference to the private exponent of the key.
This corresponds to RSA_get0_key
.
Sourcepub fn p(&self) -> Option<&BigNumRef>
pub fn p(&self) -> Option<&BigNumRef>
Returns a reference to the first factor of the exponent of the key.
This corresponds to RSA_get0_factors
.
Sourcepub fn q(&self) -> Option<&BigNumRef>
pub fn q(&self) -> Option<&BigNumRef>
Returns a reference to the second factor of the exponent of the key.
This corresponds to RSA_get0_factors
.
Sourcepub fn dmp1(&self) -> Option<&BigNumRef>
pub fn dmp1(&self) -> Option<&BigNumRef>
Returns a reference to the first exponent used for CRT calculations.
This corresponds to RSA_get0_crt_params
.
Sourcepub fn dmq1(&self) -> Option<&BigNumRef>
pub fn dmq1(&self) -> Option<&BigNumRef>
Returns a reference to the second exponent used for CRT calculations.
This corresponds to RSA_get0_crt_params
.
Sourcepub fn iqmp(&self) -> Option<&BigNumRef>
pub fn iqmp(&self) -> Option<&BigNumRef>
Returns a reference to the coefficient used for CRT calculations.
This corresponds to RSA_get0_crt_params
.
Sourcepub fn check_key(&self) -> Result<bool, ErrorStack>
pub fn check_key(&self) -> Result<bool, ErrorStack>
Validates RSA parameters for correctness
This corresponds to RSA_check_key
.
Sourcepub fn public_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>
pub fn public_key_to_pem(&self) -> Result<Vec<u8>, ErrorStack>
Serializes the public key into a PEM-encoded SubjectPublicKeyInfo structure.
The output will have a header of -----BEGIN PUBLIC KEY-----
.
This corresponds to PEM_write_bio_RSA_PUBKEY
.
Sourcepub fn public_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>
pub fn public_key_to_der(&self) -> Result<Vec<u8>, ErrorStack>
Serializes the public key into a DER-encoded SubjectPublicKeyInfo structure.
This corresponds to i2d_RSA_PUBKEY
.
Sourcepub fn public_key_to_pem_pkcs1(&self) -> Result<Vec<u8>, ErrorStack>
pub fn public_key_to_pem_pkcs1(&self) -> Result<Vec<u8>, ErrorStack>
Serializes the public key into a PEM-encoded PKCS#1 RSAPublicKey structure.
The output will have a header of -----BEGIN RSA PUBLIC KEY-----
.
This corresponds to PEM_write_bio_RSAPublicKey
.
Sourcepub fn public_key_to_der_pkcs1(&self) -> Result<Vec<u8>, ErrorStack>
pub fn public_key_to_der_pkcs1(&self) -> Result<Vec<u8>, ErrorStack>
Serializes the public key into a DER-encoded PKCS#1 RSAPublicKey structure.
This corresponds to i2d_RSAPublicKey
.
Sourcepub fn size(&self) -> u32
pub fn size(&self) -> u32
Returns the size of the modulus in bytes.
This corresponds to RSA_size
.
Sourcepub fn public_decrypt(
&self,
from: &[u8],
to: &mut [u8],
padding: Padding,
) -> Result<usize, ErrorStack>
pub fn public_decrypt( &self, from: &[u8], to: &mut [u8], padding: Padding, ) -> Result<usize, ErrorStack>
Decrypts data using the public key, returning the number of decrypted bytes.
§Panics
Panics if to
is smaller than self.size()
.
This corresponds to RSA_public_decrypt
.
Sourcepub fn public_encrypt(
&self,
from: &[u8],
to: &mut [u8],
padding: Padding,
) -> Result<usize, ErrorStack>
pub fn public_encrypt( &self, from: &[u8], to: &mut [u8], padding: Padding, ) -> Result<usize, ErrorStack>
Encrypts data using the public key, returning the number of encrypted bytes.
§Panics
Panics if to
is smaller than self.size()
.
This corresponds to RSA_public_encrypt
.
Sourcepub fn n(&self) -> &BigNumRef
pub fn n(&self) -> &BigNumRef
Returns a reference to the modulus of the key.
This corresponds to RSA_get0_key
.
Sourcepub fn e(&self) -> &BigNumRef
pub fn e(&self) -> &BigNumRef
Returns a reference to the public exponent of the key.
This corresponds to RSA_get0_key
.
Trait Implementations§
Source§impl<T> ForeignType for Rsa<T>
impl<T> ForeignType for Rsa<T>
impl<T> Send for Rsa<T>
impl<T> Sync for Rsa<T>
Auto Trait Implementations§
impl<T> Freeze for Rsa<T>
impl<T> RefUnwindSafe for Rsa<T>where
T: RefUnwindSafe,
impl<T> Unpin for Rsa<T>where
T: Unpin,
impl<T> UnwindSafe for Rsa<T>where
T: UnwindSafe,
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,
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: 8 bytes