#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum ClientAuthenticationConfiguration
{
AllowAnyAuthenticated
{
certificate_authority_root_certificates_files: Vec<PathBuf>,
},
AllowAnyAnonymousOrAuthenticated
{
certificate_authority_root_certificates_files: Vec<PathBuf>,
},
AllowAnyAnonymous,
}
impl Default for ClientAuthenticationConfiguration
{
#[inline(always)]
fn default() -> Self
{
ClientAuthenticationConfiguration::AllowAnyAnonymous
}
}
impl ClientAuthenticationConfiguration
{
#[inline(always)]
pub(crate) fn client_certificate_verifier(&self) -> Result<Arc<ClientCertVerifier>, RootCertificateStoreLoadError>
{
use self::ClientAuthenticationConfiguration::*;
match self
{
AllowAnyAuthenticated { ref certificate_authority_root_certificates_files } => Ok(AllowAnyAuthenticatedClient::new(RootCertificateStoreLoadError::root_certificate_store(certificate_authority_root_certificates_files)?)),
AllowAnyAnonymousOrAuthenticated { ref certificate_authority_root_certificates_files } => Ok(AllowAnyAnonymousOrAuthenticatedClient::new(RootCertificateStoreLoadError::root_certificate_store(certificate_authority_root_certificates_files)?)),
AllowAnyAnonymous => Ok(NoClientAuth::new()),
}
}
}