pub struct CaaPolicy {
pub records: Vec<CaaRecord>,
pub effective_domain: Option<String>,
pub has_policy: bool,
pub issuer_match: Option<IssuerCaaMatch>,
pub iodef: Vec<String>,
pub wildcard_note: Option<String>,
pub note: String,
}Expand description
CAA policy collected for a domain, plus the informational note that callers should surface to users.
Fields§
§records: Vec<CaaRecord>Records discovered (may be empty if no policy is set).
effective_domain: Option<String>Domain at which the records were found. Per RFC 8659 the resolver climbs the tree until a CAA RRset is encountered, so this may be a parent of the queried name.
has_policy: boolTrue iff at least one CAA record was found in the tree-walk.
issuer_match: Option<IssuerCaaMatch>Result of comparing a presented cert’s issuer against the policy.
None if no cert was supplied for comparison.
iodef: Vec<String>iodef incident-reporting contacts declared in the policy (RFC 8659
§4.4) — a takedown/abuse channel available nowhere else in seer.
wildcard_note: Option<String>A note when the wildcard issuance policy (issuewild) is broader than
the base (issue) policy — i.e. a CA may issue wildcard certs it is not
permitted to issue named certs for. None when the policies are
consistent, or issuewild/issue is absent (RFC 8659 §4.3: absent
issuewild inherits issue, which is NOT a gap).
note: StringInformational note about CAA semantics. Always populated.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for CaaPolicy
impl<'de> Deserialize<'de> for CaaPolicy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for CaaPolicy
impl RefUnwindSafe for CaaPolicy
impl Send for CaaPolicy
impl Sync for CaaPolicy
impl Unpin for CaaPolicy
impl UnsafeUnpin for CaaPolicy
impl UnwindSafe for CaaPolicy
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more