pub struct Encrypter<'a> { /* private fields */ }
Expand description
A type which encrypts data.
Implementations§
Source§impl<'a> Encrypter<'a>
impl<'a> Encrypter<'a>
Sourcepub fn new<T>(pkey: &'a PKeyRef<T>) -> Result<Encrypter<'a>, ErrorStack>where
T: HasPublic,
pub fn new<T>(pkey: &'a PKeyRef<T>) -> Result<Encrypter<'a>, ErrorStack>where
T: HasPublic,
Creates a new Encrypter
.
OpenSSL documentation at EVP_PKEY_encrypt_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 encrypt(&self, from: &[u8], to: &mut [u8]) -> Result<usize, ErrorStack>
pub fn encrypt(&self, from: &[u8], to: &mut [u8]) -> Result<usize, ErrorStack>
Performs public key encryption.
In order to know the size needed for the output buffer, use encrypt_len
.
Note that the length of the output buffer can be greater of the length of the encoded data.
let mut encrypter = Encrypter::new(&pkey).unwrap();
encrypter.set_rsa_padding(Padding::PKCS1).unwrap();
// Get the length of the output buffer
let buffer_len = encrypter.encrypt_len(&input).unwrap();
let mut encoded = vec![0u8; buffer_len];
// Encode the data and get its length
let encoded_len = encrypter.encrypt(&input, &mut encoded).unwrap();
// Use only the part of the buffer with the encoded data
let encoded = &encoded[..encoded_len];
This corresponds to EVP_PKEY_encrypt
.
Sourcepub fn encrypt_len(&self, from: &[u8]) -> Result<usize, ErrorStack>
pub fn encrypt_len(&self, from: &[u8]) -> Result<usize, ErrorStack>
Gets the size of the buffer needed to encrypt the input data.
This corresponds to EVP_PKEY_encrypt
called with a null pointer as output argument.
Trait Implementations§
impl Send for Encrypter<'_>
impl Sync for Encrypter<'_>
Auto Trait Implementations§
impl<'a> Freeze for Encrypter<'a>
impl<'a> RefUnwindSafe for Encrypter<'a>
impl<'a> Unpin for Encrypter<'a>
impl<'a> UnwindSafe for Encrypter<'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