in src/vtok_p11/src/crypto/encrypt.rs [48:67]
fn encrypt(mut self: Box<Self>, data: &[u8]) -> Result<Vec<u8>, Error> {
let mut enc = vec![0u8; self.encrypt_len];
let mut encrypt_len: ffi::c_size_t = self.encrypt_len as ffi::c_size_t;
let rc = unsafe {
ffi::EVP_PKEY_encrypt(
self.evp_pkey_ctx.as_mut_ptr(),
enc.as_mut_ptr(),
&mut encrypt_len as *mut ffi::c_size_t,
data.as_ptr(),
data.len() as ffi::c_size_t,
)
};
if rc != 1 {
return Err(Error::Encrypt);
}
enc.resize(encrypt_len as usize, 0);
Ok(enc)
}