openssl.git
19 months agospeed: add ecdhx448 to ecdh choices
Steven Noonan [Fri, 9 Mar 2018 12:15:20 +0000 (07:15 -0500)]
speed: add ecdhx448 to ecdh choices

CLA: trivial
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5551)

19 months agoFixed a spelling mistake in ASN1_TIME_set.pod
Alex Gaynor [Fri, 9 Mar 2018 12:11:13 +0000 (07:11 -0500)]
Fixed a spelling mistake in ASN1_TIME_set.pod

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

19 months agoGive more information in the SSL_stateless return code
Matt Caswell [Thu, 8 Mar 2018 17:44:12 +0000 (17:44 +0000)]
Give more information in the SSL_stateless return code

Allow users to distinguish between an error occurring and an HRR being
issued.

Fixes #5549

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

19 months agoTest the new PSK behaviour
Matt Caswell [Thu, 8 Mar 2018 13:45:22 +0000 (13:45 +0000)]
Test the new PSK behaviour

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

19 months agoUpdate documentation for the new PSK behaviour
Matt Caswell [Thu, 8 Mar 2018 08:20:23 +0000 (08:20 +0000)]
Update documentation for the new PSK behaviour

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

19 months agoFallback on old style PSK callbacks if the new style ones aren't present
Matt Caswell [Tue, 6 Mar 2018 16:41:51 +0000 (16:41 +0000)]
Fallback on old style PSK callbacks if the new style ones aren't present

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

19 months agoTolerate TLSv1.3 PSKs that are a different size to the hash size
Matt Caswell [Tue, 6 Mar 2018 14:12:10 +0000 (14:12 +0000)]
Tolerate TLSv1.3 PSKs that are a different size to the hash size

We also default to SHA256 as per the spec if we do not have an explicit
digest defined.

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

19 months agoMake OCSP "multi" compatible with "no-sock" builds.
Viktor Dukhovni [Thu, 8 Mar 2018 15:51:46 +0000 (10:51 -0500)]
Make OCSP "multi" compatible with "no-sock" builds.

Reviewed-by: Matt Caswell <matt@openssl.org>
19 months agoRemove useless -D_ENDIAN from MPE/iX-gcc config
Richard Levitte [Thu, 8 Mar 2018 21:03:01 +0000 (22:03 +0100)]
Remove useless -D_ENDIAN from MPE/iX-gcc config

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

19 months agoReduce travis-ci log output
Michael Richardson [Tue, 6 Mar 2018 19:18:43 +0000 (14:18 -0500)]
Reduce travis-ci log output

Travis-ci log output is huge and overflows internal travis-ci view,
which makes it hard to find errors.
Redirect some output to a file and dump it only if it fails.
Remove "v" option from tar that builds and extracts the srcdist.
While running the tests manually, some non-POSIX (bashisms) with ==
vs = came to light.

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

19 months agoConfigure: correct the check of env vars vs command line flags
Richard Levitte [Thu, 8 Mar 2018 17:49:37 +0000 (18:49 +0100)]
Configure: correct the check of env vars vs command line flags

The check to detect if env / make variables conflicted with compiler /
linker flags on the configure command line went a little too far, and
would stop the configuration process if any such command line flag was
given, with no regard for the env / make variables at all.

This change refines the check so the stop only gets triggered if any
such flags were given AND any of the corresponding variables are set.

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

19 months agoMake a few more asm modules conform: last argument is output file
Richard Levitte [Sat, 10 Feb 2018 07:47:51 +0000 (08:47 +0100)]
Make a few more asm modules conform: last argument is output file

Fixes #5310

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

19 months agoConfigure: disallow the mixture of compiling flags and env / make variables
Richard Levitte [Thu, 8 Mar 2018 13:16:18 +0000 (14:16 +0100)]
Configure: disallow the mixture of compiling flags and env / make variables

Note that this might give surprising results if someone forgets an environment
variable that has been set previously.

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

19 months agoConfigurations/README: update documentation on flags
Richard Levitte [Wed, 7 Mar 2018 23:17:29 +0000 (00:17 +0100)]
Configurations/README: update documentation on flags

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

19 months agoConfigure et al: get rid of last traces of plib_lflags / PLIB_LDFLAGS
Richard Levitte [Wed, 7 Mar 2018 23:16:47 +0000 (00:16 +0100)]
Configure et al: get rid of last traces of plib_lflags / PLIB_LDFLAGS

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

19 months agoconfig: Pass diverse flags to Configure via the environment
Richard Levitte [Wed, 7 Mar 2018 21:44:59 +0000 (22:44 +0100)]
config: Pass diverse flags to Configure via the environment

Passing flags "discovered" by 'config' on the command line to
'Configure' mixes them up with flags given by the user.  That is
contrary to their intention, so they need to be passed in a different
manner.

Enter the environment variables __CNF_CPPDEFINES, __CNF_CPPINCLUDES,
__CNF_CPPFLAGS, __CNF_CFLAGS, __CNF_CXXFLAGS, __CNF_LDFLAGS, and
__CNF_LDLIBS, initialised by 'config', and then used by Configure to
initialise these %config values: defines, includes, cppflags, cflags,
cxxflags, lflags, and ex_libs.

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

19 months agoConfigurations/10-main.conf: Duplicate cflags to cxxflags
Richard Levitte [Wed, 7 Mar 2018 12:29:41 +0000 (13:29 +0100)]
Configurations/10-main.conf: Duplicate cflags to cxxflags

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

19 months agoAdd space to asoutflag value where appropriate
Richard Levitte [Wed, 7 Mar 2018 12:29:04 +0000 (13:29 +0100)]
Add space to asoutflag value where appropriate

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

19 months agoMake "make variables" config attributes for overridable flags
Richard Levitte [Tue, 6 Mar 2018 19:35:30 +0000 (20:35 +0100)]
Make "make variables" config attributes for overridable flags

With the support of "make variables" comes the possibility for the
user to override them.  However, we need to make a difference between
defaults that we use (and that should be overridable by the user) and
flags that are crucial for building OpenSSL (should not be
overridable).

Typically, overridable flags are those setting optimization levels,
warnings levels, that kind of thing, while non-overridable flags are,
for example, macros that indicate aspects of how the config target
should be treated, such as L_ENDIAN and B_ENDIAN.

We do that differentiation by allowing upper case attributes in the
config targets, named exactly like the "make variables" we support,
and reserving the lower case attributes for non-overridable project
flags.

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

19 months agoConfigure et al: rename all dso_* to module_* in shared-info.pl
Richard Levitte [Wed, 7 Mar 2018 19:31:15 +0000 (20:31 +0100)]
Configure et al: rename all dso_* to module_* in shared-info.pl

Because there are already attributes with the dso_ prefix that are
used instead of the corresponding lib_ attributes rather than in
addition to them, it gets confusing to have similar or exactly the
same attributes working with different semantics on Unix.

So we rename those by changing the prefix dso_ to module_, and having
those work just like the shared_ attributes, but for DSOs.

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

19 months agoDuplicate entries ssl_handshake_tbl trace entries...
FdaSilvaYY [Thu, 8 Mar 2018 15:32:34 +0000 (10:32 -0500)]
Duplicate entries ssl_handshake_tbl trace entries...

... and add some missing known values.
Sort ssl/tls extension array list

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

19 months agoFix issues in ia32 RDRAND asm leading to reduced entropy
Bryan Donlan [Wed, 7 Mar 2018 21:01:06 +0000 (16:01 -0500)]
Fix issues in ia32 RDRAND asm leading to reduced entropy

This patch fixes two issues in the ia32 RDRAND assembly code that result in a
(possibly significant) loss of entropy.

The first, less significant, issue is that, by returning success as 0 from
OPENSSL_ia32_rdrand() and OPENSSL_ia32_rdseed(), a subtle bias was introduced.
Specifically, because the assembly routine copied the remaining number of
retries over the result when RDRAND/RDSEED returned 'successful but zero', a
bias towards values 1-8 (primarily 8) was introduced.

The second, more worrying issue was that, due to a mixup in registers, when a
buffer that was not size 0 or 1 mod 8 was passed to OPENSSL_ia32_rdrand_bytes
or OPENSSL_ia32_rdseed_bytes, the last (n mod 8) bytes were all the same value.
This issue impacts only the 64-bit variant of the assembly.

This change fixes both issues by first eliminating the only use of
OPENSSL_ia32_rdrand, replacing it with OPENSSL_ia32_rdrand_bytes, and fixes the
register mixup in OPENSSL_ia32_rdrand_bytes. It also adds a sanity test for
OPENSSL_ia32_rdrand_bytes and OPENSSL_ia32_rdseed_bytes to help catch problems
of this nature in the future.

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

19 months agoFixed several readability issues in DH_generate_parameters.pod
Alex Gaynor [Thu, 8 Mar 2018 12:59:50 +0000 (07:59 -0500)]
Fixed several readability issues in DH_generate_parameters.pod

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5553)

19 months agoCorrected two typos in a man page
Alex Gaynor [Wed, 7 Mar 2018 19:01:05 +0000 (14:01 -0500)]
Corrected two typos in a man page

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

19 months agoAdd GOST OIDs for Edwards parameter sets
Sergey Zhuravlev [Wed, 7 Mar 2018 17:58:38 +0000 (12:58 -0500)]
Add GOST OIDs for Edwards parameter sets

Add OIDs for parameter sets of Edwards elliptic curves.

CLA: trivial

Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5380)

19 months agoRemove OPENSSL_USE_NODELETE guards in shlibloadtest
Matt Caswell [Tue, 6 Mar 2018 10:41:47 +0000 (10:41 +0000)]
Remove OPENSSL_USE_NODELETE guards in shlibloadtest

PR #3399 converted shlibloadtest to the new test framework. It also
seemed to add some `OPENSSL_USE_NODELETE` guards to the library
unloading part of the test. This part was added in a commit with this
description:

    Review feedback; use single main, #ifdef ADD_TEST

    Suppose OPENSSL_USE_NODELETE (via Nick Reilly)

Strangely though there doesn't seem to be any relevant review feedback
in that PR that could justify the addition of those guards. The guards
do not appear in 1.1.0.

Having the guards changes the nature of the test, so that we only test
library unloading on platforms where OPENSSL_USE_NODELETE is set (Linux
and Windows). I can't think of any good reason for this and as it doesn't
seem to be necessary in 1.1.0 so I think we should remove them.

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

19 months agoImplement multi-process OCSP responder.
Viktor Dukhovni [Mon, 5 Mar 2018 20:18:04 +0000 (15:18 -0500)]
Implement multi-process OCSP responder.

With "-multi" the OCSP responder forks multiple child processes,
and respawns them as needed.  This can be used as a long-running
service, not just a demo program.  Therefore the index file is
automatically re-read when changed.  The responder also now optionally
times out client requests.

Reviewed-by: Matt Caswell <matt@openssl.org>
19 months agoPrepare to detect index changes in OCSP responder.
Viktor Dukhovni [Mon, 5 Mar 2018 19:40:02 +0000 (14:40 -0500)]
Prepare to detect index changes in OCSP responder.

Retain open file handle and previous stat data for the CA index
file, enabling detection and index reload (upcoming commit).

Check requirements before entering accept loop.

Reviewed-by: Matt Caswell <matt@openssl.org>
19 months agoConfigurations/unix-Makefile.tmpl: remove assignment of AS and ASFLAGS
Richard Levitte [Wed, 7 Mar 2018 13:52:47 +0000 (14:52 +0100)]
Configurations/unix-Makefile.tmpl: remove assignment of AS and ASFLAGS

We have never used these variables with the Unix Makefile, and there's
no reason for us to change this, so to avoid confusion, we remove them.

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

19 months agoBIO_s_mem.pod: fix indirection for out parameter **pp
Dr. Matthias St. Pierre [Wed, 7 Mar 2018 13:37:23 +0000 (14:37 +0100)]
BIO_s_mem.pod: fix indirection for out parameter **pp

BIO_get_mem_data() and BIO_get_mem_ptr() assign to *pp, not pp

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

19 months agocrypto/armcap.c: mask SHA512 hardware detection on iOS.
Andy Polyakov [Mon, 5 Mar 2018 16:10:03 +0000 (17:10 +0100)]
crypto/armcap.c: mask SHA512 hardware detection on iOS.

When running iOS application from command line it's impossible to
get past the failing capability detection. This is because it's
executed under debugger and iOS debugger is impossible to deal with.
[If Apple implements SHA512 in silicon, it would have to be detected
with sysctlbyname.]

Reviewed-by: Rich Salz <rsalz@openssl.org>
19 months agoConfigurations/10-main.conf: add -fno-common back to darwin-ppc-cc.
Andy Polyakov [Mon, 5 Mar 2018 15:55:48 +0000 (16:55 +0100)]
Configurations/10-main.conf: add -fno-common back to darwin-ppc-cc.

-fno-common was removed for all Darwin targets in
0c8734198d4282f6997965a03cd2e0ceaf207549 with rationale "it's either
'ranlib -c' or '-fno-common'." However, it's still absolutely required
in 32-bit darwin-ppc-cc. And when trying things out I didn't quite
see why it was formulated as one-or-another choice, as 'ranlib -c'
shouldn't [and doesn't] have problems with object modules without
commons. [Well, to be frank, I didn't manage to reproduce the problem
the modification was meaning to resolve either...]

Reviewed-by: Rich Salz <rsalz@openssl.org>
19 months agoutil/dofile.pl: only quote stuff that actually needs quoting
Richard Levitte [Tue, 6 Mar 2018 20:05:16 +0000 (21:05 +0100)]
util/dofile.pl: only quote stuff that actually needs quoting

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

19 months agoopensslconf.h.in: Use all the "openssl_api_defines"
Richard Levitte [Tue, 6 Mar 2018 20:04:11 +0000 (21:04 +0100)]
opensslconf.h.in: Use all the "openssl_api_defines"

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

19 months agoConfigure: fix small spelling error
Richard Levitte [Tue, 6 Mar 2018 20:03:21 +0000 (21:03 +0100)]
Configure: fix small spelling error

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

19 months agoAvoid unconditional store in CRYPTO_malloc.
knekritz [Tue, 6 Mar 2018 18:21:49 +0000 (13:21 -0500)]
Avoid unconditional store in CRYPTO_malloc.

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

19 months agoFix a typo in the s_client man page
Alex Gaynor [Tue, 6 Mar 2018 18:07:33 +0000 (13:07 -0500)]
Fix a typo in the s_client man page

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5525)

19 months agoFix a bunch of gcc warnings in packettest.c
Bernd Edlinger [Mon, 5 Mar 2018 18:27:47 +0000 (19:27 +0100)]
Fix a bunch of gcc warnings in packettest.c

Had been observed with recent gcc-8 snapshot and
$ ./config --strict-warnings enable-asan

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

19 months agoCheck the parent DRBG's strength
Kurt Roeckx [Sun, 4 Mar 2018 12:23:05 +0000 (13:23 +0100)]
Check the parent DRBG's strength

We currently don't support the algorithm from NIST SP 800-90C
10.1.2 to use a weaker DRBG as source

Reviewed-by: Dr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
GH: #5506

19 months agobnrand_range: Always call bnrand() with the correct flag
Kurt Roeckx [Sun, 4 Mar 2018 23:29:21 +0000 (00:29 +0100)]
bnrand_range: Always call bnrand() with the correct flag

It was calling the BN_rand() when it should have call BN_priv_rand()

Reviewed-by: Tim Hudson <tjh@openssl.org>
GH: #5514

19 months agoAdd support for .include directive in config files
Tomas Mraz [Tue, 27 Feb 2018 12:55:35 +0000 (13:55 +0100)]
Add support for .include directive in config files

Either files or directories of *.cnf or *.conf files
can be included.
Recursive inclusion of directories is not supported.

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

19 months agoIf not sending key_share (no TLSv1.3), return appropriately.
Todd Short [Fri, 2 Mar 2018 14:36:28 +0000 (09:36 -0500)]
If not sending key_share (no TLSv1.3), return appropriately.

This fixes an issue raised in PR #4964 by kaduk.

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5491)

19 months agoFix status_request and SCT extensions
Matt Caswell [Fri, 2 Mar 2018 15:02:11 +0000 (15:02 +0000)]
Fix status_request and SCT extensions

They are valid for use in a CertificateRequest message, but we did not
allow it. If a server sent such a message using either of those two
extensions then the handshake would abort.

This corrects that error, but does not add support for actually processing
the extensions. They are simply ignored, and a TODO is inserted to add
support at a later time.

This was found during interoperability testing with btls:
https://gitlab.com/ilari_l/btls

Prompted by these errors I reviewed the complete list of extensions and
compared them with the latest table in draft-24 to confirm there were no
other errors of a similar type. I did not find any.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/5490)

19 months agoUpdate CHANGES for X448/Ed448 support in libssl
Matt Caswell [Tue, 27 Feb 2018 17:40:15 +0000 (17:40 +0000)]
Update CHANGES for X448/Ed448 support in libssl

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5470)

19 months agoUpdate tests for TLS Ed448
Matt Caswell [Tue, 27 Feb 2018 13:02:00 +0000 (13:02 +0000)]
Update tests for TLS Ed448

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5470)

19 months agoAdd X448/Ed448 support to libssl
Matt Caswell [Tue, 27 Feb 2018 10:12:02 +0000 (10:12 +0000)]
Add X448/Ed448 support to libssl

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5470)

19 months agoFixed a typo in a man page
Alex Gaynor [Sun, 4 Mar 2018 23:57:24 +0000 (18:57 -0500)]
Fixed a typo in a man page

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

19 months agoFix credit for SRP code
Rich Salz [Sun, 4 Mar 2018 23:51:57 +0000 (18:51 -0500)]
Fix credit for SRP code

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

19 months agoWindows makefile: Don't quote generator arguments
Richard Levitte [Sat, 3 Mar 2018 22:07:14 +0000 (23:07 +0100)]
Windows makefile: Don't quote generator arguments

Rely on the build.info constructor to do the right thing.

Fixes #5500

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

19 months agotest/ctype_internal_test.c: portability fixup.
Andy Polyakov [Fri, 2 Mar 2018 15:50:41 +0000 (16:50 +0100)]
test/ctype_internal_test.c: portability fixup.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/5493)

19 months agomem_sec.c: portability fixup.
Andy Polyakov [Fri, 2 Mar 2018 15:50:11 +0000 (16:50 +0100)]
mem_sec.c: portability fixup.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/5493)

19 months agoec/curve448/f_generic.c: fix VC-WIN32 debug build failure.
Andy Polyakov [Fri, 2 Mar 2018 21:16:29 +0000 (22:16 +0100)]
ec/curve448/f_generic.c: fix VC-WIN32 debug build failure.

Debugging asserts had implicit casts that triggered the warnings.
However, instead of making the casts explicit it's more appropriate
to perform checks that ensure that implicit casts were safe.

ec/curve448/scalar.c: size_t-fy scalar_decode_short.

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

19 months agoec/curve448/curve448.c: fix undefined behaviour sanitizer failure.
Andy Polyakov [Fri, 2 Mar 2018 16:25:31 +0000 (17:25 +0100)]
ec/curve448/curve448.c: fix undefined behaviour sanitizer failure.

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

19 months agoFix a possible memory leak in engine_table_register
Bernd Edlinger [Fri, 2 Mar 2018 08:27:39 +0000 (09:27 +0100)]
Fix a possible memory leak in engine_table_register

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

19 months agoFixed a typo in a man page
Alex Gaynor [Sat, 3 Mar 2018 16:37:07 +0000 (11:37 -0500)]
Fixed a typo in a man page

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5498)

19 months agoUpdate CHANGES for X448 and Ed448
Matt Caswell [Tue, 20 Feb 2018 15:27:15 +0000 (15:27 +0000)]
Update CHANGES for X448 and Ed448

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5481)

19 months agoAdd test vectors for X448 and Ed448
Matt Caswell [Fri, 1 Dec 2017 17:59:23 +0000 (17:59 +0000)]
Add test vectors for X448 and Ed448

This adds the Ed448 test vectors from RFC8032 and the X448 test vectors
from RFC7748.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5481)

19 months agoUpdate some documentation for X448/Ed448
Matt Caswell [Tue, 27 Feb 2018 17:28:48 +0000 (17:28 +0000)]
Update some documentation for X448/Ed448

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5481)

19 months agoIntegrate X448 and Ed448 into libcrypto
Matt Caswell [Wed, 28 Feb 2018 14:59:44 +0000 (14:59 +0000)]
Integrate X448 and Ed448 into libcrypto

This adds all of the relevant EVP plumbing required to make
X448 and Ed448 work.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5481)

19 months agoAdd pkey types for curve448
Matt Caswell [Tue, 28 Nov 2017 16:27:07 +0000 (16:27 +0000)]
Add pkey types for curve448

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/5481)

19 months agoFix typo in ASN1_STRING_length doc
Ivan Filenko [Sun, 25 Feb 2018 13:49:27 +0000 (16:49 +0300)]
Fix typo in ASN1_STRING_length doc

CLA: trivial

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5458)

19 months agoTest the result of CMS_RecipientInfo_ktri_get0_algs() before using its output in...
Brad Spencer [Wed, 20 Dec 2017 17:41:14 +0000 (13:41 -0400)]
Test the result of CMS_RecipientInfo_ktri_get0_algs() before using its output in rsa_cms_encrypt().

CLA: trivial

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4966)

19 months agoec/asm/x25519-x86_64.pl: remove redundant carry chain.
Andy Polyakov [Tue, 27 Feb 2018 18:02:21 +0000 (19:02 +0100)]
ec/asm/x25519-x86_64.pl: remove redundant carry chain.

Why is it redundant? We're looking at carry from addition of small,
11-bit number to 256-bit one. And carry would mean only one thing,
resulting first limb being small number and remaing ones - zeros.
Hence adding 38 to first limb can't carry.

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

19 months agoDo not set a nonzero default max_early_data
Benjamin Kaduk [Wed, 28 Feb 2018 20:49:59 +0000 (14:49 -0600)]
Do not set a nonzero default max_early_data

When early data support was first added, this seemed like a good
idea, as it would allow applications to just add SSL_read_early_data()
calls as needed and have things "Just Work".  However, for applications
that do not use TLS 1.3 early data, there is a negative side effect.
Having a nonzero max_early_data in a SSL_CTX (and thus, SSL objects
derived from it) means that when generating a session ticket,
tls_construct_stoc_early_data() will indicate to the client that
the server supports early data.  This is true, in that the implementation
of TLS 1.3 (i.e., OpenSSL) does support early data, but does not
necessarily indicate that the server application supports early data,
when the default value is nonzero.  In this case a well-intentioned
client would send early data along with its resumption attempt, which
would then be ignored by the server application, a waste of network
bandwidth.

Since, in order to successfully use TLS 1.3 early data, the application
must introduce calls to SSL_read_early_data(), it is not much additional
burden to require that the application also calls
SSL_{CTX_,}set_max_early_data() in order to enable the feature; doing
so closes this scenario where early data packets would be sent on
the wire but ignored.

Update SSL_read_early_data.pod accordingly, and make s_server and
our test programs into applications that are compliant with the new
requirements on applications that use early data.

Fixes #4725

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

19 months agoTell the ciphers which DRBG to use for generating random bytes.
Kurt Roeckx [Sun, 5 Nov 2017 13:37:15 +0000 (14:37 +0100)]
Tell the ciphers which DRBG to use for generating random bytes.

Reviewed-by: Richard Levitte <levitte@openssl.org>
GH: #4672

19 months agoFixed typo in description of EVP_CIPHER_meth_set_iv_length().
David Makepeace [Wed, 28 Feb 2018 06:30:32 +0000 (16:30 +1000)]
Fixed typo in description of EVP_CIPHER_meth_set_iv_length().

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/5477)

19 months agoAdapt 15-test_out_option.t for more than just Unix
Richard Levitte [Thu, 22 Feb 2018 22:39:01 +0000 (23:39 +0100)]
Adapt 15-test_out_option.t for more than just Unix

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

19 months agoEnable the -out option test on VMS as well
Richard Levitte [Thu, 22 Feb 2018 21:22:29 +0000 (22:22 +0100)]
Enable the -out option test on VMS as well

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

19 months agoCheck on VMS as well
Richard Levitte [Mon, 29 Jan 2018 07:58:26 +0000 (08:58 +0100)]
Check on VMS as well

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

19 months agoAdd VMS version of app_dirname()
Richard Levitte [Mon, 24 Jul 2017 21:32:00 +0000 (23:32 +0200)]
Add VMS version of app_dirname()

Related to #3709

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

19 months agoFix the type of -out option
Paul Yang [Tue, 27 Feb 2018 02:47:16 +0000 (10:47 +0800)]
Fix the type of -out option

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

19 months agoAdd test cases for this -out option check
Paul Yang [Tue, 13 Feb 2018 12:15:34 +0000 (20:15 +0800)]
Add test cases for this -out option check

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

19 months agoCheck directory is able to create files for various -out option
Paul Yang [Wed, 21 Jun 2017 15:02:12 +0000 (23:02 +0800)]
Check directory is able to create files for various -out option

This is to address issue #3404, only works in Unix-like platforms

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

19 months agostoreutl: make sure s2i_ASN1_INTEGER is correctly declared
Richard Levitte [Wed, 28 Feb 2018 17:08:51 +0000 (18:08 +0100)]
storeutl: make sure s2i_ASN1_INTEGER is correctly declared

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

19 months agoAlways use adr with __thumb2__.
David Benjamin [Wed, 21 Feb 2018 23:50:21 +0000 (18:50 -0500)]
Always use adr with __thumb2__.

Thumb2 addresses are a bit a mess, depending on whether a label is
interpreted as a function pointer value (for use with BX and BLX) or as
a program counter value (for use with PC-relative addressing). Clang's
integrated assembler mis-assembles this code. See
https://crbug.com/124610#c54 for details.

Instead, use the ADR pseudo-instruction which has clear semantics and
should be supported by every assembler that handles the OpenSSL Thumb2
code. (In other files, the ADR vs SUB conditionals are based on
__thumb2__ already. For some reason, this one is based on __APPLE__, I'm
guessing to deal with an older version of clang assembler.)

It's unclear to me which of clang or binutils is "correct" or if this is
even a well-defined notion beyond "whatever binutils does". But I will
note that https://github.com/openssl/openssl/pull/4669 suggests binutils
has also changed behavior around this before.

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

19 months agoFix documentation link to reference man3
xemdetia [Tue, 27 Feb 2018 20:29:32 +0000 (15:29 -0500)]
Fix documentation link to reference man3

CLA: trivial

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5473)

19 months agoMake some perl scripts output to stdout
Rich Salz [Tue, 27 Feb 2018 20:14:18 +0000 (15:14 -0500)]
Make some perl scripts output to stdout

And only generate one output "file" at a time for objects.pl

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

19 months agocrypto/ec/asm/x25519-x86_64.pl: close STDOUT, not $STDOUT
Richard Levitte [Tue, 27 Feb 2018 20:02:31 +0000 (21:02 +0100)]
crypto/ec/asm/x25519-x86_64.pl: close STDOUT, not $STDOUT

Fixes #5471

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

19 months agoconfigdata.pm: ensure $prefix is defined
Richard Levitte [Tue, 27 Feb 2018 20:01:59 +0000 (21:01 +0100)]
configdata.pm: ensure $prefix is defined

Fixes #5471

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

19 months agobio_b64.c: prevent base64 filter BIO from decoding out-of-bound data
Dr. Matthias St. Pierre [Wed, 21 Feb 2018 00:45:14 +0000 (01:45 +0100)]
bio_b64.c: prevent base64 filter BIO from decoding out-of-bound data

Fixes #5405, #1381

The base64 filter BIO reads its input in chunks of B64_BLOCK_SIZE bytes.
When processing input in PEM format it can happen in rare cases that

- the trailing PEM marker crosses the boundary of a chunk, and
- the beginning of the following chunk contains valid base64 encoded data.

This happened in issue #5405, where the PEM marker was split into
"-----END CER" and "TIFICATE-----" at the end of the first chunk.

The decoding of the first chunk terminated correctly at the '-' character,
which is treated as an EOF marker, and b64_read() returned. However,
when called the second time, b64_read() read the next chunk and interpreted
the string "TIFICATE" as valid base64 encoded data, adding 6 extra bytes
'4c 81 48 08 04 c4'.

This patch restores the assignment of the error code to 'ctx->cont', which
was deleted accidentally in commit 5562cfaca4f3 and which prevents b64_read()
from reading additional data on subsequent calls.

This issue was observed and reported by Annie Yousar.

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

19 months agoPrepare for 1.1.1-pre3-dev
Matt Caswell [Tue, 27 Feb 2018 13:41:51 +0000 (13:41 +0000)]
Prepare for 1.1.1-pre3-dev

Reviewed-by: Richard Levitte <levitte@openssl.org>
19 months agoPrepare for 1.1.1-pre2 release OpenSSL_1_1_1-pre2
Matt Caswell [Tue, 27 Feb 2018 13:40:37 +0000 (13:40 +0000)]
Prepare for 1.1.1-pre2 release

Reviewed-by: Richard Levitte <levitte@openssl.org>
19 months agoUpdate copyright year
Matt Caswell [Tue, 27 Feb 2018 13:37:28 +0000 (13:37 +0000)]
Update copyright year

Reviewed-by: Richard Levitte <levitte@openssl.org>
19 months agoClear some sslapitest global variables after use
Matt Caswell [Mon, 26 Feb 2018 19:34:42 +0000 (19:34 +0000)]
Clear some sslapitest global variables after use

Otherwise we get a use after free if the test order is randomised.

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

19 months agomem_sec.c: relax POSIX requirement.
Andy Polyakov [Sun, 25 Feb 2018 15:56:26 +0000 (16:56 +0100)]
mem_sec.c: relax POSIX requirement.

Even though mlock(2) was standardized in POSIX.1-2001, vendors did
implement it prior that point.

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

19 months agotest/ct_test.c: remove dependency on -lm.
Andy Polyakov [Sun, 25 Feb 2018 15:24:34 +0000 (16:24 +0100)]
test/ct_test.c: remove dependency on -lm.

fabs(3m) is customarily inlined, but it's not, one has to link with -lm.
Since fabs(3m) is the only reference, it makes more sense to avoid it.

Reviewed-by: Rich Salz <rsalz@openssl.org>
19 months agoExport keying material using early exporter master secret
Tatsuhiro Tsujikawa [Sun, 4 Feb 2018 03:20:37 +0000 (12:20 +0900)]
Export keying material using early exporter master secret

This commit adds SSL_export_keying_material_early() which exports
keying material using early exporter master secret.

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

19 months agoMake it possible to give --libdir an absolute path
Richard Levitte [Fri, 23 Feb 2018 11:10:42 +0000 (12:10 +0100)]
Make it possible to give --libdir an absolute path

With this, we introduce the make variable 'libdir', which differs from
'LIBDIR' not only in casing, but also by being the absolute path to
the library installation directory.  This variable is intentionally
compatible with the GNU coding standards.

When --libdir is given an absolute path, it is considered as a value
according to GNU coding standards, and the variables LIBDIR and libdir
will be this:

    LIBDIR=
    libdir=/absolute/path

When --libdir is given a relative path (just the name of the desired
library directory), or not given at all, it is considered as a
"traditional" OpenSSL value, and the variables LIBDIR and libdir will
be this:

    LIBDIR=relativepath
    libdir=$(INSTALLTOP)/$(LIBDIR)

Fixes #5398

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

19 months agoappveyor.yml: omit makedepend step.
Andy Polyakov [Fri, 23 Feb 2018 16:24:41 +0000 (17:24 +0100)]
appveyor.yml: omit makedepend step.

makedepend makes lesser sense in a throw-away build like CI, but
it spares some computational time, because with MSVC it takes
separate per-file compiler invocation.

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

19 months agoec/ecp_nistp{224,256,521}.c: harmonize usage of __uint128_t.
Andy Polyakov [Fri, 23 Feb 2018 12:55:37 +0000 (13:55 +0100)]
ec/ecp_nistp{224,256,521}.c: harmonize usage of __uint128_t.

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

19 months ago{ec/curve25519,poly1305/poly1305}.c: relax pedantic constraint.
Andy Polyakov [Fri, 23 Feb 2018 12:37:06 +0000 (13:37 +0100)]
{ec/curve25519,poly1305/poly1305}.c: relax pedantic constraint.

As it turns out gcc -pedantic doesn't seem to consider __uint128_t
as non-standard, unlike __int128 that is.

Fix even MSVC warnings in curve25519.c.

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

19 months agoec/curve448: portability fixups.
Andy Polyakov [Fri, 23 Feb 2018 12:20:33 +0000 (13:20 +0100)]
ec/curve448: portability fixups.

SPARC condition in __SIZEOF_INT128__==16 is rather performance thing
than portability. Even though compiler advertises int128 capability,
corresponding operations are inefficient, because they are not
directly backed by instruction set.

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

19 months agoec/asm/x25519-x86_64.pl: fix up ADCX/ADOX fallback.
Andy Polyakov [Fri, 23 Feb 2018 10:51:41 +0000 (11:51 +0100)]
ec/asm/x25519-x86_64.pl: fix up ADCX/ADOX fallback.

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

19 months agoRemove OSSLzu, and fix the one place that used it.
Rich Salz [Fri, 23 Feb 2018 21:49:59 +0000 (16:49 -0500)]
Remove OSSLzu, and fix the one place that used it.

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

19 months agoFix some bugs with the cfb1 bitsize handling
Bernd Edlinger [Wed, 21 Feb 2018 14:48:02 +0000 (15:48 +0100)]
Fix some bugs with the cfb1 bitsize handling

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

19 months agoRemove executable bit from test/recipes/03-test_internal_sm4.t
Bernd Edlinger [Thu, 22 Feb 2018 07:30:41 +0000 (08:30 +0100)]
Remove executable bit from test/recipes/03-test_internal_sm4.t

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

19 months agoAdd a note in CHANGES
Richard Levitte [Thu, 22 Feb 2018 04:45:18 +0000 (05:45 +0100)]
Add a note in CHANGES

[extended tests]

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

19 months agoTest the storeutl searching options
Richard Levitte [Mon, 20 Feb 2017 01:49:13 +0000 (02:49 +0100)]
Test the storeutl searching options

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

19 months agoSTORE: Add documentation on search criteria
Richard Levitte [Wed, 5 Jul 2017 17:17:40 +0000 (19:17 +0200)]
STORE: Add documentation on search criteria

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

19 months agoAdapt storeutl to allow search for specific objects
Richard Levitte [Mon, 20 Feb 2017 01:47:56 +0000 (02:47 +0100)]
Adapt storeutl to allow search for specific objects

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