Skip to main content

HickoryTxtLookup

Struct HickoryTxtLookup 

Source
pub struct HickoryTxtLookup { /* private fields */ }
Expand description

A aph_core::discovery::ports::TxtRecordLookup backed by a system- configured hickory resolver.

Send + Sync follows from the resolver’s own bounds, so one instance can be shared across concurrent verifications without wrapping.

Implementations§

Source§

impl HickoryTxtLookup

Source

pub fn from_system_conf() -> Result<Self, AphError>

Builds a lookup from the host’s own resolver configuration — /etc/resolv.conf on Unix, the registry on Windows.

§Errors

APH_E008 if the system configuration cannot be read. The failure is reported in the same opaque form as a failed query on purpose: a caller that could distinguish “this verifier is misconfigured” from “that notary is unreachable” by reading an error string would be reporting its own posture to whoever chose the DID.

Source

pub fn with_resolver(resolver: TokioAsyncResolver) -> Self

Builds a lookup over a resolver the caller configured.

The injection point for an adopter who already runs a resolver — a pinned recursive server, DNS-over-TLS, a shorter timeout — without having to reimplement the absence/failure split, which is the only part of this adapter that is protocol knowledge rather than plumbing.

Trait Implementations§

Source§

impl TxtRecordLookup for HickoryTxtLookup

Source§

fn lookup_txt<'a>( &'a self, name: &'a str, ) -> DiscoveryFuture<'a, DiscoveryOutcome<Vec<String>>>

Returns EVERY TXT string at name, unparsed and unfiltered.

No pre-filtering, per the port contract: a domain legitimately holds unrelated TXT records at one name and a rotating notary holds several APH records side by side, so an adapter that dropped what it judged malformed would turn one typo in DNS into a total verification outage.

name arrives already derived by DidUrl::dns_txt_name; this adapter does not re-derive it.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more