oweals/openssl.git
6 years agoIn apps_startup(), call OPENSSL_init_ssl() rather than OPENSSL_init_crypto()
Richard Levitte [Sat, 25 Nov 2017 11:08:47 +0000 (12:08 +0100)]
In apps_startup(), call OPENSSL_init_ssl() rather than OPENSSL_init_crypto()

Otherwise, any command that relies on ssl modules may fail, because
SSL_add_ssl_module() will be called after the config file has already
been loaded.

Fixes #4788

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4792)

6 years agoIn OPENSSL_init_ssl(), run the base ssl init before OPENSSL_init_crypto()
Richard Levitte [Sat, 25 Nov 2017 11:02:58 +0000 (12:02 +0100)]
In OPENSSL_init_ssl(), run the base ssl init before OPENSSL_init_crypto()

IF OPENSSL_init_ssl() is called with the option flag
OPENSSL_INIT_LOAD_CONFIG, any SSL config will be handled wrongly
(i.e. there will be an attempt to load libssl_conf.so or whatever
corresponds to that on non-Unix platforms).  Therefore, at least
SSL_add_ssl_module() MUST be called before OPENSSL_init_crypto() is
called.  The base ssl init does that, plus adds all kinds of ciphers
and digests, which is harmless.

Fixes #4788

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4792)

6 years agoAdd missing range checks on number of multi primes in rsa_ossl_mod_exp
Bernd Edlinger [Thu, 7 Dec 2017 12:03:15 +0000 (13:03 +0100)]
Add missing range checks on number of multi primes in rsa_ossl_mod_exp

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4862)

6 years agoFix no-ec
Benjamin Kaduk [Thu, 7 Dec 2017 23:57:21 +0000 (17:57 -0600)]
Fix no-ec

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4874)

6 years agochacha/asm/chacha-x86_64.pl: add AVX512VL code path.
Andy Polyakov [Mon, 4 Dec 2017 13:16:19 +0000 (14:16 +0100)]
chacha/asm/chacha-x86_64.pl: add AVX512VL code path.

256-bit AVX512VL was estimated to deliver ~50% improvement over AVX2
and it did live up to the expectations.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4838)

6 years agocrypto/x86_64cpuid.pl: suppress AVX512F flag on Skylake-X.
Andy Polyakov [Mon, 4 Dec 2017 13:03:05 +0000 (14:03 +0100)]
crypto/x86_64cpuid.pl: suppress AVX512F flag on Skylake-X.

It was observed that AVX512 code paths can negatively affect overall
Skylake-X system performance. But we are talking specifically about
512-bit code, while AVX512VL, 256-bit variant of AVX512F instructions,
is supposed to fly as smooth as AVX2. Which is why it remains unmasked.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4838)

6 years agoLeave a message in doc to indicate 0 is not acceptable
Paul Yang [Tue, 21 Nov 2017 15:43:03 +0000 (23:43 +0800)]
Leave a message in doc to indicate 0 is not acceptable

[to be squashed]

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4767)

6 years agoFix some issues in apps/req
Paul Yang [Tue, 21 Nov 2017 14:37:23 +0000 (22:37 +0800)]
Fix some issues in apps/req

1. the 'ignore -days' warning should not be printed without '-x509'
2. the 'ignore -days' warning should terminate with new-line

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4767)

6 years agoRemove unicode characters from source
Richard Levitte [Fri, 8 Dec 2017 10:40:30 +0000 (11:40 +0100)]
Remove unicode characters from source

Some compilers react badly to non-ASCII characters

Fixes #4877

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4879)

6 years agoputting the missing static
JitendraLulla [Wed, 15 Nov 2017 10:44:36 +0000 (16:14 +0530)]
putting the missing static

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4717)

6 years agomake get_cipher_handle static
JitendraLulla [Wed, 15 Nov 2017 01:13:48 +0000 (06:43 +0530)]
make get_cipher_handle static

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4717)

6 years agofix --strict-warnings
JitendraLulla [Wed, 15 Nov 2017 00:33:07 +0000 (06:03 +0530)]
fix  --strict-warnings

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4717)

6 years agoextending afalg with aes-cbc-192/256, afalgtest.c also updated accordingly. comments...
JitendraLulla [Sat, 11 Nov 2017 06:31:58 +0000 (12:01 +0530)]
extending afalg with aes-cbc-192/256, afalgtest.c also updated accordingly. comments from matt, Stephen considered

fix  indentation, remove printf from afalgtest.c

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4717)

6 years agoConsistent formatting for sizeof(foo)
Rich Salz [Thu, 7 Dec 2017 18:39:34 +0000 (13:39 -0500)]
Consistent formatting for sizeof(foo)

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4872)

6 years agoDocument how the configuration option 'reconf' works
Richard Levitte [Thu, 30 Nov 2017 20:48:04 +0000 (21:48 +0100)]
Document how the configuration option 'reconf' works

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

6 years agoConfigure: die if there are other arguments with 'reconf'
Richard Levitte [Thu, 30 Nov 2017 20:46:53 +0000 (21:46 +0100)]
Configure: die if there are other arguments with 'reconf'

It's better to inform the user about this than silently ignoring
something that the user might expect to work, somehow.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

6 years agoMake sure ./config passes options to ./Configure correctly
Richard Levitte [Thu, 30 Nov 2017 07:20:02 +0000 (08:20 +0100)]
Make sure ./config passes options to ./Configure correctly

This is, even when they contain spaces or all kinds of funny quotes

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

6 years agoHave all relevant config targets use the env() function rather than $ENV
Richard Levitte [Wed, 29 Nov 2017 16:41:10 +0000 (17:41 +0100)]
Have all relevant config targets use the env() function rather than $ENV

This way, any of the relevant environment variables for the platform
being configured are preserved and don't have to be recalled manually
when reconfiguring.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

6 years agoDocument the possibility for command line argument env assignments
Richard Levitte [Wed, 29 Nov 2017 12:23:07 +0000 (13:23 +0100)]
Document the possibility for command line argument env assignments

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

6 years agoMake it possible to add env var assignments as Configure options
Richard Levitte [Wed, 29 Nov 2017 12:16:53 +0000 (13:16 +0100)]
Make it possible to add env var assignments as Configure options

In other words, make the following possible:

    ./config CC=clang

or

    ./Configure CC=clang linux-x86_64

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

6 years agoSave away the environment variables we rely on
Richard Levitte [Wed, 29 Nov 2017 12:09:01 +0000 (13:09 +0100)]
Save away the environment variables we rely on

There are cases when we overwrite %ENV values, and while this is
perfectly fine on some platforms, it isn't on others, because the
Configure script isn't necessarely run in a separate process, and
thus, changing %ENV may very well change the environment of the
calling shell.  VMS is such a platform.

Furthermore, saving away values that we use also allow us to save them
in configdata.pm in an effective way, and recall those values just as
effectively when reconfiguring.  Also, this makes sure that we do use
the saved away values when reconfiguring, when the actual environment
variables might otherwise affect us.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

6 years agoFix the buffer sizing in the fatalerrtest
Matt Caswell [Thu, 7 Dec 2017 14:35:30 +0000 (14:35 +0000)]
Fix the buffer sizing in the fatalerrtest

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4867)

6 years agoUpdate CHANGES and NEWS for new release
Matt Caswell [Wed, 6 Dec 2017 14:09:11 +0000 (14:09 +0000)]
Update CHANGES and NEWS for new release

Reviewed-by: Rich Salz <rsalz@openssl.org>
6 years agoAdd a test for CVE-2017-3737
Matt Caswell [Wed, 29 Nov 2017 13:56:15 +0000 (13:56 +0000)]
Add a test for CVE-2017-3737

Test reading/writing to an SSL object after a fatal error has been
detected. This CVE only affected 1.0.2, but we should add it to other
branches for completeness.

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
6 years agotest/bntest.c: add rsaz_1024_mul_avx2 regression test.
Andy Polyakov [Fri, 24 Nov 2017 10:37:59 +0000 (11:37 +0100)]
test/bntest.c: add rsaz_1024_mul_avx2 regression test.

Reviewed-by: Rich Salz <rsalz@openssl.org>
6 years agobn/asm/rsaz-avx2.pl: fix digit correction bug in rsaz_1024_mul_avx2.
Andy Polyakov [Fri, 24 Nov 2017 10:35:50 +0000 (11:35 +0100)]
bn/asm/rsaz-avx2.pl: fix digit correction bug in rsaz_1024_mul_avx2.

Credit to OSS-Fuzz for finding this.

CVE-2017-3738

Reviewed-by: Rich Salz <rsalz@openssl.org>
6 years agoFix the check_fatal macro
Matt Caswell [Tue, 5 Dec 2017 13:37:26 +0000 (13:37 +0000)]
Fix the check_fatal macro

The check_fatal macro is supposed to only be called if we are already
expecting to be in the fatal state. The macro asserts that we are and
puts us into the fatal state if not.

This issue combined with the problem fixed in the previous commit meant
that the fuzzer detected a crash at a point in the processing when we
should have already been in the fatal state.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4847)

6 years agoFix bug in TLSv1.3 PSK processing
Matt Caswell [Tue, 5 Dec 2017 13:36:13 +0000 (13:36 +0000)]
Fix bug in TLSv1.3 PSK processing

The recent SSL error overhaul left a case where an error occurs but
SSLfatal() is not called.

Credit to OSSfuzz for finding this issue.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4847)

6 years agoapps/speed.c: detect evp cipher 32-bit ctr overflow and reset iv
Patrick Steuer [Tue, 5 Dec 2017 12:10:11 +0000 (13:10 +0100)]
apps/speed.c: detect evp cipher 32-bit ctr overflow and reset iv

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4846)

6 years agoAdd link for more SECLEVEL info
Rich Salz [Tue, 5 Dec 2017 15:53:45 +0000 (10:53 -0500)]
Add link for more SECLEVEL info

Thanks to Michel Sales for the suggestion.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/4849)

6 years agoFix minor typo in comment in rsa_st
Daniel Bevenius [Tue, 5 Dec 2017 11:01:14 +0000 (12:01 +0100)]
Fix minor typo in comment in rsa_st

CLA: trivial

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4845)

6 years agoUpdate eng_fat.c
MerQGh [Mon, 4 Dec 2017 06:20:51 +0000 (09:20 +0300)]
Update eng_fat.c

This line will allow use private keys, which created by Crypto Pro, to
sign with OpenSSL.

CLA: trivial

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4836)

6 years agomodes/asm/ghashv8-armx.pl: handle lengths not divisible by 4x.
Andy Polyakov [Fri, 1 Dec 2017 21:32:48 +0000 (22:32 +0100)]
modes/asm/ghashv8-armx.pl: handle lengths not divisible by 4x.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4830)

6 years agomodes/asm/ghashv8-armx.pl: optimize modulo-scheduled loop.
Andy Polyakov [Fri, 1 Dec 2017 14:57:43 +0000 (15:57 +0100)]
modes/asm/ghashv8-armx.pl: optimize modulo-scheduled loop.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4830)

6 years agomodes/asm/ghashv8-armx.pl: modulo-schedule loop.
Andy Polyakov [Fri, 1 Dec 2017 12:13:25 +0000 (13:13 +0100)]
modes/asm/ghashv8-armx.pl: modulo-schedule loop.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4830)

6 years agomodes/asm/ghashv8-armx.pl: implement 4x aggregate factor.
Andy Polyakov [Fri, 1 Dec 2017 10:59:18 +0000 (11:59 +0100)]
modes/asm/ghashv8-armx.pl: implement 4x aggregate factor.

This initial commit is unoptimized reference version that handles
input lengths divisible by 4 blocks.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4830)

6 years agokey_A and key_B had 3 references, only 2 were freed.
Patrick Steuer [Mon, 4 Dec 2017 15:23:24 +0000 (10:23 -0500)]
key_A and key_B had 3 references, only 2 were freed.

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4837)

6 years agoapps/speed.c: use 32 byte key material as default
Patrick Steuer [Sun, 3 Dec 2017 13:28:40 +0000 (14:28 +0100)]
apps/speed.c: use 32 byte key material as default

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4834)

6 years agoapps/speed.c: add -seconds and -bytes options
Patrick Steuer [Sat, 2 Dec 2017 09:05:35 +0000 (10:05 +0100)]
apps/speed.c: add -seconds and -bytes options

Add speed tool options to run cipher, digest and rand benchmarks for a
single buffer size specified by -bytes over a time interval specified
by -seconds.

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4834)

6 years agoFix some formatting nits
Matt Caswell [Mon, 4 Dec 2017 13:37:01 +0000 (13:37 +0000)]
Fix some formatting nits

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoRemove spurious whitespace
Matt Caswell [Mon, 27 Nov 2017 11:41:26 +0000 (11:41 +0000)]
Remove spurious whitespace

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoUpdate an error reason code to be ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED
Matt Caswell [Mon, 27 Nov 2017 11:34:05 +0000 (11:34 +0000)]
Update an error reason code to be ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED

The most likely explanation for us ending up at this point in the code
is that we were called by the user application incorrectly - so use an
appropriate error code.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoFix the Boring tests following the SSLfatal() changes
Matt Caswell [Thu, 23 Nov 2017 14:35:19 +0000 (14:35 +0000)]
Fix the Boring tests following the SSLfatal() changes

An error reason code has changed for one of the boring tests, so
ossl_config.json needed an update to take account of it.

[extended tests]

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoAdd some more cleanups
Matt Caswell [Thu, 23 Nov 2017 13:11:42 +0000 (13:11 +0000)]
Add some more cleanups

Follow up from the conversion to use SSLfatal() in the state machine to
clean things up a bit more.

[extended tests]

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoAssert that SSLfatal() only gets called once
Matt Caswell [Thu, 23 Nov 2017 12:33:11 +0000 (12:33 +0000)]
Assert that SSLfatal() only gets called once

We shouldn't call SSLfatal() multiple times for the same error condition.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoAdd some sanity checks for the fatal error condition
Matt Caswell [Thu, 23 Nov 2017 12:10:54 +0000 (12:10 +0000)]
Add some sanity checks for the fatal error condition

Sometimes at the top level of the state machine code we know we are
supposed to be in a fatal error condition. This commit adds some sanity
checks to ensure that SSLfatal() has been called.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoFix up a few places in the state machine that got missed with SSLfatal()
Matt Caswell [Thu, 23 Nov 2017 11:41:40 +0000 (11:41 +0000)]
Fix up a few places in the state machine that got missed with SSLfatal()

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoConvert more functions in ssl/statem/statem_dtls.c to use SSLfatal()
Matt Caswell [Thu, 23 Nov 2017 11:19:34 +0000 (11:19 +0000)]
Convert more functions in ssl/statem/statem_dtls.c to use SSLfatal()

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoConvert more functions in ssl/statem/statem.c to use SSLfatal()
Matt Caswell [Thu, 23 Nov 2017 10:37:51 +0000 (10:37 +0000)]
Convert more functions in ssl/statem/statem.c to use SSLfatal()

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoConvert remaining functions in statem_srvr.c to use SSLfatal()
Matt Caswell [Wed, 22 Nov 2017 17:43:20 +0000 (17:43 +0000)]
Convert remaining functions in statem_srvr.c to use SSLfatal()

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoConvert remaining functions in statem_clnt.c to use SSLfatal()
Matt Caswell [Wed, 22 Nov 2017 17:18:39 +0000 (17:18 +0000)]
Convert remaining functions in statem_clnt.c to use SSLfatal()

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoConvert the state machine code to use SSLfatal()
Matt Caswell [Tue, 21 Nov 2017 17:18:43 +0000 (17:18 +0000)]
Convert the state machine code to use SSLfatal()

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoReplace some usage of SSLerr with SSLfatal()
Matt Caswell [Thu, 23 Nov 2017 16:25:05 +0000 (16:25 +0000)]
Replace some usage of SSLerr with SSLfatal()

This is an initial step towards using SSLfatal() everywhere. Initially in
this commit and in subsequent commits we focus on the state machine code.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoProvide an SSLfatal() macro
Matt Caswell [Thu, 23 Nov 2017 16:21:46 +0000 (16:21 +0000)]
Provide an SSLfatal() macro

Typically if a fatal error occurs three things need to happen:

- Put an error on the error queue
- Send an alert
- Put the state machine into the error state

Although all 3 of these things need to be done every time we hit a fatal
error the responsibilities for doing this are distributed throughout the
code. The place where the error goes on the queue, where the alert gets
sent and where the state machine goes into the error state are almost
invariably different. It has been a common pattern to pass alert codes up
and down the stack to get the alert information from the point in the code
where the error is detected to the point in the code where the alert gets
sent.

This commit provides an SSLfatal() macro (backed by an ossl_statem_fatal
function) that does all 3 of the above error tasks. This is largely a drop
in replacement for SSLerr, but takes a couple of extra parameters (the SSL
object, and an alert code).

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4778)

6 years agoAdjusted Argument Indices
Markus Sauermann [Sun, 3 Dec 2017 12:23:21 +0000 (13:23 +0100)]
Adjusted Argument Indices
CLA: trivial

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4835)

6 years agoMake possible variant SONAMEs and symbol versions
Viktor Dukhovni [Tue, 21 Nov 2017 02:30:04 +0000 (21:30 -0500)]
Make possible variant SONAMEs and symbol versions

This small change in the Unix template and shared library build
scripts enables building "variant" shared libraries.  A "variant"
shared library has a non-default SONAME, and non default symbol
versions.  This makes it possible to build (say) an OpenSSL 1.1.0
library that can coexist without conflict in the same process address
space as the system's default OpenSSL library which may be OpenSSL
1.0.2.

Such "variant" shared libraries make it possible to link applications
against a custom OpenSSL library installed in /opt/openssl/1.1 or
similar location, and not risk conflict with an indirectly loaded
OpenSSL runtime that is required by some other dependency.

Variant shared libraries have been fully tested under Linux, and
build successfully on MacOS/X producing variant DYLD names.  MacOS/X
Darwin has no symbol versioning, but has a non-flat library namespace.
Variant libraries may therefore support multiple OpenSSL libraries
in the same address space also with MacOS/X, despite lack of symbol
versions, but this has not been verified.

Variant shared libraries are optional and off by default.

Reviewed-by: Richard Levitte <levitte@openssl.org>
6 years agoAdd "friendly name" extractor
Rich Salz [Tue, 28 Nov 2017 19:53:33 +0000 (14:53 -0500)]
Add "friendly name" extractor

From a comment posted by GitHub user "geniuz"

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4812)

6 years agoAdd sk_new_reserve support
Todd Short [Wed, 4 Oct 2017 13:15:19 +0000 (09:15 -0400)]
Add sk_new_reserve support

This is a specific 1.1.1 change; do not squash if the chacha
prioritization code is to be backported

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4436)

6 years agoUse ChaCha only if prioritized by clnt
Todd Short [Mon, 21 Dec 2015 20:19:29 +0000 (15:19 -0500)]
Use ChaCha only if prioritized by clnt

IFF the client has ChaCha first, and server cipher priority is used,
and the new SSL_OP_PRIORITIZE_CHACHA_FOR_MOBILE option is used,
then reprioritize ChaCha above everything else. This way, A matching
ChaCha cipher will be selected if there is a match. If no ChaCha ciphers
match, then the other ciphers are used.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4436)

7 years agoA missing semicolon prevents compilation with ENGINE_REF_COUNT_DEBUG enabled.
Pauli [Tue, 28 Nov 2017 22:48:19 +0000 (08:48 +1000)]
A missing semicolon prevents compilation with ENGINE_REF_COUNT_DEBUG enabled.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4816)

7 years agoFix chacha-armv4.pl with clang -fno-integrated-as.
David Benjamin [Fri, 16 Jun 2017 01:22:21 +0000 (21:22 -0400)]
Fix chacha-armv4.pl with clang -fno-integrated-as.

The __clang__-guarded #defines cause gas to complain if clang is passed
-fno-integrated-as. Emitting .syntax unified when those are used fixes
this. This matches the change made to ghash-armv4.pl in
6cf412c473d8145562b76219ce3da73b201b3255.

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/3694)

7 years agorsa/rsa_gen.c: harmonize keygen's ability with RSA_security_bits.
Andy Polyakov [Fri, 24 Nov 2017 21:45:45 +0000 (22:45 +0100)]
rsa/rsa_gen.c: harmonize keygen's ability with RSA_security_bits.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4791)

7 years agorsa/rsa_lib.c: make RSA_security_bits multi-prime aware.
Andy Polyakov [Fri, 24 Nov 2017 20:31:11 +0000 (21:31 +0100)]
rsa/rsa_lib.c: make RSA_security_bits multi-prime aware.

Multi-prime RSA security is not determined by modulus length alone, but
depends even on number of primes. Too many primes render security
inadequate, but there is no common amount of primes or common factors'
length that provide equivalent secuity promise as two-prime for given
modulus length. Maximum amount of permitted primes is determined
according to following table.

   <1024 | >=1024 | >=4096 | >=8192
   ------+--------+--------+-------
     2   |   3    |   4    |   5

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4791)

7 years agoFix lshift tests
Matt Caswell [Tue, 28 Nov 2017 10:15:15 +0000 (10:15 +0000)]
Fix lshift tests

Commit 30bea14be6 converted bntest.c to the new TEST framework.
Unfortunately a missing "goto err" means that the lshift tests skip
the actual bit that tests them. Replacing the "goto err" reveals that
the conversion also broke the tests. This adds back the missing "goto err"
and fixes the tests.

Fixes #4808

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4809)

7 years agoFix docs for EVP_EncryptUpdate and EVP_DecryptUpdate
FdaSilvaYY [Wed, 22 Nov 2017 21:00:29 +0000 (22:00 +0100)]
Fix docs for EVP_EncryptUpdate and EVP_DecryptUpdate

Fixes #4775
[skip ci]

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4776)

7 years agoFix SSL_state_string() and SSL_state_string_long()
Matt Caswell [Mon, 27 Nov 2017 12:35:15 +0000 (12:35 +0000)]
Fix SSL_state_string() and SSL_state_string_long()

These functions needed updates for the various state machine states that
have been added for TLSv1.3.

Fixes #4795

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4801)

7 years agoTest support for time_t comparisons.
Pauli [Mon, 27 Nov 2017 03:27:35 +0000 (13:27 +1000)]
Test support for time_t comparisons.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4797)

7 years agouse size_t tests instead of int ones
Pauli [Mon, 27 Nov 2017 03:19:27 +0000 (13:19 +1000)]
use size_t tests instead of int ones

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4797)

7 years agoCheck for malloc failure
Rich Salz [Mon, 27 Nov 2017 19:11:36 +0000 (14:11 -0500)]
Check for malloc failure

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4805)

7 years agoFix SOURCE_DATE_EPOCH bug; use UTC
Rich Salz [Mon, 27 Nov 2017 19:28:15 +0000 (14:28 -0500)]
Fix SOURCE_DATE_EPOCH bug; use UTC

Thanks to Juro Bystricky for the suggestion and prototype.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4644)

7 years agochacha/asm/chacha-x86_64.pl: fix sporadic crash in AVX512 code path.
Andy Polyakov [Mon, 20 Nov 2017 16:07:51 +0000 (17:07 +0100)]
chacha/asm/chacha-x86_64.pl: fix sporadic crash in AVX512 code path.

Only chacha_internal_test is affected, since this path is not used
from EVP.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4758)

7 years agopoly1305/asm/poly1305-x86_64.pl: switch to pure AVX512F.
Andy Polyakov [Mon, 20 Nov 2017 09:24:14 +0000 (10:24 +0100)]
poly1305/asm/poly1305-x86_64.pl: switch to pure AVX512F.

Convert AVX512F+VL+BW code path to pure AVX512F, so that it can be
executed even on Knights Landing. Trigger for modification was
observation that AVX512 code paths can negatively affect overall
Skylake-X system performance. Since we are likely to suppress
AVX512F capability flag [at least on Skylake-X], conversion serves
as kind of "investment protection".

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4758)

7 years agoPretty-print large INTEGERs and ENUMERATEDs in hex.
David Benjamin [Fri, 24 Nov 2017 17:56:32 +0000 (12:56 -0500)]
Pretty-print large INTEGERs and ENUMERATEDs in hex.

This avoids taking quadratic time to pretty-print certificates with
excessively large integer fields. Very large integers aren't any more
readable in decimal than hexadecimal anyway, and the i2s_* functions
will parse either form.

Found by libFuzzer.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4790)

7 years agoCreate a prototype for OPENSSL_rdtsc
Kurt Roeckx [Sun, 19 Nov 2017 16:40:56 +0000 (17:40 +0100)]
Create a prototype for OPENSSL_rdtsc

Switch to make it return an uint32_t instead of the various different
types it returns now.

Fixes: #3125

Reviewed-by: Andy Polyakov <appro@openssl.org>
GH: #4757

7 years agoFix EVP_MD_meth_new.pod
Richard Levitte [Fri, 24 Nov 2017 15:38:37 +0000 (16:38 +0100)]
Fix EVP_MD_meth_new.pod

A name too many in the NAME section, and a copyright year update

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4789)

7 years agoCorrect EVP_CIPHER_meth_new.pod and EVP_MD_meth_new.pod
Richard Levitte [Fri, 24 Nov 2017 14:14:42 +0000 (15:14 +0100)]
Correct EVP_CIPHER_meth_new.pod and EVP_MD_meth_new.pod

One had some lines copied from the other, and both were missing a
proper RETURN VALUES section.

Fixes #4781

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4787)

7 years agorsa/rsa_gen.c: ensure backward compatibility with external rsa->meth.
Andy Polyakov [Tue, 21 Nov 2017 21:34:50 +0000 (22:34 +0100)]
rsa/rsa_gen.c: ensure backward compatibility with external rsa->meth.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4770)

7 years agocrypto/x86_64cpuid.pl: fix AVX512 capability masking.
Andy Polyakov [Wed, 22 Nov 2017 19:48:44 +0000 (20:48 +0100)]
crypto/x86_64cpuid.pl: fix AVX512 capability masking.

Originally it was thought that it's possible to use AVX512VL+BW
instructions with XMM and YMM registers without kernel enabling
ZMM support, but it turned to be wrong assumption.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoAdd SM3/SM4 to openssl command-line tool
Ronald Tse [Wed, 22 Nov 2017 07:23:48 +0000 (15:23 +0800)]
Add SM3/SM4 to openssl command-line tool

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4773)

7 years agoAvoid unnecessary MSYS2 conversion of some arguments
Richard Levitte [Tue, 21 Nov 2017 14:09:59 +0000 (15:09 +0100)]
Avoid unnecessary MSYS2 conversion of some arguments

Fixes #4740

The MSYS2 run-time convert arguments that look like paths when
executing a program unless that application is linked with the MSYS
run-time.  The exact conversion rules are listed here:

    http://www.mingw.org/wiki/Posix_path_conversion

With the built-in configurations (all having names starting with
"mingw"), the openssl application is not linked with the MSYS2
run-time, and therefore, it will receive possibly converted arguments
from the process that executes it.  This conversion is fine for normal
path arguments, but it happens that some arguments to the openssl
application get converted when they shouldn't.  In one case, it's
arguments like '-passin file:something', and in another, it's a file:
URI (what typically happens is that URIs without an authority
component get converted, 'cause the conversion mechanism doesn't
recognise them as URIs).

To avoid conversion where we don't want it, we simply assign
MSYS2_ARG_CONV_EXCL a pattern to avoid specific conversions.  As a
precaution, we only do this where we obviously need it.

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4765)

7 years agoIf a server is not acknowledging SNI then don't reject early_data
Matt Caswell [Tue, 14 Nov 2017 15:14:51 +0000 (15:14 +0000)]
If a server is not acknowledging SNI then don't reject early_data

SNI needs to be consistent before we accept early_data. However a
server may choose to not acknowledge SNI. In that case we have to
expect that a client may send it anyway. We change the consistency
checks so that not acknowledging is treated more a like a "wild card",
accepting any SNI as being consistent.

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4738)

7 years agoProvide a more information early_data message in s_server
Matt Caswell [Tue, 14 Nov 2017 14:21:13 +0000 (14:21 +0000)]
Provide a more information early_data message in s_server

s_server reported early_data not being sent and early_data being
rejected in the same way, i.e. "No early data received". This is
slightly misleading so this commit provides a different error message
if the early data is rejected.

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4738)

7 years agoAllow a client to send early_data with SNI if the session has no SNI
Matt Caswell [Tue, 14 Nov 2017 13:55:21 +0000 (13:55 +0000)]
Allow a client to send early_data with SNI if the session has no SNI

We can only send early_data if the SNI is consistent. However it is valid
for the client to set SNI and the server to not use it. This would still be
counted as consistent. OpenSSL client was being overzealous in this check
and disallowing this scenario.

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4738)

7 years agoIgnore the session when setting SNI in s_client
Matt Caswell [Tue, 14 Nov 2017 13:43:42 +0000 (13:43 +0000)]
Ignore the session when setting SNI in s_client

As per this comment:

https://github.com/openssl/openssl/issues/4496#issuecomment-337767145

Since the server is entitled to reject our session our ClientHello
should include everything that we would want if a full handshake were
to happen. Therefore we shouldn't use the session as a source of
information for setting SNI.

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4738)

7 years agoSupport multi-prime RSA (RFC 8017)
Paul Yang [Tue, 1 Aug 2017 18:19:43 +0000 (02:19 +0800)]
Support multi-prime RSA (RFC 8017)

* Introduce RSA_generate_multi_prime_key to generate multi-prime
  RSA private key. As well as the following functions:
    RSA_get_multi_prime_extra_count
    RSA_get0_multi_prime_factors
    RSA_get0_multi_prime_crt_params
    RSA_set0_multi_prime_params
    RSA_get_version
* Support EVP operations for multi-prime RSA
* Support ASN.1 operations for multi-prime RSA
* Support multi-prime check in RSA_check_key_ex
* Support multi-prime RSA in apps/genrsa and apps/speed
* Support multi-prime RSA manipulation functions
* Test cases and documentation are added
* CHANGES is updated

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/4241)

7 years agoSupport public key and param check in EVP interface
Paul Yang [Tue, 31 Oct 2017 16:45:24 +0000 (00:45 +0800)]
Support public key and param check in EVP interface

EVP_PKEY_public_check() and EVP_PKEY_param_check()

Doc and test cases are added

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4647)

7 years agoIron out /WX errors in VC-WIN32.
Andy Polyakov [Thu, 16 Nov 2017 21:45:05 +0000 (22:45 +0100)]
Iron out /WX errors in VC-WIN32.

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agobn/bn_exp.c: harmonize BN_mod_exp_mont_consttime with negative input.
Andy Polyakov [Sun, 5 Nov 2017 19:35:47 +0000 (20:35 +0100)]
bn/bn_exp.c: harmonize BN_mod_exp_mont_consttime with negative input.

All exponentiation subroutines but BN_mod_exp_mont_consttime produce
non-negative result for negative input, which is confusing for fuzzer.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/4676)

7 years agoFix AppVeyor/VC build failure
FdaSilvaYY [Wed, 15 Nov 2017 20:04:12 +0000 (21:04 +0100)]
Fix AppVeyor/VC build failure

..\test\asn1_internal_test.c(96): warning C4113: 'int (__cdecl *)()'
differs in parameter lists from 'int (__cdecl *)(void)'

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4744)

7 years agobn/bn_add.c: address performance regression.
Andy Polyakov [Wed, 15 Nov 2017 11:25:02 +0000 (12:25 +0100)]
bn/bn_add.c: address performance regression.

Performance regression was reported for EC key generation between
1.0.2 and 1.1.x [in GH#2891]. It naturally depends on platform,
values between 6 and 9% were observed.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4743)

7 years agoModify expected output of a CRL to match the changed printout
Richard Levitte [Thu, 16 Nov 2017 00:12:11 +0000 (01:12 +0100)]
Modify expected output of a CRL to match the changed printout

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4746)

7 years agoAdd padding spaces before printing signature algorithm for CRLs output
Richard Levitte [Thu, 16 Nov 2017 00:10:44 +0000 (01:10 +0100)]
Add padding spaces before printing signature algorithm for CRLs output

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4746)

7 years agoModify expected output of a certificate to match the changed printout
Richard Levitte [Thu, 16 Nov 2017 00:09:50 +0000 (01:09 +0100)]
Modify expected output of a certificate to match the changed printout

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4746)

7 years agoAdd padding spaces before printing algo.
Yutian Li [Tue, 30 Aug 2016 03:17:28 +0000 (11:17 +0800)]
Add padding spaces before printing algo.

CLA: trivial

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Rich Salz <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1513)

7 years agoRevert "Add padding spaces before printing algo."
Rich Salz [Wed, 15 Nov 2017 23:26:22 +0000 (18:26 -0500)]
Revert "Add padding spaces before printing algo."

Some test files need to be updated.
This reverts commit 26a374a271dabd49f3fa7f43a74e05d34aca010e.

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4745)

7 years agoAdd padding spaces before printing algo.
Yutian Li [Tue, 30 Aug 2016 03:17:28 +0000 (11:17 +0800)]
Add padding spaces before printing algo.

CLA: trivial

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Rich Salz <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1513)

7 years agoFactorise duplicated code.
FdaSilvaYY [Tue, 7 Nov 2017 10:50:30 +0000 (11:50 +0100)]
Factorise duplicated code.

Extract and factorise duplicated string glue code.
Cache strlen result to avoid duplicate calls.
[extended tests]

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4719)

7 years agoremove magic number
FdaSilvaYY [Mon, 6 Nov 2017 17:32:33 +0000 (18:32 +0100)]
remove magic number

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4719)

7 years agoARMv8 assembly pack: add Qualcomm Kryo results.
Andy Polyakov [Sat, 11 Nov 2017 22:49:16 +0000 (23:49 +0100)]
ARMv8 assembly pack: add Qualcomm Kryo results.

[skip ci]

Reviewed-by: Tim Hudson <tjh@openssl.org>
7 years agoConfigurations/10-main.conf: add back /WX to VC-WIN32.
Andy Polyakov [Sat, 11 Nov 2017 21:24:12 +0000 (22:24 +0100)]
Configurations/10-main.conf: add back /WX to VC-WIN32.

We had /WX (treat warnings as errors) in VC-WIN32 for long time. At
some point it was somehow omitted. It's argued that it allows to
keep better focus on new code, which motivates the comeback...

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4721)