| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent ede34aa commit 6d77b61
45 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1 @@ | |||
| 1 | + openssl/fuzz/corpora | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -215,6 +215,9 @@ | |||
| 215 | 215 | ||
| 216 | 216 | Changes between 1.1.1c and 1.1.1d [10 Sep 2019] | |
| 217 | 217 | ||
| 218 | + *) Implement BoringSSL's QUIC API | ||
| 219 | + [Todd Short] | ||
| 220 | + | ||
| 218 | 221 | *) Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random | |
| 219 | 222 | number generator (RNG). This was intended to include protection in the | |
| 220 | 223 | event of a fork() system call in order to ensure that the parent and child | |
| Original file line number | Diff line number | Diff 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 | + ); | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -401,6 +401,7 @@ my @disablables = ( | |||
| 401 | 401 | "poly1305", | |
| 402 | 402 | "posix-io", | |
| 403 | 403 | "psk", | |
| 404 | + "quic", | ||
| 404 | 405 | "rc2", | |
| 405 | 406 | "rc4", | |
| 406 | 407 | "rc5", | |
@@ -514,6 +515,8 @@ my @disable_cascades = ( | |||
| 514 | 515 | "comp" => [ "zlib" ], | |
| 515 | 516 | "ec" => [ "tls1_3", "sm2" ], | |
| 516 | 517 | "sm3" => [ "sm2" ], | |
| 518 | + "tls1_3" => [ "quic" ], | ||
| 519 | + | ||
| 517 | 520 | sub { !$disabled{"unit-test"} } => [ "heartbeats" ], | |
| 518 | 521 | ||
| 519 | 522 | sub { !$disabled{"msan"} } => [ "asm" ], | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -457,6 +457,9 @@ | |||
| 457 | 457 | no-psk | |
| 458 | 458 | Don't build support for Pre-Shared Key based ciphersuites. | |
| 459 | 459 | ||
| 460 | + no-quic | ||
| 461 | + Don't build with support for QUIC. | ||
| 462 | + | ||
| 460 | 463 | no-rdrand | |
| 461 | 464 | Don't use hardware RDRAND capabilities. | |
| 462 | 465 | ||
| Original file line number | Diff line number | Diff 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. | ||
| Original file line number | Diff line number | Diff 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™. | ||
| 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! | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -38,6 +38,10 @@ const char *OpenSSL_version(int t) | |||
| 38 | 38 | return "ENGINESDIR: \"" ENGINESDIR "\""; | |
| 39 | 39 | #else | |
| 40 | 40 | return "ENGINESDIR: N/A"; | |
| 41 | + #endif | ||
| 42 | + #ifndef OPENSSL_NO_QUIC | ||
| 43 | + case OPENSSL_INFO_QUIC: | ||
| 44 | + return "QUIC"; | ||
| 41 | 45 | #endif | |
| 42 | 46 | } | |
| 43 | 47 | return "not available"; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments