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
sourceimpl<'r> BinDecodable<'r> for EchConfig
impl<'r> BinDecodable<'r> for EchConfig
sourcefn 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).
sourcefn from_bytes(bytes: &'r [u8]) -> ProtoResult<Self>
fn from_bytes(bytes: &'r [u8]) -> ProtoResult<Self>
Returns the object in binary form
sourceimpl BinEncodable for EchConfig
impl BinEncodable for EchConfig
sourcefn 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).
sourcefn to_bytes(&self) -> ProtoResult<Vec<u8>>
fn to_bytes(&self) -> ProtoResult<Vec<u8>>
Returns the object in binary form
sourceimpl<'de> Deserialize<'de> for EchConfig
impl<'de> Deserialize<'de> for EchConfig
sourcefn 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>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl Display for EchConfig
impl Display for EchConfig
sourcefn 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. trust-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, trust-dns will encode the data as it is stored, i.e. without the length encoding.
sourceimpl PartialEq<EchConfig> for EchConfig
impl PartialEq<EchConfig> for EchConfig
impl Eq for EchConfig
impl StructuralEq for EchConfig
impl StructuralPartialEq for EchConfig
Auto Trait Implementations
impl RefUnwindSafe for EchConfig
impl Send for EchConfig
impl Sync for EchConfig
impl Unpin for EchConfig
impl UnwindSafe for EchConfig
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more