-
Notifications
You must be signed in to change notification settings - Fork 753
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
openssl/quictls support #1605
openssl/quictls support #1605
Conversation
dd81708
to
d58b78b
Compare
4e32bfe
to
cc31d17
Compare
f9ff208
to
a9b8c60
Compare
a9b8c60
to
e51d161
Compare
ffc4e32
to
9014cf9
Compare
CI need to include openssl/quictls so we know we are passing all build/tests with the each vendor. |
9014cf9
to
b51acaa
Compare
Hello, I am working on a mobile application which allows to use encrypted DNS (Android for the moment, iOS right after). It would be great if we can have a pluggable TLS vendor. @brbzull0 As OpenSSL 3.2 supports now QUIC (not all features), your PR will support legacy OpenSSL > 3.2 or only quictls? Thanks for your work. |
760c487
to
8294a7a
Compare
Hello @Eimji . The plan is only quictls for now. Thanks for having a look |
Making this ready for review so we can gather some input. Thanks. cc: @ghedo |
8294a7a
to
22ae11b
Compare
22ae11b
to
3bc498b
Compare
I think is worth having this link here, in case we want to discuss about it. |
ad391cc
to
9cd57ae
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few nits but overall looks good
|
||
// NOTE: This structure is copied from <openssl/aead.h> in order to be able to | ||
// statically allocate it. While it is not often modified upstream, it needs to | ||
// be kept in sync. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add the commit ID in the comment to make tracking more easy?
quiche/src/lib.rs
Outdated
@@ -14311,7 +14327,9 @@ mod tests { | |||
}) | |||
); | |||
} | |||
|
|||
// openssl does not provide a straight interface to deal with custom |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// openssl does not provide a straight interface to deal with custom | |
// openssl does not provide a straightforward interface to deal with custom |
quiche/src/tls/openssl_quictls.rs
Outdated
|
||
impl Context { | ||
pub fn set_early_data_enabled(&mut self, _enabled: bool) { | ||
println!("## calling set_early_data_enabled context!!") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hangover that needs cleanup. Probably a noop or maybe an assert?
Saw that we need to rebase, I do not know if you guys are doing anything with this branch so I do not want to force push a and break anything on your side. Thanks. |
98c5ba4
to
0ce9d56
Compare
This adds support for building against the "quictls" fork of OpenSSL instead of BoringSSL, to provide crypto and TLS support. Because upstream OpenSSL doesn't (yet?) expose an API for implementing the QUIC handshake, like BoringSSL does, a fork of it was created called quictls. This functionality can be useful for applications that already use OpenSSL and where adding BoringSSL on top would create conflicts.
@brbzull0 I was going to do it, just got delayed by travel. Thanks for your work, this is merged now! |
Apache Traffic Server uses this library for handling the QUIC side of things of H3, as a part of this effort we plan to use quictls as the cryptography library, this is an effort(I work for Yahoo) to support that.
This PR includes all the previous work done in the openssl branch.
Design Notes
As some of the API are different between vendors, I have added two sub-modules to handle the specifics, for both, tls and the crypto module. The specifics of course are coded inside each submodule:
BoringSSL:
OpenSSL/quictls:
Each sub-module will be compiled depending on the feature you use (
openssl
orboringssl vendor
) from the main module(tls
,crypto
).Features
0-RTT
Is not supported in this PR. It will be added afterwards. This is reflected in the README.CI
build-dependency
Building notes for testing.
LD_LIBRARY_PATH
and the right path inside thePKG_CONFIG_PATH
openssl
in the cargo--features
listI am using openssl/quictls 3 for this implementation.