rsa-msg-packets 0.1.7

A helper crate for rsa-messenger-client as well as rsa-messenger-server.
Documentation
use openssl::pkey::{Private, Public};
use openssl::rsa::{Padding, Rsa};

pub fn encrypt_rsa(key: &Rsa<Public>, msg: &[u8]) -> anyhow::Result<Vec<u8>> {
    let mut buf: Vec<u8> = vec![0; key.size() as usize];

    let size = key.public_encrypt(&msg, &mut buf, Padding::PKCS1_OAEP)?;

    let mut out = vec![0; size];
    for i in 0..size {
        out[i] = buf[i];
    }

    return Ok(out);
}

pub fn decrypt_rsa(key: &Rsa<Private>, cipher: &[u8]) -> anyhow::Result<Vec<u8>> {
    let mut buf: Vec<u8> = vec![0; key.size() as usize];

    let size = key.private_decrypt(cipher, &mut buf, Padding::PKCS1_OAEP)?;

    let mut out = vec![0; size];
    for i in 0..size {
        out[i] = buf[i];
    }

    return Ok(out);
}