1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use anyhow::Result;
use openssl::pkey::{PKey, Private};
use openssl::x509::X509;

#[derive(Debug)]
pub struct Certificate(pub X509);

impl Certificate {
    pub fn from_pem(bytes: &[u8]) -> Result<Self> {
        Ok(Self(X509::from_pem(bytes)?))
    }
    pub fn from_der(bytes: &[u8]) -> Result<Self> {
        Ok(Self(X509::from_der(bytes)?))
    }
    pub fn to_der(&self) -> Result<Vec<u8>> {
        Ok(self.0.to_der()?)
    }

    pub fn inner(&self) -> &X509 {
        &self.0
    }
}
pub struct PrivateKey(pub PKey<Private>);