Skip to content

Basic TLS Encrypted ClientHello (ECH) support (updated) #1340

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 21 commits into
base: master
Choose a base branch
from

Conversation

mnbogner
Copy link

This is an update to #1044 which includes both additional changes made by @eighthave and the updates made to conscrypt since the original pull request was created.

Original description:

This is the first stage of implementing Encrypted ClientHello (ECH) in Conscrypt #730. It provides the APIs required for clients to make TLS connections using ECH. This implements enough of the server-side to provide ECH in the test suite using ECH Key and Configs generated by boringssl. This should be enough to let libs like OkHTTP fully implement ECH square/okhttp#6539

eighthave and others added 17 commits November 12, 2021 13:04
This introduces a new Exception so that clients can respond only to
the ECH retry request without having to parse SSLHandshakeExceptions
in general.  This exception should probably be implemented in
boringssl or native_crypto.cc.
OpenJDK's JNDI API and Android DnsResolver API both provide support for raw
DNS queries.  These must be parsed to be useful, so this includes Android's
DnsPacket to parse the raw DNS answer.

Original source:
https://android.googlesource.com/platform/frameworks/libs/net/+/de5905fe0407a1f5e115423d56c948ee2400683d/common/framework/com/android/net/module/util/DnsPacket.java
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:verification
https://gradle.org/release-checksums/

./gradlew wrapper --gradle-distribution all --gradle-version 6.5 \
   --gradle-distribution-sha256-sum \
   c9910513d0eed63cd8f5c7fec4cb4a05731144770104a0871234a4edc3ba3cef
Copy link

google-cla bot commented May 26, 2025

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

/**
*
* @param socket the socket
* @param enabled whether ECH GREASE is enabled or not
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this needs to be updated.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call, I fixed this and also added descriptions for the other new methods in Conscrypt.java.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants