Draft: draft-ietf-tls-esni

Commentary: accidentally targeted an older branch that was since merged into master . This just takes the same change and redirects it to the main branch .
Paragraph (version A):
A "HpkeKeyConfig" structure carrying the configuration information
associated with the HPKE public key.  Note that this structure
contains the "config_id" field, which applies to the entire
ECHConfigContents.  Sites MUST NOT publish two
differet"ECHConfigContents" values with the same "HpkeKeyConfig"
value.
Paragraph (version B):
A "HpkeKeyConfig" structure carrying the configuration information
associated with the HPKE public key.  Note that this structure
contains the "config_id" field, which applies to the entire
ECHConfigContents.  Sites MUST NOT publish two different
"ECHConfigContents" values with the same "HpkeKeyConfig" value.
The RECOMMENDED technique for choosing "config_id" is to choose a
random byte.  This process is repeated if this config_id matches
that of any valid ECHConfig, which could include any ECHConfig
that has been recently removed from active use.
Paragraph (version A):
An opaque identifier for the given HPKE key configuration.  This
is used by clients to indicate the key used for ClientHello
encryption.
Paragraph (version B):
A one-byte identifier for the given HPKE key configuration.  This
is used by clients to indicate the key used for ClientHello
encryption.
Paragraph (version A):
If optional configuration identifiers (see optional-configs)) are
used, "config_id" SHOULD be set to a randomly generated eight bytes.
Unless specified by the application using (D)TLS or externally
configured on both sides, implementations MUST compute the field as
specified in encrypted-client-hello.
Paragraph (version B):
If optional configuration identifiers (see optional-configs)) are
used, "config_id" SHOULD be set to a randomly generated byte.  Unless
specified by the application using (D)TLS or externally configured on
both sides, implementations MUST set the field as specified in
encrypted-client-hello.
Paragraph (version A):
"config_id" is replaced with the empty string.
Paragraph (version B):
"config_id" is unchanged and contains the "config_id"
corresponding to the client's chosen ECHConfig.
Paragraph (version A):
Set the "config_id" field to a random eight byte string.
Paragraph (version B):
Set the "config_id" field to a random byte.
Paragraph (version A):
If the client-facing server accepted ECH, it checks the second
ClientHelloOuter also contains the "encrypted_client_hello"
extension.  If not, it MUST abort the handshake with a
"missing_extension" alert.  Otherwise, it checks that
ClientECH.cipher_suite is unchanged, and that ClientECH.config_id and
ClientECH.enc are empty.  If not, it MUST abort the handshake with an
"illegal_parameter" alert.
Paragraph (version B):
If the client-facing server accepted ECH, it checks the second
ClientHelloOuter also contains the "encrypted_client_hello"
extension.  If not, it MUST abort the handshake with a
"missing_extension" alert.  Otherwise, it checks that
ClientECH.cipher_suite and ClientECH.config_id are unchanged, and
that ClientECH.enc is empty.  If not, it MUST abort the handshake
with an "illegal_parameter" alert.