#[derive(Clone, Debug, PartialEq)]
pub struct ParsingDetail<'hdr> {
pub component: &'static str,
pub span_start: usize,
pub span_end: usize,
pub source: &'hdr str,
pub clipped_span: &'hdr str,
pub clipped_remaining: &'hdr str,
}
#[derive(Clone, Debug, PartialEq)]
pub enum AuthResultsError<'hdr> {
RunawayUnknownMethod(usize),
ParsingDetailed(ParsingDetail<'hdr>),
NoHeader,
Parse,
ParseComment(CommentError<'hdr>),
ParseHost(String),
ParsePtypeBugGating,
ParsePtypeBugInvalidProperty,
ParsePtypeBugPropertyGating,
ParsePtypeInvalidAssociatedPtype(ParsingDetail<'hdr>),
InvalidDkimResult(String),
InvalidSpfResult(String),
InvalidIpRevResult(String),
InvalidProperty,
InvalidSmtpAuthResult(String),
InvalidResultStage,
InvalidVersion,
NoAssociatedVersion,
NoAssociatedPolicy,
NoAssociatedReason,
NoHostname,
ParsePtypeNoMethodResult,
PropertiesNotImplemented,
PropertyValuesNotImplemented,
RunAwayAuthPropertyKey,
RunAwayAuthPropertyValue,
RunAwayComment,
RunAwayDkimPropertyKey,
RunAwayDkimPropertyValue,
RunAwayIpRevPropertyKey,
RunAwayIpRevPropertyValue,
RunAwaySpfPropertyKey,
RunAwaySpfPropertyValue,
UnexpectedForwardSlash,
ParseCurrentPushNotImplemented,
}
#[derive(Debug)]
pub enum DkimSignatureError<'hdr> {
ParsingDetailed(ParsingDetail<'hdr>),
NoTagFound,
UnexpectedEqual,
ParseValueUnmatch,
ParseValueInvalid(DkimTagValueError),
MissingVersion,
MissingAlgorithm,
MissingSignature,
MissingBodyHash,
MissingResponsibleSdid,
MissingSignedHeaderFields,
MissingSelector,
}
#[derive(Debug, PartialEq)]
pub enum DkimAlgorithmError {}
#[derive(Clone, Debug, PartialEq)]
pub enum DkimCanonicalizationError {}
#[derive(Debug, PartialEq)]
pub enum DkimTimestampError {}
#[derive(Debug, PartialEq)]
pub enum DkimVersionError {}
#[derive(Debug, PartialEq)]
pub enum DkimTagValueError {
Duplicate,
Timestamp(DkimTimestampError),
Canonicalization(DkimCanonicalizationError),
Algorithm(DkimAlgorithmError),
Version(DkimVersionError),
}
impl<'hdr> From<DkimTagValueError> for DkimSignatureError<'hdr> {
fn from(e: DkimTagValueError) -> Self {
Self::ParseValueInvalid(e)
}
}
impl From<DkimTimestampError> for DkimTagValueError {
fn from(e: DkimTimestampError) -> Self {
Self::Timestamp(e)
}
}
impl From<DkimCanonicalizationError> for DkimTagValueError {
fn from(e: DkimCanonicalizationError) -> Self {
Self::Canonicalization(e)
}
}
impl From<DkimAlgorithmError> for DkimTagValueError {
fn from(e: DkimAlgorithmError) -> Self {
Self::Algorithm(e)
}
}
impl From<DkimVersionError> for DkimTagValueError {
fn from(e: DkimVersionError) -> Self {
Self::Version(e)
}
}
#[derive(Clone, Debug, PartialEq)]
pub enum CommentError<'hdr> {
RunAway,
ParsingDetailed(ParsingDetail<'hdr>),
}
#[derive(Clone, Debug, PartialEq)]
pub enum QuotedError<'hdr> {
Bug,
RunAway,
ParsingDetailed(ParsingDetail<'hdr>),
}
#[derive(Clone, Debug, PartialEq)]
pub enum AddrSpecError<'hdr> {
NoAssociatedLocalPart,
NoAssociatedDomain,
NoAssociatedAddrSpec,
ParsingDetailed(ParsingDetail<'hdr>),
ParseComment(CommentError<'hdr>),
ParseDisplayName(QuotedError<'hdr>),
}
#[derive(Debug, PartialEq)]
pub enum ReturnPathVerifierError<'hdr> {
BugSelectorFalse,
MultipleNotAllowed,
NoHeader,
InvalidHeader(AddrSpecError<'hdr>),
}