blob: dc51528b3b16b8602b966b15d3a2217a54d6e916 [file] [log] [blame]
//! PEM decoding tests
#[test]
fn pkcs1_example() {
let pem = include_bytes!("examples/pkcs1.pem");
let mut buf = [0u8; 2048];
let (label, decoded) = pem_rfc7468::decode(pem, &mut buf).unwrap();
assert_eq!(label, "RSA PRIVATE KEY");
assert_eq!(decoded, include_bytes!("examples/pkcs1.der"));
}
#[test]
fn binary_example() {
let der = include_bytes!("examples/pkcs1.der");
let mut buf = [0u8; 2048];
match pem_rfc7468::decode(der, &mut buf) {
Err(pem_rfc7468::Error::Preamble) => (),
_ => panic!("Expected Preamble error"),
}
}
#[test]
fn pkcs1_example_with_preceeding_junk() {
let pem = include_bytes!("examples/pkcs1_with_preceeding_junk.pem");
let mut buf = [0u8; 2048];
let (label, decoded) = pem_rfc7468::decode(pem, &mut buf).unwrap();
assert_eq!(label, "RSA PRIVATE KEY");
assert_eq!(decoded, include_bytes!("examples/pkcs1.der"));
}
#[test]
fn pkcs1_enc_example() {
let pem = include_bytes!("examples/ssh_rsa_pem_password.pem");
let mut buf = [0u8; 2048];
let result = pem_rfc7468::decode(pem, &mut buf);
assert_eq!(result, Err(pem_rfc7468::Error::HeaderDisallowed));
let label = pem_rfc7468::decode_label(pem).unwrap();
assert_eq!(label, "RSA PRIVATE KEY");
}
#[test]
#[cfg(feature = "alloc")]
fn pkcs1_enc_example_with_vec() {
let pem = include_bytes!("examples/ssh_rsa_pem_password.pem");
let result = pem_rfc7468::decode_vec(pem);
assert_eq!(result, Err(pem_rfc7468::Error::HeaderDisallowed));
}
#[test]
fn header_of_length_64() {
let pem = include_bytes!("examples/chosen_header.pem");
let mut buf = [0u8; 2048];
let result = pem_rfc7468::decode(pem, &mut buf);
assert_eq!(result, Err(pem_rfc7468::Error::HeaderDisallowed));
let label = pem_rfc7468::decode_label(pem).unwrap();
assert_eq!(label, "RSA PRIVATE KEY");
}
#[test]
#[cfg(feature = "alloc")]
fn header_of_length_64_with_vec() {
let pem = include_bytes!("examples/chosen_header.pem");
match pem_rfc7468::decode_vec(pem) {
Err(pem_rfc7468::Error::HeaderDisallowed) => (),
res => panic!("Expected HeaderDisallowed error; Found {:?}", res),
}
}
#[test]
fn pkcs8_example() {
let pem = include_bytes!("examples/pkcs8.pem");
let mut buf = [0u8; 2048];
let (label, decoded) = pem_rfc7468::decode(pem, &mut buf).unwrap();
assert_eq!(label, "PRIVATE KEY");
assert_eq!(decoded, include_bytes!("examples/pkcs8.der"));
}
#[test]
fn pkcs8_enc_example() {
let pem = include_bytes!("examples/pkcs8-enc.pem");
let mut buf = [0u8; 2048];
let (label, decoded) = pem_rfc7468::decode(pem, &mut buf).unwrap();
assert_eq!(label, "ENCRYPTED PRIVATE KEY");
assert_eq!(decoded, include_bytes!("examples/pkcs8-enc.der"));
}
#[test]
#[cfg(feature = "alloc")]
fn pkcs1_example_with_vec() {
let pem = include_bytes!("examples/pkcs1.pem");
let (label, decoded) = pem_rfc7468::decode_vec(pem).unwrap();
assert_eq!(label, "RSA PRIVATE KEY");
assert_eq!(decoded, include_bytes!("examples/pkcs1.der"));
}
#[test]
#[cfg(feature = "alloc")]
fn pkcs8_enc_example_with_vec() {
let pem = include_bytes!("examples/pkcs8-enc.pem");
let (label, decoded) = pem_rfc7468::decode_vec(pem).unwrap();
assert_eq!(label, "ENCRYPTED PRIVATE KEY");
assert_eq!(decoded, include_bytes!("examples/pkcs8-enc.der"));
}
#[test]
fn ed25519_example() {
let pem = include_bytes!("examples/ed25519_id.pem");
let label = pem_rfc7468::decode_label(pem).unwrap();
assert_eq!(label, "ED25519 CERT");
}