pub struct ProofBuilder { /* private fields */ }Expand description
A simple state machine which will generate a series of queries and process the responses until it has built a DNSSEC proof.
A ProofBuilder driver starts with ProofBuilder::new, fetching the state machine and
initial query. As long as ProofBuilder::awaiting_responses returns true, responses should
be read from the resolver. For each query response read from the DNS resolver,
ProofBuilder::process_response should be called, and each fresh query returned should be
sent to the resolver. Once ProofBuilder::awaiting_responses returns false,
ProofBuilder::finish_proof should be called to fetch the resulting proof.
To build a DNSSEC proof using a DoH server, take each QueryBuf, encode it as base64url, and
make a query to https://doh-server/endpoint?dns=base64url_encoded_query with an Accept
header of application/dns-message. Each response, in raw binary, can be fed directly into
ProofBuilder::process_response.
Implementations§
Source§impl ProofBuilder
impl ProofBuilder
Sourcepub fn new(name: &Name, ty: u16) -> (ProofBuilder, QueryBuf)
pub fn new(name: &Name, ty: u16) -> (ProofBuilder, QueryBuf)
Constructs a new ProofBuilder and an initial query to send to the recursive resolver to
begin the proof building process.
Given a correctly-functioning resolver the proof will ultimately be able to prove the
contents of any records with the given type at the given name (as long as the given
type is supported by this library).
You can find constants for supported standard types in the crate::rr module.
Sourcepub fn awaiting_responses(&self) -> bool
pub fn awaiting_responses(&self) -> bool
Returns true as long as further responses are expected from the resolver.
As long as this returns true, responses should be read from the resolver and passed to
Self::process_response. Once this returns false, Self::finish_proof should be used
to (possibly) get the final proof.
Sourcepub fn process_response(
&mut self,
resp: &QueryBuf,
) -> Result<Vec<QueryBuf>, ProofBuildingError>
pub fn process_response( &mut self, resp: &QueryBuf, ) -> Result<Vec<QueryBuf>, ProofBuildingError>
Processes a query response from the recursive resolver, returning a list of new queries to send to the resolver.
Sourcepub fn finish_proof(self) -> Result<(Vec<u8>, u32), ()>
pub fn finish_proof(self) -> Result<(Vec<u8>, u32), ()>
Finalizes the proof, if one is available, and returns it as well as the TTL that should be used to cache the proof (i.e. the lowest TTL of all records which were used to build the proof).
Only fails if too many queries have been made or there are still some pending queries.
Trait Implementations§
Source§impl Clone for ProofBuilder
impl Clone for ProofBuilder
Source§fn clone(&self) -> ProofBuilder
fn clone(&self) -> ProofBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more