Struct hickory_proto::rr::rdata::svcb::EchConfig

source ·
#[repr(transparent)]
pub struct EchConfig(pub Vec<u8>);
Expand description
9.  SVCB/HTTPS RR parameter for ECH configuration

  The SVCB "echconfig" parameter is defined for conveying the ECH
  configuration of an alternative endpoint.  In wire format, the value
  of the parameter is an ECHConfigs vector [ECH], including the
  redundant length prefix.  In presentation format, the value is a
  single ECHConfigs encoded in Base64 [base64].  Base64 is used here to
  simplify integration with TLS server software.  To enable simpler
  parsing, this SvcParam MUST NOT contain escape sequences.

  When ECH is in use, the TLS ClientHello is divided into an
  unencrypted "outer" and an encrypted "inner" ClientHello.  The outer
  ClientHello is an implementation detail of ECH, and its contents are
  controlled by the ECHConfig in accordance with [ECH].  The inner
  ClientHello is used for establishing a connection to the service, so
  its contents may be influenced by other SVCB parameters.  For
  example, the requirements on the ProtocolNameList in Section 6.1
  apply only to the inner ClientHello.  Similarly, it is the inner
  ClientHello whose Server Name Indication identifies the desired

Tuple Fields§

§0: Vec<u8>

Trait Implementations§

source§

impl<'r> BinDecodable<'r> for EchConfig

source§

fn read(decoder: &mut BinDecoder<'r>) -> ProtoResult<Self>

In wire format, the value of the parameter is an ECHConfigs vector (ECH), including the redundant length prefix (a 2 octet field containing the length of the SvcParamValue as an integer between 0 and 65535 in network byte order).

source§

fn from_bytes(bytes: &'r [u8]) -> ProtoResult<Self>

Returns the object in binary form
source§

impl BinEncodable for EchConfig

source§

fn emit(&self, encoder: &mut BinEncoder<'_>) -> ProtoResult<()>

In wire format, the value of the parameter is an ECHConfigs vector (ECH), including the redundant length prefix (a 2 octet field containing the length of the SvcParamValue as an integer between 0 and 65535 in network byte order).

source§

fn to_bytes(&self) -> ProtoResult<Vec<u8>>

Returns the object in binary form
source§

impl Clone for EchConfig

source§

fn clone(&self) -> EchConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EchConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

The debug format for EchConfig will output the value in BASE64 like Display, but will the addition of the type-name.

source§

impl<'de> Deserialize<'de> for EchConfig

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for EchConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

As the documentation states, the presentation format (what this function outputs) must be a BASE64 encoded string. hickory-dns will encode to BASE64 during formatting of the internal data, and output the BASE64 value.

draft-ietf-dnsop-svcb-https-03 SVCB and HTTPS RRs for DNS, February 2021

In presentation format, the value is a
  single ECHConfigs encoded in Base64 [base64].  Base64 is used here to
  simplify integration with TLS server software.  To enable simpler
  parsing, this SvcParam MUST NOT contain escape sequences.

note while the on the wire the EchConfig has a redundant length, the RFC is not explicit about including it in the BASE64 encoded value, hickory-dns will encode the data as it is stored, i.e. without the length encoding.

source§

impl Hash for EchConfig

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for EchConfig

source§

fn eq(&self, other: &EchConfig) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for EchConfig

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for EchConfig

source§

impl StructuralPartialEq for EchConfig

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,