#[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
impl<'r> BinDecodable<'r> for EchConfig
source§fn read(decoder: &mut BinDecoder<'r>) -> ProtoResult<Self>
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>
fn from_bytes(bytes: &'r [u8]) -> ProtoResult<Self>
source§impl BinEncodable for EchConfig
impl BinEncodable for EchConfig
source§fn emit(&self, encoder: &mut BinEncoder<'_>) -> ProtoResult<()>
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§impl<'de> Deserialize<'de> for EchConfig
impl<'de> Deserialize<'de> for EchConfig
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>,
source§impl Display for EchConfig
impl Display for EchConfig
source§fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
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 PartialEq for EchConfig
impl PartialEq for EchConfig
impl Eq for EchConfig
impl StructuralPartialEq for EchConfig
Auto Trait Implementations§
impl Freeze for EchConfig
impl RefUnwindSafe for EchConfig
impl Send for EchConfig
impl Sync for EchConfig
impl Unpin for EchConfig
impl UnwindSafe for EchConfig
Blanket Implementations§
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.