openssl::rsa

Struct Rsa

source
pub struct Rsa<T>(/* private fields */);
Expand description

An RSA key.

Implementations§

source§

impl Rsa<Public>

source

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.

source

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.

source

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.

source

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.

source

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>

source

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();
source

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.

source

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.

source

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.

source

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.

source

pub fn private_key_from_pem_callback<F>( pem: &[u8], callback: F, ) -> Result<Rsa<Private>, ErrorStack>
where F: FnOnce(&mut [u8]) -> Result<usize, 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.

source

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

source

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.

source

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.

source

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.

source

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.

source

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.

source

pub fn d(&self) -> &BigNumRef

Returns a reference to the private exponent of the key.

This corresponds to RSA_get0_key.

source

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.

source

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.

source

pub fn dmp1(&self) -> Option<&BigNumRef>

Returns a reference to the first exponent used for CRT calculations.

This corresponds to RSA_get0_crt_params.

source

pub fn dmq1(&self) -> Option<&BigNumRef>

Returns a reference to the second exponent used for CRT calculations.

This corresponds to RSA_get0_crt_params.

source

pub fn iqmp(&self) -> Option<&BigNumRef>

Returns a reference to the coefficient used for CRT calculations.

This corresponds to RSA_get0_crt_params.

source

pub fn check_key(&self) -> Result<bool, ErrorStack>

Validates RSA parameters for correctness

This corresponds to RSA_check_key.

source

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.

source

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.

source

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.

source

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.

source

pub fn size(&self) -> u32

Returns the size of the modulus in bytes.

This corresponds to RSA_size.

source

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.

source

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.

source

pub fn n(&self) -> &BigNumRef

Returns a reference to the modulus of the key.

This corresponds to RSA_get0_key.

source

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> AsRef<RsaRef<T>> for Rsa<T>

source§

fn as_ref(&self) -> &RsaRef<T>

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

impl<T> Borrow<RsaRef<T>> for Rsa<T>

source§

fn borrow(&self) -> &RsaRef<T>

Immutably borrows from an owned value. Read more
source§

impl<T> Clone for Rsa<T>

source§

fn clone(&self) -> Rsa<T>

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<T> Debug for Rsa<T>

source§

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

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

impl<T> Deref for Rsa<T>

source§

type Target = RsaRef<T>

The resulting type after dereferencing.
source§

fn deref(&self) -> &RsaRef<T>

Dereferences the value.
source§

impl<T> DerefMut for Rsa<T>

source§

fn deref_mut(&mut self) -> &mut RsaRef<T>

Mutably dereferences the value.
source§

impl<T> Drop for Rsa<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<T> ForeignType for Rsa<T>

source§

type CType = RSA

The raw C type.
source§

type Ref = RsaRef<T>

The type representing a reference to this type.
source§

unsafe fn from_ptr(ptr: *mut RSA) -> Rsa<T>

Constructs an instance of this type from its raw type.
source§

fn as_ptr(&self) -> *mut RSA

Returns a raw pointer to the wrapped value.
source§

impl<T> TryFrom<PKey<T>> for Rsa<T>

source§

type Error = ErrorStack

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

fn try_from(pkey: PKey<T>) -> Result<Rsa<T>, ErrorStack>

Performs the conversion.
source§

impl<T> TryFrom<Rsa<T>> for PKey<T>

source§

type Error = ErrorStack

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

fn try_from(rsa: Rsa<T>) -> Result<PKey<T>, ErrorStack>

Performs the conversion.
source§

impl<T> Send for Rsa<T>

source§

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> 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, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
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> 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.