pub struct Decrypter<'a> { /* private fields */ }
Expand description
A type which decrypts data.
Implementations§
Source§impl<'a> Decrypter<'a>
impl<'a> Decrypter<'a>
Sourcepub fn new<T>(pkey: &'a PKeyRef<T>) -> Result<Decrypter<'a>, ErrorStack>where
T: HasPrivate,
pub fn new<T>(pkey: &'a PKeyRef<T>) -> Result<Decrypter<'a>, ErrorStack>where
T: HasPrivate,
Creates a new Decrypter
.
OpenSSL documentation at EVP_PKEY_decrypt_init
.
Sourcepub fn rsa_padding(&self) -> Result<Padding, ErrorStack>
pub fn rsa_padding(&self) -> Result<Padding, ErrorStack>
Returns the RSA padding mode in use.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_get_rsa_padding
.
Sourcepub fn set_rsa_padding(&mut self, padding: Padding) -> Result<(), ErrorStack>
pub fn set_rsa_padding(&mut self, padding: Padding) -> Result<(), ErrorStack>
Sets the RSA padding mode.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_set_rsa_padding
.
Sourcepub fn set_rsa_mgf1_md(&mut self, md: MessageDigest) -> Result<(), ErrorStack>
pub fn set_rsa_mgf1_md(&mut self, md: MessageDigest) -> Result<(), ErrorStack>
Sets the RSA MGF1 algorithm.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_set_rsa_mgf1_md
.
Sourcepub fn set_rsa_oaep_md(&mut self, md: MessageDigest) -> Result<(), ErrorStack>
pub fn set_rsa_oaep_md(&mut self, md: MessageDigest) -> Result<(), ErrorStack>
Sets the RSA OAEP algorithm.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_set_rsa_oaep_md
.
Sourcepub fn set_rsa_oaep_label(&mut self, label: &[u8]) -> Result<(), ErrorStack>
pub fn set_rsa_oaep_label(&mut self, label: &[u8]) -> Result<(), ErrorStack>
Sets the RSA OAEP label.
This is only useful for RSA keys.
This corresponds to EVP_PKEY_CTX_set0_rsa_oaep_label
.
Sourcepub fn decrypt(&self, from: &[u8], to: &mut [u8]) -> Result<usize, ErrorStack>
pub fn decrypt(&self, from: &[u8], to: &mut [u8]) -> Result<usize, ErrorStack>
Performs public key decryption.
In order to know the size needed for the output buffer, use decrypt_len
.
Note that the length of the output buffer can be greater of the length of the decoded data.
let mut decrypter = Decrypter::new(&pkey).unwrap();
decrypter.set_rsa_padding(Padding::PKCS1).unwrap();
// Get the length of the output buffer
let buffer_len = decrypter.decrypt_len(&input).unwrap();
let mut decoded = vec![0u8; buffer_len];
// Decrypt the data and get its length
let decoded_len = decrypter.decrypt(&input, &mut decoded).unwrap();
// Use only the part of the buffer with the decrypted data
let decoded = &decoded[..decoded_len];
This corresponds to EVP_PKEY_decrypt
.
Sourcepub fn decrypt_len(&self, from: &[u8]) -> Result<usize, ErrorStack>
pub fn decrypt_len(&self, from: &[u8]) -> Result<usize, ErrorStack>
Gets the size of the buffer needed to decrypt the input data.
This corresponds to EVP_PKEY_decrypt
called with a null pointer as output argument.
Trait Implementations§
impl Send for Decrypter<'_>
impl Sync for Decrypter<'_>
Auto Trait Implementations§
impl<'a> Freeze for Decrypter<'a>
impl<'a> RefUnwindSafe for Decrypter<'a>
impl<'a> Unpin for Decrypter<'a>
impl<'a> UnwindSafe for Decrypter<'a>
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
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