pub struct DnssecReport {
pub domain: String,
pub enabled: bool,
pub has_ds_records: bool,
pub has_dnskey_records: bool,
pub ds_records: Vec<DsInfo>,
pub dnskey_records: Vec<DnskeyInfo>,
pub issues: Vec<String>,
pub status: String,
pub chain_valid: bool,
pub authentication_tier: AuthenticationTier,
pub rrsig_records: Vec<RrsigInfo>,
}Expand description
DNSSEC validation report for a domain.
Fields§
§domain: StringThe domain that was checked.
enabled: boolWhether the domain has DNSSEC enabled.
has_ds_records: boolWhether DS records exist at the parent zone.
has_dnskey_records: boolWhether DNSKEY records exist at the domain.
ds_records: Vec<DsInfo>DS records found at the parent zone.
dnskey_records: Vec<DnskeyInfo>DNSKEY records found at the domain.
issues: Vec<String>Validation issues found.
status: StringOverall status: “signed”, “unsigned”, “partial”, or “misconfigured”.
IMPORTANT: this reflects DS↔DNSKEY digest consistency (RFC 4509) observed over plain, unauthenticated DNS. It does NOT verify any RRSIG signatures, signature validity periods, or a chain of trust to the root anchor. “signed” therefore means “the published DS and DNSKEY are digest-consistent”, NOT “the records are cryptographically authenticated” — an on-path or spoofing attacker can fabricate a self-consistent DS+DNSKEY pair. Do not treat this as proof of authenticity.
chain_valid: boolWhether every DS record’s digest matches a published DNSKEY (RFC 4509
digest consistency). This is NOT signature / chain-of-trust validation —
see the caveat on status.
authentication_tier: AuthenticationTierMachine-readable tier describing the DEPTH of checking that was
performed, so consumers don’t over-trust a digest-only “signed” result.
The RESULT of those checks lives in chain_valid / status / issues;
this field says only what was checked.
rrsig_records: Vec<RrsigInfo>RRSIG signatures observed over the zone apex, populated only when RRSIG
validation is enabled (DnssecChecker::with_rrsig_validation(true)).
Empty in the default fast path.
Trait Implementations§
Source§impl Clone for DnssecReport
impl Clone for DnssecReport
Source§fn clone(&self) -> DnssecReport
fn clone(&self) -> DnssecReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DnssecReport
impl Debug for DnssecReport
Source§impl<'de> Deserialize<'de> for DnssecReport
impl<'de> Deserialize<'de> for DnssecReport
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 DnssecReport
impl RefUnwindSafe for DnssecReport
impl Send for DnssecReport
impl Sync for DnssecReport
impl Unpin for DnssecReport
impl UnsafeUnpin for DnssecReport
impl UnwindSafe for DnssecReport
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