ferron_common/util/
no_server_verifier.rs

1use rustls::client::danger::{HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier};
2use rustls::DigitallySignedStruct;
3use rustls::SignatureScheme::{self, *};
4use rustls_pki_types::{CertificateDer, ServerName, UnixTime};
5
6/// A server certificate verifier that always returns a successful verification.
7#[derive(Debug)]
8pub struct NoServerVerifier;
9
10impl Default for NoServerVerifier {
11  fn default() -> Self {
12    Self::new()
13  }
14}
15
16impl NoServerVerifier {
17  pub fn new() -> Self {
18    Self
19  }
20}
21
22impl ServerCertVerifier for NoServerVerifier {
23  fn verify_server_cert(
24    &self,
25    _end_entity: &CertificateDer<'_>,
26    _intermediates: &[CertificateDer<'_>],
27    _server_name: &ServerName<'_>,
28    _ocsp_response: &[u8],
29    _now: UnixTime,
30  ) -> Result<ServerCertVerified, rustls::Error> {
31    Ok(ServerCertVerified::assertion())
32  }
33
34  fn verify_tls12_signature(
35    &self,
36    _message: &[u8],
37    _cert: &CertificateDer<'_>,
38    _dss: &DigitallySignedStruct,
39  ) -> Result<HandshakeSignatureValid, rustls::Error> {
40    Ok(HandshakeSignatureValid::assertion())
41  }
42
43  fn verify_tls13_signature(
44    &self,
45    _message: &[u8],
46    _cert: &CertificateDer<'_>,
47    _dss: &DigitallySignedStruct,
48  ) -> Result<HandshakeSignatureValid, rustls::Error> {
49    Ok(HandshakeSignatureValid::assertion())
50  }
51
52  fn supported_verify_schemes(&self) -> Vec<SignatureScheme> {
53    // Extend the list when necessary
54    vec![
55      ECDSA_NISTP384_SHA384,
56      ECDSA_NISTP256_SHA256,
57      ED25519,
58      RSA_PSS_SHA512,
59      RSA_PSS_SHA384,
60      RSA_PSS_SHA256,
61      RSA_PKCS1_SHA512,
62      RSA_PKCS1_SHA384,
63      RSA_PKCS1_SHA256,
64    ]
65  }
66}