summaryrefslogtreecommitdiff
path: root/extensions/tls/lib.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2021-08-10 16:22:21 +0200
committerGitHub <noreply@github.com>2021-08-10 16:22:21 +0200
commitd82351d67784a2bcb5431ebb233abc727f673152 (patch)
tree68b99db16a836e47791c94b62228fb7d79c74b84 /extensions/tls/lib.rs
parent548e4661121b32b2b9bfb0356b2329be91dec738 (diff)
v1.13.0
Diffstat (limited to 'extensions/tls/lib.rs')
-rw-r--r--extensions/tls/lib.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/extensions/tls/lib.rs b/extensions/tls/lib.rs
index 932f5ba4c..8f56f0ffd 100644
--- a/extensions/tls/lib.rs
+++ b/extensions/tls/lib.rs
@@ -25,6 +25,7 @@ use rustls::ServerCertVerified;
use rustls::ServerCertVerifier;
use rustls::StoresClientSessions;
use rustls::TLSError;
+use rustls::WebPKIVerifier;
use serde::Deserialize;
use std::collections::HashMap;
use std::io::BufReader;
@@ -42,17 +43,22 @@ pub struct NoCertificateVerification(pub Vec<String>);
impl ServerCertVerifier for NoCertificateVerification {
fn verify_server_cert(
&self,
- _roots: &RootCertStore,
- _presented_certs: &[Certificate],
- dns_name: DNSNameRef<'_>,
- _ocsp: &[u8],
+ roots: &RootCertStore,
+ presented_certs: &[Certificate],
+ dns_name_ref: DNSNameRef<'_>,
+ ocsp: &[u8],
) -> Result<ServerCertVerified, TLSError> {
- let dns_name: &str = dns_name.into();
+ let dns_name: &str = dns_name_ref.into();
let dns_name: String = dns_name.to_owned();
if self.0.is_empty() || self.0.contains(&dns_name) {
Ok(ServerCertVerified::assertion())
} else {
- Err(TLSError::General(dns_name))
+ WebPKIVerifier::new().verify_server_cert(
+ roots,
+ presented_certs,
+ dns_name_ref,
+ ocsp,
+ )
}
}