Skip to content

Commit cbe7fad

Browse files
committed
ECH: renamed from ESNI in docs and configure
Encrypted Client Hello (ECH) is the current name. Closes curl#6022
1 parent 83c6493 commit cbe7fad

File tree

4 files changed

+75
-79
lines changed

4 files changed

+75
-79
lines changed

configure.ac

+18-18
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ CURL_CHECK_OPTION_CURLDEBUG
4949
CURL_CHECK_OPTION_SYMBOL_HIDING
5050
CURL_CHECK_OPTION_ARES
5151
CURL_CHECK_OPTION_RT
52-
CURL_CHECK_OPTION_ESNI
52+
CURL_CHECK_OPTION_ECH
5353

5454
XC_CHECK_PATH_SEPARATOR
5555

@@ -4873,32 +4873,32 @@ if test "$enable_altsvc" = "yes"; then
48734873
fi
48744874

48754875
dnl *************************************************************
4876-
dnl check whether ESNI support, if desired, is actually available
4876+
dnl check whether ECH support, if desired, is actually available
48774877
dnl
4878-
if test "x$want_esni" != "xno"; then
4879-
AC_MSG_CHECKING([whether ESNI support is available])
4878+
if test "x$want_ech" != "xno"; then
4879+
AC_MSG_CHECKING([whether ECH support is available])
48804880

48814881
dnl assume NOT and look for sufficient condition
4882-
ESNI_ENABLED=0
4883-
ESNI_SUPPORT=''
4882+
ECH_ENABLED=0
4883+
ECH_SUPPORT=''
48844884

4885-
dnl OpenSSL with a chosen ESNI function should be enough
4885+
dnl OpenSSL with a chosen ECH function should be enough
48864886
dnl so more exhaustive checking seems unnecessary for now
48874887
if test "x$OPENSSL_ENABLED" = "x1"; then
4888-
AC_CHECK_FUNCS(SSL_get_esni_status,
4889-
ESNI_SUPPORT="ESNI support available (OpenSSL with SSL_get_esni_status)"
4890-
ESNI_ENABLED=1)
4888+
AC_CHECK_FUNCS(SSL_get_ech_status,
4889+
ECH_SUPPORT="ECH support available (OpenSSL with SSL_get_ech_status)"
4890+
ECH_ENABLED=1)
48914891

48924892
dnl add 'elif' chain here for additional implementations
48934893
fi
48944894

48954895
dnl now deal with whatever we found
4896-
if test "x$ESNI_ENABLED" = "x1"; then
4897-
AC_DEFINE(USE_ESNI, 1, [if ESNI support is available])
4898-
AC_MSG_RESULT($ESNI_SUPPORT)
4899-
experimental="$experimental ESNI"
4896+
if test "x$ECH_ENABLED" = "x1"; then
4897+
AC_DEFINE(USE_ECH, 1, [if ECH support is available])
4898+
AC_MSG_RESULT($ECH_SUPPORT)
4899+
experimental="$experimental ECH"
49004900
else
4901-
AC_MSG_ERROR([--enable-esni ignored: No ESNI support found])
4901+
AC_MSG_ERROR([--enable-ech ignored: No ECH support found])
49024902
fi
49034903
fi
49044904

@@ -5034,8 +5034,8 @@ if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
50345034
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
50355035
fi
50365036

5037-
if test "x$ESNI_ENABLED" = "x1"; then
5038-
SUPPORT_FEATURES="$SUPPORT_FEATURES ESNI"
5037+
if test "x$ECH_ENABLED" = "x1"; then
5038+
SUPPORT_FEATURES="$SUPPORT_FEATURES ECH"
50395039
fi
50405040

50415041
dnl replace spaces with newlines
@@ -5233,7 +5233,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
52335233
Alt-svc: ${curl_altsvc_msg}
52345234
HTTP2: ${curl_h2_msg}
52355235
HTTP3: ${curl_h3_msg}
5236-
ESNI: ${curl_esni_msg}
5236+
ECH: ${curl_ech_msg}
52375237
Protocols: ${SUPPORT_PROTOCOLS}
52385238
Features: ${SUPPORT_FEATURES}
52395239
])

docs/ESNI.md renamed to docs/ECH.md

+35-39
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
1-
# TLS: ESNI support in curl and libcurl
1+
# TLS: ECH support in curl and libcurl
22

33
## Summary
44

5-
**ESNI** means **Encrypted Server Name Indication**, a TLS 1.3
6-
extension which is currently the subject of an
7-
[IETF Draft][tlsesni].
5+
**ECH** means **Encrypted Client Hello**, a TLS 1.3 extension which is
6+
currently the subject of an [IETF Draft][tlsesni]. (ECH was formerly known as
7+
ESNI).
88

9-
This file is intended to show the latest current state of ESNI support
9+
This file is intended to show the latest current state of ECH support
1010
in **curl** and **libcurl**.
1111

12-
At end of August 2019, an [experimental fork of curl][niallorcurl],
13-
built using an [experimental fork of OpenSSL][sftcdopenssl], which in
14-
turn provided an implementation of ESNI, was demonstrated
15-
interoperating with a server belonging to the [DEfO
16-
Project][defoproj].
12+
At end of August 2019, an [experimental fork of curl][niallorcurl], built
13+
using an [experimental fork of OpenSSL][sftcdopenssl], which in turn provided
14+
an implementation of ECH, was demonstrated interoperating with a server
15+
belonging to the [DEfO Project][defoproj].
1716

1817
Further sections here describe
1918

2019
- resources needed for building and demonstrating **curl** support
21-
for ESNI,
20+
for ECH,
2221

2322
- progress to date,
2423

@@ -28,18 +27,18 @@ Further sections here describe
2827

2928
## Resources needed
3029

31-
To build and demonstrate ESNI support in **curl** and/or **libcurl**,
30+
To build and demonstrate ECH support in **curl** and/or **libcurl**,
3231
you will need
3332

34-
- a TLS library, supported by **libcurl**, which implements ESNI;
33+
- a TLS library, supported by **libcurl**, which implements ECH;
3534

36-
- an edition of **curl** and/or **libcurl** which supports the ESNI
35+
- an edition of **curl** and/or **libcurl** which supports the ECH
3736
implementation of the chosen TLS library;
3837

3938
- an environment for building and running **curl**, and at least
4039
building **OpenSSL**;
4140

42-
- a server, supporting ESNI, against which to run a demonstration
41+
- a server, supporting ECH, against which to run a demonstration
4342
and perhaps a specific target URL;
4443

4544
- some instructions.
@@ -58,52 +57,49 @@ The following set of resources is currently known to be available.
5857

5958
- Details [below](#pr4011);
6059

61-
- New **curl** feature: `CURL_VERSION_ESNI`;
60+
- New configuration option: `--enable-ech`;
6261

63-
- New configuration option: `--enable-esni`;
64-
65-
- Build-time check for availability of resources needed for ESNI
62+
- Build-time check for availability of resources needed for ECH
6663
support;
6764

68-
- Pre-processor symbol `USE_ESNI` for conditional compilation of
69-
ESNI support code, subject to configuration option and
65+
- Pre-processor symbol `USE_ECH` for conditional compilation of
66+
ECH support code, subject to configuration option and
7067
availability of needed resources.
7168

7269
## TODO
7370

74-
- (next PR) Add libcurl options to set ESNI parameters.
71+
- (next PR) Add libcurl options to set ECH parameters.
7572

76-
- (next PR) Add curl tool command line options to set ESNI parameters.
73+
- (next PR) Add curl tool command line options to set ECH parameters.
7774

78-
- (WIP) Extend DoH functions so that published ESNI parameters can be
75+
- (WIP) Extend DoH functions so that published ECH parameters can be
7976
retrieved from DNS instead of being required as options.
8077

81-
- (WIP) Work with OpenSSL community to finalize ESNI API.
78+
- (WIP) Work with OpenSSL community to finalize ECH API.
8279

83-
- Track OpenSSL ESNI API in libcurl
80+
- Track OpenSSL ECH API in libcurl
8481

8582
- Identify and implement any changes needed for CMake.
8683

8784
- Optimize build-time checking of available resources.
8885

89-
- Encourage ESNI support work on other TLS/SSL backends.
86+
- Encourage ECH support work on other TLS/SSL backends.
9087

9188
## Additional detail
9289

9390
### PR 4011
9491

95-
**TLS: Provide ESNI support framework for curl and libcurl**
92+
**TLS: Provide ECH support framework for curl and libcurl**
9693

97-
The proposed change provides a framework to facilitate work to
98-
implement ESNI support in curl and libcurl. It is not intended
99-
either to provide ESNI functionality or to favour any particular
100-
TLS-providing backend. Specifically, the change reserves a
101-
feature bit for ESNI support (symbol `CURL_VERSION_ESNI`),
102-
implements setting and reporting of this bit, includes dummy
103-
book-keeping for the symbol, adds a build-time configuration
104-
option (`--enable-esni`), provides an extensible check for
105-
resources available to provide ESNI support, and defines a
106-
compiler pre-processor symbol (`USE_ESNI`) accordingly.
94+
The proposed change provides a framework to facilitate work to implement ECH
95+
support in curl and libcurl. It is not intended either to provide ECH
96+
functionality or to favour any particular TLS-providing backend. Specifically,
97+
the change reserves a feature bit for ECH support (symbol
98+
`CURL_VERSION_ECH`), implements setting and reporting of this bit, includes
99+
dummy book-keeping for the symbol, adds a build-time configuration option
100+
(`--enable-ech`), provides an extensible check for resources available to
101+
provide ECH support, and defines a compiler pre-processor symbol (`USE_ECH`)
102+
accordingly.
107103

108104
Proposed-by: @niallor (Niall O'Reilly)\
109105
Encouraged-by: @sftcd (Stephen Farrell)\
@@ -117,7 +113,7 @@ Limitations:
117113
- Check for available resources, although extensible, refers only to
118114
specific work in progress ([described
119115
here](https://github.com/sftcd/openssl/tree/master/esnistuff)) to
120-
implement ESNI for OpenSSL, as this is the immediate motivation
116+
implement ECH for OpenSSL, as this is the immediate motivation
121117
for the proposed change.
122118

123119
## References

docs/Makefile.am

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ EXTRA_DIST = \
5656
CURL-DISABLE.md \
5757
DEPRECATE.md \
5858
DYNBUF.md \
59-
ESNI.md \
59+
ECH.md \
6060
EXPERIMENTAL.md \
6161
FAQ \
6262
FEATURES \

m4/curl-confopts.m4

+21-21
Original file line numberDiff line numberDiff line change
@@ -649,37 +649,37 @@ AC_DEFUN([CURL_CHECK_NTLM_WB], [
649649
fi
650650
])
651651

652-
dnl CURL_CHECK_OPTION_ESNI
652+
dnl CURL_CHECK_OPTION_ECH
653653
dnl -----------------------------------------------------
654654
dnl Verify whether configure has been invoked with option
655-
dnl --enable-esni or --disable-esni, and set
656-
dnl shell variable want_esni as appropriate.
657-
658-
AC_DEFUN([CURL_CHECK_OPTION_ESNI], [
659-
AC_MSG_CHECKING([whether to enable ESNI support])
660-
OPT_ESNI="default"
661-
AC_ARG_ENABLE(esni,
662-
AC_HELP_STRING([--enable-esni],[Enable ESNI support])
663-
AC_HELP_STRING([--disable-esni],[Disable ESNI support]),
664-
OPT_ESNI=$enableval)
665-
case "$OPT_ESNI" in
655+
dnl --enable-ech or --disable-ech, and set
656+
dnl shell variable want_ech as appropriate.
657+
658+
AC_DEFUN([CURL_CHECK_OPTION_ECH], [
659+
AC_MSG_CHECKING([whether to enable ECH support])
660+
OPT_ECH="default"
661+
AC_ARG_ENABLE(ech,
662+
AC_HELP_STRING([--enable-ech],[Enable ECH support])
663+
AC_HELP_STRING([--disable-ech],[Disable ECH support]),
664+
OPT_ECH=$enableval)
665+
case "$OPT_ECH" in
666666
no)
667-
dnl --disable-esni option used
668-
want_esni="no"
669-
curl_esni_msg="no (--enable-esni)"
667+
dnl --disable-ech option used
668+
want_ech="no"
669+
curl_ech_msg="no (--enable-ech)"
670670
AC_MSG_RESULT([no])
671671
;;
672672
default)
673673
dnl configure option not specified
674-
want_esni="no"
675-
curl_esni_msg="no (--enable-esni)"
674+
want_ech="no"
675+
curl_ech_msg="no (--enable-ech)"
676676
AC_MSG_RESULT([no])
677677
;;
678678
*)
679-
dnl --enable-esni option used
680-
want_esni="yes"
681-
curl_esni_msg="enabled (--disable-esni)"
682-
experimental="esni"
679+
dnl --enable-ech option used
680+
want_ech="yes"
681+
curl_ech_msg="enabled (--disable-ech)"
682+
experimental="ech"
683683
AC_MSG_RESULT([yes])
684684
;;
685685
esac

0 commit comments

Comments
 (0)