pki 0.2.2

Public key infrastructure tools for Rust
Documentation
use pki::{PrivateKey, PrivateKeyType};

fn do_test(key: PrivateKey) {
    let der = key.to_der().unwrap();
    let parsed = PrivateKey::from_der(&der).unwrap();
    assert_eq!(parsed.to_der().unwrap(), der);

    let pkcs8 = key.to_pkcs8_der("test").unwrap();
    PrivateKey::from_pkcs8_der(&pkcs8, "test").unwrap();

    let pkcs8 = key.to_pkcs8_pem().unwrap();
    PrivateKey::from_pkcs8_pem(&pkcs8).unwrap();
}

#[test]
fn test_private_key() {
    let key = PrivateKey::new_ec(384).unwrap();
    assert_eq!(key.bits(), 384);
    assert_eq!(key.key_type(), PrivateKeyType::Ec);
    do_test(key);

    let key = PrivateKey::new_ec(256).unwrap();
    assert_eq!(key.bits(), 256);
    assert_eq!(key.key_type(), PrivateKeyType::Ec);
    do_test(key);

    let key = PrivateKey::new_rsa(2048).unwrap();
    assert_eq!(key.bits(), 2048);
    assert_eq!(key.key_type(), PrivateKeyType::Rsa);
    do_test(key);

    let key = PrivateKey::new_rsa(4096).unwrap();
    assert_eq!(key.bits(), 4096);
    assert_eq!(key.key_type(), PrivateKeyType::Rsa);
    do_test(key);
}