use crate::core::{Document, XmlResult};
use super::{
verify_xades_baseline_b_enveloped, verify_xades_bes_enveloped, verify_xades_epes_enveloped,
SigningProvider, XadesConfig, XadesProfile, XadesVerificationReport,
};
#[derive(Debug, Clone)]
pub struct XadesVerifier<P> {
provider: P,
config: XadesConfig,
}
impl<P> XadesVerifier<P>
where
P: SigningProvider,
{
pub fn new(provider: P) -> Self {
Self {
provider,
config: XadesConfig::new(),
}
}
pub fn with_config(mut self, config: XadesConfig) -> Self {
self.config = config;
self
}
pub fn verify_document(&self, document: &Document) -> XmlResult<XadesVerificationReport> {
match self.config.profile() {
XadesProfile::Bes => verify_xades_bes_enveloped(document, &self.provider, &self.config),
XadesProfile::Epes(_) => {
verify_xades_epes_enveloped(document, &self.provider, &self.config)
}
XadesProfile::BaselineB { .. } => {
verify_xades_baseline_b_enveloped(document, &self.provider, &self.config)
}
}
}
pub fn config(&self) -> &XadesConfig {
&self.config
}
pub fn provider(&self) -> &P {
&self.provider
}
}