[−][src]Module x509_parser::pem
Decoding functions for PEM-encoded data
Examples
To parse a certificate in PEM format, first create the Pem
object, then decode
contents:
use std::io::Cursor; use x509_parser::pem::{pem_to_der, Pem}; use x509_parser::parse_x509_der; static IGCA_PEM: &'static [u8] = include_bytes!("../assets/IGC_A.pem"); let res = pem_to_der(IGCA_PEM); let reader = Cursor::new(IGCA_PEM); let (pem,bytes_read) = Pem::read(reader).expect("Reading PEM failed"); let x509 = pem.parse_x509().expect("X.509: decoding DER failed"); assert_eq!(x509.tbs_certificate.version, 2);
This is the most direct method to parse PEM data.
Another method to parse the certificate is to use pem_to_der
:
use x509_parser::pem::pem_to_der; use x509_parser::parse_x509_der; static IGCA_PEM: &'static [u8] = include_bytes!("../assets/IGC_A.pem"); let res = pem_to_der(IGCA_PEM); match res { Ok((rem, pem)) => { assert!(rem.is_empty()); // assert_eq!(pem.label, String::from("CERTIFICATE")); // let res_x509 = parse_x509_der(&pem.contents); assert!(res_x509.is_ok()); }, _ => panic!("PEM parsing failed: {:?}", res), }
Note that all methods require to store the Pem
object in a variable, mainly because decoding
the PEM object requires allocation of buffers, and that the lifetime of X.509 certificates will
be bound to these buffers.
Structs
Pem | Representation of PEM data |
Functions
pem_to_der | Read a PEM-encoded structure, and decode the base64 data |