• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use std::io::Cursor;
2 use x509_parser::pem::{parse_x509_pem, Pem};
3 use x509_parser::{parse_x509_certificate, x509::X509Version};
4 
5 static IGCA_PEM: &[u8] = include_bytes!("../assets/IGC_A.pem");
6 
7 #[test]
test_x509_parse_pem()8 fn test_x509_parse_pem() {
9     let (rem, pem) = parse_x509_pem(IGCA_PEM).expect("PEM parsing failed");
10     // println!("{:?}", pem);
11     assert!(rem.is_empty());
12     assert_eq!(pem.label, String::from("CERTIFICATE"));
13     //
14     // now check that the content is indeed a certificate
15     let (rem, crt) = parse_x509_certificate(&pem.contents).expect("X.509 parsing failed");
16     // println!("res: {:?}", res);
17     assert!(rem.is_empty());
18     assert_eq!(crt.tbs_certificate.version, X509Version::V3);
19 }
20 
21 #[test]
test_pem_read()22 fn test_pem_read() {
23     let reader = Cursor::new(IGCA_PEM);
24     let (pem, bytes_read) = Pem::read(reader).expect("Reading PEM failed");
25     // println!("{:?}", pem);
26     assert_eq!(bytes_read, IGCA_PEM.len());
27     assert_eq!(pem.label, String::from("CERTIFICATE"));
28     //
29     // now check that the content is indeed a certificate
30     let x509 = pem.parse_x509().expect("X.509: decoding DER failed");
31     assert_eq!(x509.tbs_certificate.version, X509Version::V3);
32 }
33 
34 #[test]
test_pem_not_pem()35 fn test_pem_not_pem() {
36     let bytes = vec![0x1, 0x2, 0x3, 0x4, 0x5];
37     let reader = Cursor::new(bytes);
38     let res = Pem::read(reader);
39     assert!(res.is_err());
40 }
41 
42 static NO_END: &[u8] = include_bytes!("../assets/no_end.pem");
43 
44 #[test]
test_pem_no_end()45 fn test_pem_no_end() {
46     let reader = Cursor::new(NO_END);
47     let res = Pem::read(reader);
48     assert!(res.is_err());
49 }
50