Skip to main content

rsa_msg_packets/util/
rsa.rs

1use 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}