rsa-export 0.1.2

Export keys generated by the "rsa" crate into the PKCS#1 or PKCS#8 format
Documentation

rsa_export allows you to export your RSA key, generated via the rsa crate, with PKCS#1 or PKCS#8 encoding

Reference: https://tools.ietf.org/html/rfc3447#appendix-A.1

Note: Multi-prime keys are not supported

The keys can also be exported into the PEM format by enabling the feature pem_export

Example:

use rsa::RSAPrivateKey;
use rand::rngs::OsRng;

fn main() {
    let mut rng = OsRng;
    let key = RSAPrivateKey::new(&mut rng, 2048).unwrap();

    let pkcs1_encoded_private = rsa_export::pkcs1::private_key(&key).unwrap();
    let pkcs1_encoded_public = rsa_export::pkcs1::public_key(&key.to_public_key()).unwrap();

    let pkcs8_encoded_private = rsa_export::pkcs8::private_key(&key).unwrap();
    let pkcs8_encoded_public = rsa_export::pkcs8::public_key(&key.to_public_key()).unwrap();
}

Encode PKCS#1 or PKCS#8 encoded keys into the PEM format with the pem_export feature enabled

use rsa::RSAPrivateKey;
use rand::rngs::OsRng;

fn main() {
    let mut rng = OsRng;
    let key = RSAPrivateKey::new(&mut rng, 2048).unwrap();

    let pkcs1_encoded_private = rsa_export::pkcs1::private_key(&key).unwrap();
    let pkcs1_encoded_public = rsa_export::pkcs1::public_key(&key.to_public_key()).unwrap();

    let pkcs8_encoded_private = rsa_export::pkcs8::private_key(&key).unwrap();
    let pkcs8_encoded_public = rsa_export::pkcs8::public_key(&key.to_public_key()).unwrap();

    use rsa_export::pem::EncodingScheme;

    let pkcs1_pem_encoded_private = rsa_export::pem::encode(EncodingScheme::PKCS1Private, pkcs1_encoded_private);
    let pkcs1_pem_encoded_public = rsa_export::pem::encode(EncodingScheme::PKCS1Public, pkcs1_encoded_public);

    let pkcs8_pem_encoded_private = rsa_export::pem::encode(EncodingScheme::PKCS8Private, pkcs8_encoded_private);
    let pkcs8_pem_encoded_public = rsa_export::pem::encode(EncodingScheme::PKCS8Public, pkcs8_encoded_public);
}