dory/src/connection/verifier.rs
2023-06-01 19:07:08 -04:00

30 lines
910 B
Rust

use rustls::server::ClientCertVerifier;
use crate::{prelude::CertificateStore, mailuser::Mailuser};
use std::sync::Mutex;
#[derive(Debug)]
pub struct Verifier<S: FingerPrintStore> {
pub store: Mutex<S>,
}
pub trait FingerPrintStore: Send + Sync {
fn get_mailuser(&self, fingerprint: &str) -> Option<Mailuser>;
fn insert_mailuser(&mut self, fingerprint: &str, user: &str) -> Option<Mailuser>;
fn contains_mailuser(&self, fingerprint: &str) -> bool;
}
impl<S: FingerPrintStore> ClientCertVerifier for Verifier<S> {
fn client_auth_root_subjects(&self) -> &[rustls::DistinguishedName] {
todo!()
}
fn verify_client_cert(
&self,
end_entity: &rustls::Certificate,
intermediates: &[rustls::Certificate],
now: std::time::SystemTime,
) -> Result<rustls::server::ClientCertVerified, rustls::Error> {
todo!()
}
}