mod config;
mod conn;
mod ext;
mod x509;
pub(crate) use self::conn::{HttpsConnector, MaybeHttpsStream, TlsConnector};
pub use self::{
config::{IntoCertStore, TlsConfig},
x509::{CertStore, CertStoreBuilder, Certificate, CertificateInput, Identity},
};
use boring2::ssl::SslVersion;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct TlsVersion(SslVersion);
impl TlsVersion {
pub const TLS_1_0: TlsVersion = TlsVersion(SslVersion::TLS1);
pub const TLS_1_1: TlsVersion = TlsVersion(SslVersion::TLS1_1);
pub const TLS_1_2: TlsVersion = TlsVersion(SslVersion::TLS1_2);
pub const TLS_1_3: TlsVersion = TlsVersion(SslVersion::TLS1_3);
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub struct AlpnProtos(&'static [u8]);
impl AlpnProtos {
pub const HTTP1: AlpnProtos = AlpnProtos(b"\x08http/1.1");
pub const HTTP2: AlpnProtos = AlpnProtos(b"\x02h2");
pub const ALL: AlpnProtos = AlpnProtos(b"\x02h2\x08http/1.1");
}
impl Default for AlpnProtos {
fn default() -> Self {
Self::ALL
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct AlpsProtos(&'static [u8]);
impl AlpsProtos {
pub const HTTP1: AlpsProtos = AlpsProtos(b"http/1.1");
pub const HTTP2: AlpsProtos = AlpsProtos(b"h2");
}
#[derive(Debug, Clone)]
pub struct TlsInfo {
pub(crate) peer_certificate: Option<Vec<u8>>,
}
impl TlsInfo {
pub fn peer_certificate(&self) -> Option<&[u8]> {
self.peer_certificate.as_ref().map(|der| &der[..])
}
}