rsa_msg_packets/util/
rsa.rs1use openssl::pkey::{Private, Public};
2use openssl::rsa::{Padding, Rsa};
3
4pub fn encrypt_rsa(key: &Rsa<Public>, msg: &[u8]) -> anyhow::Result<Vec<u8>> {
5 let mut buf: Vec<u8> = vec![0; key.size() as usize];
6
7 let size = key.public_encrypt(&msg, &mut buf, Padding::PKCS1_OAEP)?;
8
9 let mut out = vec![0; size];
10 for i in 0..size {
11 out[i] = buf[i];
12 }
13
14 return Ok(out);
15}
16
17pub fn decrypt_rsa(key: &Rsa<Private>, cipher: &[u8]) -> anyhow::Result<Vec<u8>> {
18 let mut buf: Vec<u8> = vec![0; key.size() as usize];
19
20 let size = key.private_decrypt(cipher, &mut buf, Padding::PKCS1_OAEP)?;
21
22 let mut out = vec![0; size];
23 for i in 0..size {
24 out[i] = buf[i];
25 }
26
27 return Ok(out);
28}