Skip to content

Commit 6d77b61

Browse files
jasnelldanielleadams
authored andcommitted
deps: switch openssl to quictls/openssl
As of quictls/openssl@0c70d48 Source: https://github.com/quictls/openssl/tree/OpenSSL_1_1_1j+quic Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: #37601 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
1 parent ede34aa commit 6d77b61

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+2207
-38
lines changed

deps/openssl/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
openssl/fuzz/corpora

deps/openssl/openssl/CHANGES

+3
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@
215215

216216
Changes between 1.1.1c and 1.1.1d [10 Sep 2019]
217217

218+
*) Implement BoringSSL's QUIC API
219+
[Todd Short]
220+
218221
*) Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random
219222
number generator (RNG). This was intended to include protection in the
220223
event of a fork() system call in order to ensure that the parent and child
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
## -*- mode: perl; -*-
2+
## Build configuration targets for openssl-team members
3+
4+
my %targets = (
5+
"purify" => {
6+
inherit_from => [ 'BASE_unix' ],
7+
cc => "purify gcc",
8+
CFLAGS => "-g -Wall",
9+
thread_scheme => "(unknown)",
10+
ex_libs => add(" ","-lsocket -lnsl"),
11+
},
12+
"debug" => {
13+
inherit_from => [ 'BASE_unix' ],
14+
cc => "gcc",
15+
cflags => "-DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror",
16+
thread_scheme => "(unknown)",
17+
},
18+
"debug-erbridge" => {
19+
inherit_from => [ 'BASE_unix', "x86_64_asm" ],
20+
cc => "gcc",
21+
cflags => combine(join(' ', @gcc_devteam_warn),
22+
"-DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g",
23+
threads("-D_REENTRANT")),
24+
ex_libs => add(" ","-ldl"),
25+
bn_ops => "SIXTY_FOUR_BIT_LONG",
26+
thread_scheme => "pthreads",
27+
perlasm_scheme => "elf",
28+
dso_scheme => "dlfcn",
29+
shared_target => "linux-shared",
30+
shared_cflag => "-fPIC",
31+
shared_ldflag => "-m64",
32+
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
33+
multilib => "64",
34+
},
35+
"debug-linux-pentium" => {
36+
inherit_from => [ 'BASE_unix', "x86_elf_asm" ],
37+
cc => "gcc",
38+
cflags => combine("-DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG -DL_ENDIAN -g -mcpu=pentium -Wall",
39+
threads("-D_REENTRANT")),
40+
ex_libs => add(" ","-ldl"),
41+
bn_ops => "BN_LLONG",
42+
thread_scheme => "pthreads",
43+
dso_scheme => "dlfcn",
44+
},
45+
"debug-linux-ppro" => {
46+
inherit_from => [ 'BASE_unix', "x86_elf_asm" ],
47+
cc => "gcc",
48+
cflags => combine("-DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG -DL_ENDIAN -g -mcpu=pentiumpro -Wall",
49+
threads("-D_REENTRANT")),
50+
ex_libs => add(" ","-ldl"),
51+
bn_ops => "BN_LLONG",
52+
thread_scheme => "pthreads",
53+
dso_scheme => "dlfcn",
54+
},
55+
"debug-linux-ia32-aes" => {
56+
inherit_from => [ 'BASE_unix' ],
57+
cc => "gcc",
58+
cflags => combine("-DL_ENDIAN -O3 -fomit-frame-pointer -Wall",
59+
threads("-D_REENTRANT")),
60+
ex_libs => add(" ","-ldl"),
61+
bn_ops => "BN_LLONG",
62+
cpuid_asm_src => "x86cpuid.s",
63+
bn_asm_src => "bn-586.s co-586.s x86-mont.s",
64+
des_asm_src => "des-586.s crypt586.s",
65+
aes_asm_src => "aes_x86core.s aes_cbc.s aesni-x86.s",
66+
bf_asm_src => "bf-586.s",
67+
md5_asm_src => "md5-586.s",
68+
sha1_asm_src => "sha1-586.s sha256-586.s sha512-586.s",
69+
cast_asm_src => "cast-586.s",
70+
rc4_asm_src => "rc4-586.s",
71+
rmd160_asm_src => "rmd-586.s",
72+
rc5_asm_src => "rc5-586.s",
73+
wp_asm_src => "wp_block.s wp-mmx.s",
74+
modes_asm_src => "ghash-x86.s",
75+
padlock_asm_src => "e_padlock-x86.s",
76+
thread_scheme => "pthreads",
77+
perlasm_scheme => "elf",
78+
dso_scheme => "dlfcn",
79+
shared_target => "linux-shared",
80+
shared_cflag => "-fPIC",
81+
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
82+
},
83+
"debug-test-64-clang" => {
84+
inherit_from => [ 'BASE_unix', "x86_64_asm" ],
85+
cc => "clang",
86+
cflags => combine(join(' ', @gcc_devteam_warn),
87+
"-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_UNUSED -g3 -O3 -pipe",
88+
threads("${BSDthreads}")),
89+
bn_ops => "SIXTY_FOUR_BIT_LONG",
90+
thread_scheme => "pthreads",
91+
perlasm_scheme => "elf",
92+
dso_scheme => "dlfcn",
93+
shared_target => "bsd-gcc-shared",
94+
shared_cflag => "-fPIC",
95+
shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
96+
},
97+
"darwin64-debug-test-64-clang" => {
98+
inherit_from => [ 'BASE_unix', "x86_64_asm" ],
99+
cc => "clang",
100+
cflags => combine("-arch x86_64 -DL_ENDIAN",
101+
join(' ', @gcc_devteam_warn),
102+
"-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_UNUSED -g3 -O3 -pipe",
103+
threads("${BSDthreads}")),
104+
sys_id => "MACOSX",
105+
bn_ops => "SIXTY_FOUR_BIT_LONG",
106+
thread_scheme => "pthreads",
107+
perlasm_scheme => "macosx",
108+
dso_scheme => "dlfcn",
109+
shared_target => "darwin-shared",
110+
shared_cflag => "-fPIC -fno-common",
111+
shared_ldflag => "-arch x86_64 -dynamiclib",
112+
shared_extension => ".\$(SHLIB_VERSION_NUMBER).dylib",
113+
},
114+
);

deps/openssl/openssl/Configure

+3
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ my @disablables = (
401401
"poly1305",
402402
"posix-io",
403403
"psk",
404+
"quic",
404405
"rc2",
405406
"rc4",
406407
"rc5",
@@ -514,6 +515,8 @@ my @disable_cascades = (
514515
"comp" => [ "zlib" ],
515516
"ec" => [ "tls1_3", "sm2" ],
516517
"sm3" => [ "sm2" ],
518+
"tls1_3" => [ "quic" ],
519+
517520
sub { !$disabled{"unit-test"} } => [ "heartbeats" ],
518521

519522
sub { !$disabled{"msan"} } => [ "asm" ],

deps/openssl/openssl/INSTALL

+3
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,9 @@
457457
no-psk
458458
Don't build support for Pre-Shared Key based ciphersuites.
459459

460+
no-quic
461+
Don't build with support for QUIC.
462+
460463
no-rdrand
461464
Don't use hardware RDRAND capabilities.
462465

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
2+
OpenSSL 1.1.1j 16 Feb 2021
3+
4+
Copyright (c) 1998-2020 The OpenSSL Project
5+
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
6+
All rights reserved.
7+
8+
DESCRIPTION
9+
-----------
10+
11+
The OpenSSL Project is a collaborative effort to develop a robust,
12+
commercial-grade, fully featured, and Open Source toolkit implementing the
13+
Transport Layer Security (TLS) protocols (including SSLv3) as well as a
14+
full-strength general purpose cryptographic library.
15+
16+
OpenSSL is descended from the SSLeay library developed by Eric A. Young
17+
and Tim J. Hudson. The OpenSSL toolkit is licensed under a dual-license (the
18+
OpenSSL license plus the SSLeay license), which means that you are free to
19+
get and use it for commercial and non-commercial purposes as long as you
20+
fulfill the conditions of both licenses.
21+
22+
OVERVIEW
23+
--------
24+
25+
The OpenSSL toolkit includes:
26+
27+
libssl (with platform specific naming):
28+
Provides the client and server-side implementations for SSLv3 and TLS.
29+
30+
libcrypto (with platform specific naming):
31+
Provides general cryptographic and X.509 support needed by SSL/TLS but
32+
not logically part of it.
33+
34+
openssl:
35+
A command line tool that can be used for:
36+
Creation of key parameters
37+
Creation of X.509 certificates, CSRs and CRLs
38+
Calculation of message digests
39+
Encryption and decryption
40+
SSL/TLS client and server tests
41+
Handling of S/MIME signed or encrypted mail
42+
And more...
43+
44+
INSTALLATION
45+
------------
46+
47+
See the appropriate file:
48+
INSTALL Linux, Unix, Windows, OpenVMS, ...
49+
NOTES.* INSTALL addendums for different platforms
50+
51+
SUPPORT
52+
-------
53+
54+
See the OpenSSL website www.openssl.org for details on how to obtain
55+
commercial technical support. Free community support is available through the
56+
openssl-users email list (see
57+
https://www.openssl.org/community/mailinglists.html for further details).
58+
59+
If you have any problems with OpenSSL then please take the following steps
60+
first:
61+
62+
- Download the latest version from the repository
63+
to see if the problem has already been addressed
64+
- Configure with no-asm
65+
- Remove compiler optimization flags
66+
67+
If you wish to report a bug then please include the following information
68+
and create an issue on GitHub:
69+
70+
- OpenSSL version: output of 'openssl version -a'
71+
- Configuration data: output of 'perl configdata.pm --dump'
72+
- OS Name, Version, Hardware platform
73+
- Compiler Details (name, version)
74+
- Application Details (name, version)
75+
- Problem Description (steps that will reproduce the problem, if known)
76+
- Stack Traceback (if the application dumps core)
77+
78+
Just because something doesn't work the way you expect does not mean it
79+
is necessarily a bug in OpenSSL. Use the openssl-users email list for this type
80+
of query.
81+
82+
HOW TO CONTRIBUTE TO OpenSSL
83+
----------------------------
84+
85+
See CONTRIBUTING
86+
87+
LEGALITIES
88+
----------
89+
90+
A number of nations restrict the use or export of cryptography. If you
91+
are potentially subject to such restrictions you should seek competent
92+
professional legal advice before attempting to develop or distribute
93+
cryptographic code.

deps/openssl/openssl/README.md

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
What This Is
2+
============
3+
4+
This is a fork of [OpenSSL](https://www.openssl.org) to enable QUIC. In addition to the
5+
website, the official source distribution is at https://github.com/openssl/openssl.
6+
The OpenSSL `README` can be found at [README-OpenSSL.md](README-OpenSSL.md).
7+
8+
This fork adds API that can be used by QUIC implementations for connection
9+
handshakes. Quoting the IETF Working group
10+
[charter](https://datatracker.ietf.org/wg/quic/about/), QUIC is a "UDP-based,
11+
stream-multiplexing, encrypted transport protocol." If you don't need QUIC, you
12+
should use the official OpenSSL distributions.
13+
14+
This API's here are used by Microsoft's
15+
[MsQuic](https://github.com/microsoft/msquic) and Google's
16+
[Chromium QUIC](https://chromium.googlesource.com/chromium/src/+/master/net/quic/)
17+
18+
We are not in competition with OpenSSL project. We informed them of
19+
our plans to fork the code before we went public. We do not speak for the
20+
OpenSSL project, and can only point to a
21+
[blog post](https://www.openssl.org/blog/blog/2020/02/17/QUIC-and-OpenSSL/) that
22+
provides their view of QUIC support.
23+
24+
As stated in their blog post, the OpenSSL team is focused on their 3.0 release
25+
which is still in alpha, and does not intend to add QUIC functionality to 1.1.x.
26+
There is a community need for a QUIC capable TLS library. This fork is intended
27+
as stopgap solution to enable higher level frameworks and runtimes to use QUIC
28+
with the proven and reliable TLS functionality from OpenSSL. This fork will be
29+
maintained until OpenSSL officially provides reasonable support for QUIC
30+
implementations.
31+
32+
This fork can be considered a supported version of
33+
[OpenSSL PR 8797](https://github.com/openssl/openssl/pull/8797).
34+
We will endeavor to track OpenSSL releases within a day or so, and there is an
35+
item below about how we'll follow their tagging.
36+
37+
On to the questions and answers.
38+
39+
What about branches?
40+
--------------------
41+
We don't want to conflict with OpenSSL branch names. Our current plan is to append
42+
`+quic`. Release tags are likely to be the QUIC branch with `-releaseX` appended.
43+
For example, the OpenSSL tag `openssl-3.0.0-alpha12` would have a branch named
44+
`openssl-3.0.0-alpha12+quic` and a release tag of `openssl-3.0.0-alpha12+quic-release1`
45+
46+
How are you keeping current with OpenSSL?
47+
-----------------------------------------
48+
(In other words, "What about rebasing?")
49+
50+
Our plan it to always rebase on top of an upstream release tag. In particular:
51+
- The changes for QUIC will always be at the tip of the branch -- you will know what
52+
is from the original OpenSSL and what is for QUIC.
53+
- New versions are quickly created once upstream creates a new tag.
54+
- The use of git commands (such as "cherry") can be used to ensure that all changes
55+
have moved forward with minimal or no changes. You will be able to see "QUIC: Add X"
56+
on all branches and the commit itself will be nearly identical on all branches, and
57+
any changes to that can be easily identified.
58+
59+
What about library names?
60+
-------------------------
61+
Library names will be the same, but will use a different version number. The version
62+
numbers for the current OpenSSL libraries are `1.1` (for the 1.1.0 and 1.1.1 branches)
63+
and `3` (for the to-be-3.0 branch). We will be prefixing 81 (ASCII for 'Q') to
64+
the version numbers to generate a unique version number.
65+
66+
```
67+
libcrypto.so.81.3 libcrypto.so.81.1.1 libcrypto.so.1.1 libcrypto.so.3
68+
libssl.so.81.3 libssl.so.81.1.1 libsslo.so.1.1 libssl.so.3
69+
```
70+
The SONAME of these libraries are all different, guaranteeing the correct library
71+
will be used.
72+
73+
...and the executable?
74+
----------------------
75+
We currently do not have any plans to change the name, mainly because we
76+
haven't made any changes there. If you see a need, please open an issue.
77+
78+
The `openssl version` command will report that it is `+quic` enabled.
79+
80+
...and FIPS?
81+
------------
82+
We are not doing anything with FIPS. This is actually good news: you should
83+
be able to load the OpenSSL 3.0 FIPS module into an application built against
84+
this fork and everything should Just Work&#8482;.
85+
86+
How can I contribute?
87+
---------------------
88+
We want any code here to be acceptable to OpenSSL. This means that all contributors
89+
must have signed the appropriate
90+
[contributor license agreements](https://www.openssl.org/policies/cla.html). We
91+
will not ask for copies of any paperwork, you just need to tell us that you've
92+
done so (and we might verify with OpenSSL). We are only interested in making it
93+
easier and better for at least the mentioned QUIC implementations to use a variant
94+
of OpenSSL. If you have a pull request that changes the TLS protocol, or adds
95+
assembly support for a new CPU, or otherwise is not specific to enabling QUIC,
96+
please contribute that to OpenSSL. This fork is intended to be a clean extension
97+
to OpenSSL, with the deltas being specific to QUIC.
98+
99+
Who are you?
100+
------------
101+
This is a collaborative effort between [Akamai](https://www.akamai.com) and
102+
[Microsoft](https://www.microsoft.com). We welcome anyone to contribute!

deps/openssl/openssl/crypto/cversion.c

+4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ const char *OpenSSL_version(int t)
3838
return "ENGINESDIR: \"" ENGINESDIR "\"";
3939
#else
4040
return "ENGINESDIR: N/A";
41+
#endif
42+
#ifndef OPENSSL_NO_QUIC
43+
case OPENSSL_INFO_QUIC:
44+
return "QUIC";
4145
#endif
4246
}
4347
return "not available";

0 commit comments

Comments
 (0)