use std::time::Duration;
use hpx::{
Client,
tls::{CertStore, TlsInfo},
};
#[tokio::main]
async fn main() -> hpx::Result<()> {
let client = Client::builder()
.cert_store(CertStore::from_der_certs(
webpki_root_certs::TLS_SERVER_ROOT_CERTS,
)?)
.build()?;
client.get("https://www.google.com").send().await?;
let client = Client::builder()
.tls_info(true)
.cert_verification(false)
.build()?;
let resp = client.get("https://self-signed.badssl.com/").send().await?;
if let Some(tls_info) = resp.extensions().get::<TlsInfo>()
&& let Some(peer_cert_der) = tls_info.peer_certificate()
{
let self_signed_store = CertStore::from_der_certs(&[peer_cert_der])?;
let client = Client::builder()
.cert_store(self_signed_store)
.connect_timeout(Duration::from_secs(10))
.build()?;
let resp = client.get("https://self-signed.badssl.com/").send().await?;
println!("{}", resp.text().await?);
}
Ok(())
}