46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use std::fmt;
 | |
| use native_tls;
 | |
| 
 | |
| /// Represent an X509 certificate.
 | |
| pub struct Certificate(native_tls::Certificate);
 | |
| 
 | |
| impl Certificate {
 | |
|     /// Create a `Certificate` from a binary DER encoded certificate
 | |
|     ///
 | |
|     /// # Examples
 | |
|     ///
 | |
|     /// ```
 | |
|     /// # use std::fs::File;
 | |
|     /// # use std::io::Read;
 | |
|     /// # fn cert() -> Result<(), Box<std::error::Error>> {
 | |
|     /// let mut buf = Vec::new();
 | |
|     /// File::open("my_cert.der")?
 | |
|     ///     .read_to_end(&mut buf)?;
 | |
|     /// let cert = reqwest::Certificate::from_der(&buf)?;
 | |
|     /// # drop(cert);
 | |
|     /// # Ok(())
 | |
|     /// # }
 | |
|     /// ```
 | |
|     ///
 | |
|     /// # Errors
 | |
|     ///
 | |
|     /// If the provided buffer is not valid DER, an error will be returned.
 | |
|     pub fn from_der(der: &[u8]) -> ::Result<Certificate> {
 | |
|         let inner = try_!(native_tls::Certificate::from_der(der));
 | |
|         Ok(Certificate(inner))
 | |
|     }
 | |
| }
 | |
| 
 | |
| impl fmt::Debug for Certificate {
 | |
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 | |
|         f.debug_struct("Certificate")
 | |
|             .finish()
 | |
|     }
 | |
| }
 | |
| 
 | |
| // pub(crate)
 | |
| 
 | |
| pub fn cert(cert: Certificate) -> native_tls::Certificate {
 | |
|     cert.0
 | |
| }
 |