oweals/openssl.git
6 years agodo_body: fix heap-use-after-free.
Pavel Kopyl [Fri, 3 Nov 2017 19:18:35 +0000 (22:18 +0300)]
do_body: fix heap-use-after-free.

The memory pointed to by the 'push' is freed by the
X509_NAME_ENTRY_free() in do_body(). The second time
it is referenced to (indirectly) in certify_cert:X509_REQ_free().

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

6 years agoX509V3_EXT_add_nconf_sk, X509v3_add_ext: fix errors handling
Pavel Kopyl [Tue, 7 Nov 2017 12:28:18 +0000 (15:28 +0300)]
X509V3_EXT_add_nconf_sk, X509v3_add_ext: fix errors handling

X509v3_add_ext: free 'sk' if the memory pointed to by it
was malloc-ed inside this function.
X509V3_EXT_add_nconf_sk: return an error if X509v3_add_ext() fails.
This prevents use of a freed memory in do_body:sk_X509_EXTENSION_num().

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

6 years agoReplaced variable-time GCD with consttime inversion to avoid side-channel attacks...
Samuel Weiser [Wed, 21 Feb 2018 11:56:01 +0000 (11:56 +0000)]
Replaced variable-time GCD with consttime inversion to avoid side-channel attacks on RSA key generation

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

6 years agoSanity check the ticket length before using key name/IV
Matt Caswell [Tue, 20 Feb 2018 10:20:20 +0000 (10:20 +0000)]
Sanity check the ticket length before using key name/IV

This could in theory result in an overread - but due to the over allocation
of the underlying buffer does not represent a security issue.

Thanks to Fedor Indutny for reporting this issue.

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

6 years agoFix no-ec build
Matt Caswell [Tue, 20 Feb 2018 14:53:40 +0000 (14:53 +0000)]
Fix no-ec build

[extended tests]

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

6 years agoFix some undefined behaviour in the Curve448 code
Matt Caswell [Tue, 20 Feb 2018 14:53:06 +0000 (14:53 +0000)]
Fix some undefined behaviour in the Curve448 code

We can't add NULL data into a hash

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

6 years agoRemove a spurious TLSProxy byte in TLSv1.3
Matt Caswell [Wed, 14 Feb 2018 17:29:32 +0000 (17:29 +0000)]
Remove a spurious TLSProxy byte in TLSv1.3

When the proxy re-encrypted a TLSv1.3 record it was adding a spurious
byte onto the end. This commit removes that.

The "extra" byte was intended to be the inner content type of the record.
However, TLSProxy was actually adding the original encrypted data into the
record (which already has the inner content type in it) and then adding
the spurious additional content type byte on the end (and adjusting the
record length accordingly).

It is interesting to look at why this didn't cause a failure:

The receiving peer first attempts to decrypt the data. Because this is
TLSProxy we always use a GCM based ciphersuite with a 16 byte tag. When
we decrypt this it actually gets diverted to the ossltest engine. All this
does is go through the motions of encrypting/decrypting but just passes
back the original data. Crucially it will never fail because of a bad tag!
The receiving party thinks the spurious additional byte is part of the
tag and the ossltest engine ignores it.

This means the data that gets passed back to the record layer still has
an additional spurious byte on it - but because the 16 byte tag has been
removed, this is actually the first byte of the original tag. Again
because we are using ossltest engine we aren't actually creating "real"
tags - we only ever emit 16, 0 bytes for the tag. So the spurious
additional byte always has the value 0. The TLSv1.3 spec says that records
can have additional 0 bytes on the end of them - this is "padding". So the
record layer interprets this 0 byte as padding and strips it off to end up
with the originally transmitted record data - which it can now process
successfully.

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

6 years agoVMS: Fix curve448 internal test program
Richard Levitte [Wed, 21 Feb 2018 09:15:16 +0000 (10:15 +0100)]
VMS: Fix curve448 internal test program

The internals test programs access header files that aren't guarded by
the public __DECC_INCLUDE_PROLOGUE.H and __DECC_INCLUDE_EPILOGUE.H
files, and therefore have no idea what the naming convention is.
Therefore, we need to specify that explicitely in the internals test
programs, since they aren't built with the same naming convention as
the library they belong with.

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

6 years agotest/recipes/80-test_pkcs12.t: handle lack of Win32::API.
Andy Polyakov [Tue, 20 Feb 2018 11:43:35 +0000 (12:43 +0100)]
test/recipes/80-test_pkcs12.t: handle lack of Win32::API.

So far check for availability of Win32::API served as implicit check
for $^O being MSWin32. Reportedly it's not safe assumption, and check
for MSWin32 has to be explicit.

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

6 years agoConfigure: engage x25519 assembly support.
Andy Polyakov [Mon, 19 Feb 2018 14:19:49 +0000 (15:19 +0100)]
Configure: engage x25519 assembly support.

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

6 years agoec/curve25519.c: facilitate assembly implementations.
Andy Polyakov [Mon, 19 Feb 2018 14:17:30 +0000 (15:17 +0100)]
ec/curve25519.c: facilitate assembly implementations.

Currently it's limited to 64-bit platforms only as minimum radix
expected in assembly is 2^51.

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

6 years agoAdd x25519-x86_64.pl module, mod 2^255-19 primitives.
Andy Polyakov [Mon, 19 Feb 2018 14:09:33 +0000 (15:09 +0100)]
Add x25519-x86_64.pl module, mod 2^255-19 primitives.

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

6 years agocrypto/ec/curve25519.c: remove redundant fe[51]_cswap.
Andy Polyakov [Mon, 19 Feb 2018 14:00:59 +0000 (15:00 +0100)]
crypto/ec/curve25519.c: remove redundant fe[51]_cswap.

3 least significant bits of the input scalar are explicitly cleared,
hence swap variable has fixed value [of zero] upon exit from the loop.

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

6 years agoAdd tests for newly added constant time functions
Matt Caswell [Mon, 19 Feb 2018 14:53:01 +0000 (14:53 +0000)]
Add tests for newly added constant time functions

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

6 years agoSome more cleanups of curve448 code
Matt Caswell [Fri, 16 Feb 2018 21:39:19 +0000 (21:39 +0000)]
Some more cleanups of curve448 code

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

6 years agofixup! More style fixes for the curve448 code
Matt Caswell [Fri, 16 Feb 2018 21:39:03 +0000 (21:39 +0000)]
fixup! More style fixes for the curve448 code

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

6 years agofixup! Improve readability of f_impl.c and f_impl.h
Matt Caswell [Fri, 16 Feb 2018 16:54:53 +0000 (16:54 +0000)]
fixup! Improve readability of f_impl.c and f_impl.h

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

6 years agoImprove readability of f_impl.c and f_impl.h
Matt Caswell [Wed, 14 Feb 2018 14:35:01 +0000 (14:35 +0000)]
Improve readability of f_impl.c and f_impl.h

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

6 years agoRemove unrolled loops
Matt Caswell [Wed, 31 Jan 2018 13:37:42 +0000 (13:37 +0000)]
Remove unrolled loops

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

6 years agoYet more style updates to the curve448 code
Matt Caswell [Wed, 7 Feb 2018 17:03:14 +0000 (17:03 +0000)]
Yet more style updates to the curve448 code

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

6 years agoFurther style changes to curve448 code
Matt Caswell [Mon, 12 Feb 2018 13:56:50 +0000 (13:56 +0000)]
Further style changes to curve448 code

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

6 years agoSimplify some code
Matt Caswell [Wed, 7 Feb 2018 13:40:56 +0000 (13:40 +0000)]
Simplify some code

The original curve448 code was templated to allow for a 25519
implementation. We've just imported the 448 stuff - but a remnant of
the original templated approach remained. This just simplifies that.

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

6 years agoRemove some unneccessary use of constant time code in curve448
Matt Caswell [Wed, 7 Feb 2018 12:14:25 +0000 (12:14 +0000)]
Remove some unneccessary use of constant time code in curve448

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

6 years agoFix a travis failure in the curve448 code
Matt Caswell [Wed, 7 Feb 2018 12:08:47 +0000 (12:08 +0000)]
Fix a travis failure in the curve448 code

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

6 years agoRemove the curve448 vector code
Matt Caswell [Mon, 12 Feb 2018 14:38:13 +0000 (14:38 +0000)]
Remove the curve448 vector code

We removed various platform specific optimisation files in an earlier
commit. The vector code was related to that and therefore is no longer
required. It may be resurrected at a later point if we reintroduce the
opimtisations.

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

6 years agoMore style fixes for the curve448 code
Matt Caswell [Wed, 7 Feb 2018 11:47:41 +0000 (11:47 +0000)]
More style fixes for the curve448 code

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

6 years agoRemove a strict aliasing issue with pre-computed curve448 constants
Matt Caswell [Tue, 6 Feb 2018 14:59:14 +0000 (14:59 +0000)]
Remove a strict aliasing issue with pre-computed curve448 constants

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

6 years agoMore style fixes to Curve448 code based on review feedback
Matt Caswell [Mon, 12 Feb 2018 14:27:02 +0000 (14:27 +0000)]
More style fixes to Curve448 code based on review feedback

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

6 years agoSome style fixes
Matt Caswell [Mon, 12 Feb 2018 14:03:36 +0000 (14:03 +0000)]
Some style fixes

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

6 years agoFormatting tweak based on review feedback
Matt Caswell [Thu, 1 Feb 2018 14:29:01 +0000 (14:29 +0000)]
Formatting tweak based on review feedback

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

6 years agoUse NLIMBS where appropriate to simplify the code
Matt Caswell [Thu, 1 Feb 2018 14:23:13 +0000 (14:23 +0000)]
Use NLIMBS where appropriate to simplify the code

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

6 years agoRemove cplusplus guards in internal headers
Matt Caswell [Thu, 1 Feb 2018 14:17:38 +0000 (14:17 +0000)]
Remove cplusplus guards in internal headers

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

6 years agoRemove the curve448 specific constant time implementation
Matt Caswell [Thu, 1 Feb 2018 13:53:56 +0000 (13:53 +0000)]
Remove the curve448 specific constant time implementation

Instead we should use the standard OpenSSL constant time routines.

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

6 years agoAdd some new constant time functions needed by curve448
Matt Caswell [Thu, 1 Feb 2018 13:51:53 +0000 (13:51 +0000)]
Add some new constant time functions needed by curve448

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

6 years agoUse the NLIMBS macro rather than try and calculate the number of limbs
Matt Caswell [Wed, 31 Jan 2018 13:53:45 +0000 (13:53 +0000)]
Use the NLIMBS macro rather than try and calculate the number of limbs

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

6 years agoRename a function to avoid a clash
Matt Caswell [Wed, 31 Jan 2018 13:43:15 +0000 (13:43 +0000)]
Rename a function to avoid a clash

We already have a constant_time_select() function so, to avoid
confusion/clashing we shouldn't have a second one.

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

6 years agoRemove curve448 architecture specific files
Matt Caswell [Wed, 31 Jan 2018 13:14:48 +0000 (13:14 +0000)]
Remove curve448 architecture specific files

Remove all architecture specific files except for the reference arch_32
version. These files provide archicture specific performance optimisation.
However they have not been integrated yet. In order to avoid review issues
they are removed for now. They may be reintroduced at a later time.

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

6 years agoFix AppVeyor failure in eddsa.c
Matt Caswell [Fri, 19 Jan 2018 15:37:34 +0000 (15:37 +0000)]
Fix AppVeyor failure in eddsa.c

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

6 years agoFix travis failure in f_impl.c
Matt Caswell [Thu, 18 Jan 2018 14:15:46 +0000 (14:15 +0000)]
Fix travis failure in f_impl.c

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

6 years agoFix a typo in a comment
Matt Caswell [Thu, 18 Jan 2018 13:27:45 +0000 (13:27 +0000)]
Fix a typo in a comment

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

6 years agoUpdate Curve448 copyright for 2018
Matt Caswell [Thu, 18 Jan 2018 13:12:46 +0000 (13:12 +0000)]
Update Curve448 copyright for 2018

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

6 years agoCode tidy up
Matt Caswell [Wed, 13 Dec 2017 09:57:48 +0000 (09:57 +0000)]
Code tidy up

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

6 years agoFixes for compilation using clang
Matt Caswell [Wed, 13 Dec 2017 09:57:12 +0000 (09:57 +0000)]
Fixes for compilation using clang

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

6 years agoUpdate the curve448 internal test to use testutil.h
Matt Caswell [Tue, 12 Dec 2017 20:32:19 +0000 (20:32 +0000)]
Update the curve448 internal test to use testutil.h

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

6 years agoMove curve448_test.c to be a full internal test
Matt Caswell [Tue, 12 Dec 2017 19:55:38 +0000 (19:55 +0000)]
Move curve448_test.c to be a full internal test

This ensures that this test is run as part of the test suite

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

6 years agoFix build errors for Curve448 code on Windows (VC-WIN32 and VC-WIN64A)
Matt Caswell [Tue, 12 Dec 2017 14:17:40 +0000 (14:17 +0000)]
Fix build errors for Curve448 code on Windows (VC-WIN32 and VC-WIN64A)

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

6 years agoRemove some gcc/clang specific attributes we don't support
Matt Caswell [Mon, 11 Dec 2017 17:00:07 +0000 (17:00 +0000)]
Remove some gcc/clang specific attributes we don't support

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

6 years agoRemove duplicated 448 in the names of various things
Matt Caswell [Wed, 6 Dec 2017 13:06:13 +0000 (13:06 +0000)]
Remove duplicated 448 in the names of various things

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

6 years agoMerge f_field.h into field.h
Matt Caswell [Tue, 5 Dec 2017 17:09:39 +0000 (17:09 +0000)]
Merge f_field.h into field.h

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

6 years agoMerge f_arithmetic.c into f_generic.c
Matt Caswell [Tue, 5 Dec 2017 16:59:42 +0000 (16:59 +0000)]
Merge f_arithmetic.c into f_generic.c

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

6 years agoRemove references to libdecaf
Matt Caswell [Tue, 5 Dec 2017 16:37:57 +0000 (16:37 +0000)]
Remove references to libdecaf

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

6 years agoRemove some unneeded code
Matt Caswell [Tue, 5 Dec 2017 16:14:11 +0000 (16:14 +0000)]
Remove some unneeded code

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

6 years agoManual formatting tweaks to Curve448 code
Matt Caswell [Mon, 4 Dec 2017 13:30:53 +0000 (13:30 +0000)]
Manual formatting tweaks to Curve448 code

Following running openssl-format-source there were a lot of manual tweaks
that were requried.

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

6 years agoRun util/openssl-format-source on the Curve448 code
Matt Caswell [Mon, 4 Dec 2017 11:38:58 +0000 (11:38 +0000)]
Run util/openssl-format-source on the Curve448 code

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

6 years agoUpdate the imported curve448 code to use OpenSSL copyright headers
Matt Caswell [Fri, 1 Dec 2017 18:12:25 +0000 (18:12 +0000)]
Update the imported curve448 code to use OpenSSL copyright headers

Some files talk about the MIT license. This code was contributed under
CLA and was relicensed to the OpenSSL licence when imported.

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

6 years agoFix the ED448 key lengths
Matt Caswell [Tue, 28 Nov 2017 18:23:51 +0000 (18:23 +0000)]
Fix the ED448 key lengths

Unlike X448 the key lengths for ED448 are 57 bytes (as opposed to 56)

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

6 years agoIntegrate Curve448 into the build system
Matt Caswell [Tue, 28 Nov 2017 16:19:57 +0000 (16:19 +0000)]
Integrate Curve448 into the build system

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

6 years agoConvert to C90 from C99
Matt Caswell [Thu, 18 Jan 2018 12:55:23 +0000 (12:55 +0000)]
Convert to C90 from C99

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

6 years agoRename the decaf files to curve448 files
Matt Caswell [Tue, 28 Nov 2017 14:56:43 +0000 (14:56 +0000)]
Rename the decaf files to curve448 files

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

6 years agoRemove portable_endian.h
Matt Caswell [Tue, 28 Nov 2017 13:59:43 +0000 (13:59 +0000)]
Remove portable_endian.h

It is no longer used

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

6 years agoRemove the old shake256 implementation
Matt Caswell [Tue, 28 Nov 2017 12:23:33 +0000 (12:23 +0000)]
Remove the old shake256 implementation

We have fully converted curve448 to use the OpenSSL shake256 implementation
so we can now remove the old one.

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

6 years agoConvert Curve448 internals to use OpenSSL shake256
Matt Caswell [Tue, 28 Nov 2017 12:09:23 +0000 (12:09 +0000)]
Convert Curve448 internals to use OpenSSL shake256

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

6 years agoUse OpenSSL shake256
Matt Caswell [Tue, 28 Nov 2017 11:34:54 +0000 (11:34 +0000)]
Use OpenSSL shake256

Convert the curve448 test to use the OpenSSL implementation of shake256.

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

6 years agoAdd tests for Ed448ph
Matt Caswell [Tue, 28 Nov 2017 09:53:58 +0000 (09:53 +0000)]
Add tests for Ed448ph

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

6 years agoAdd Ed448 tests
Matt Caswell [Mon, 27 Nov 2017 11:32:03 +0000 (11:32 +0000)]
Add Ed448 tests

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

6 years agoRemove inclusion of header files that we can't rely on due to portability
Matt Caswell [Thu, 23 Nov 2017 16:50:42 +0000 (16:50 +0000)]
Remove inclusion of header files that we can't rely on due to portability

Some non-portable includes are left because they are already suitably
guarded.

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

6 years agoRemove DECAF_NOINLINE
Matt Caswell [Thu, 16 Nov 2017 17:35:10 +0000 (17:35 +0000)]
Remove DECAF_NOINLINE

OpenSSL does not have this concept

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

6 years agoRemove DECAF_NONNULL
Matt Caswell [Thu, 16 Nov 2017 17:27:05 +0000 (17:27 +0000)]
Remove DECAF_NONNULL

OpenSSL does not currently have this concept. It only provides compiler
warnings so just remove it.

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

6 years agoRemove all instances of DECAF_API_VIS
Matt Caswell [Thu, 16 Nov 2017 17:18:57 +0000 (17:18 +0000)]
Remove all instances of DECAF_API_VIS

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

6 years agoReplace DECAF_WARN_UNUSED with __owur
Matt Caswell [Thu, 16 Nov 2017 17:13:18 +0000 (17:13 +0000)]
Replace DECAF_WARN_UNUSED with __owur

Most of these were in point_448.h. While I was at it I spotted some unused
declarations, so I deleted those too.

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

6 years agoReplace DECAF_INLINE with ossl_inline
Matt Caswell [Thu, 16 Nov 2017 17:07:21 +0000 (17:07 +0000)]
Replace DECAF_INLINE with ossl_inline

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

6 years agoRemove some vestiges of the old decaf template approach
Matt Caswell [Thu, 16 Nov 2017 16:58:20 +0000 (16:58 +0000)]
Remove some vestiges of the old decaf template approach

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

6 years agoRename decaf_448_* to curve448_*
Matt Caswell [Thu, 16 Nov 2017 16:27:48 +0000 (16:27 +0000)]
Rename decaf_448_* to curve448_*

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

6 years agoRemove some more unneeded code
Matt Caswell [Thu, 16 Nov 2017 16:20:34 +0000 (16:20 +0000)]
Remove some more unneeded code

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

6 years agoRemove some uneeded macros and conditionally compiled code
Matt Caswell [Thu, 16 Nov 2017 16:22:00 +0000 (16:22 +0000)]
Remove some uneeded macros and conditionally compiled code

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

6 years agoRemove some unneeded stuff
Matt Caswell [Thu, 16 Nov 2017 14:08:23 +0000 (14:08 +0000)]
Remove some unneeded stuff

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

6 years agoAdd a local test
Matt Caswell [Thu, 16 Nov 2017 11:52:06 +0000 (11:52 +0000)]
Add a local test

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

6 years agoAdd the X448() and X448_public_from_private() functions
Matt Caswell [Thu, 16 Nov 2017 11:13:53 +0000 (11:13 +0000)]
Add the X448() and X448_public_from_private() functions

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

6 years agoRemove the decaf_bzero function and replace with OPENSSL_cleanse()
Matt Caswell [Wed, 15 Nov 2017 16:39:33 +0000 (16:39 +0000)]
Remove the decaf_bzero function and replace with OPENSSL_cleanse()

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

6 years agoRemove the curve448/decaf sub-directory
Matt Caswell [Wed, 15 Nov 2017 16:24:32 +0000 (16:24 +0000)]
Remove the curve448/decaf sub-directory

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

6 years agoRemove some unneeded code
Matt Caswell [Wed, 15 Nov 2017 16:21:42 +0000 (16:21 +0000)]
Remove some unneeded code

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

6 years agoRemove some deprecated curve 448 code and remove some unneeded defines
Matt Caswell [Wed, 15 Nov 2017 16:19:15 +0000 (16:19 +0000)]
Remove some deprecated curve 448 code and remove some unneeded defines

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

6 years agoRemove some unneeded files and further flatten the curve 448 structure
Matt Caswell [Wed, 15 Nov 2017 16:15:18 +0000 (16:15 +0000)]
Remove some unneeded files and further flatten the curve 448 structure

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

6 years agoFlatten the Curve 448 source structure
Matt Caswell [Wed, 15 Nov 2017 15:59:27 +0000 (15:59 +0000)]
Flatten the Curve 448 source structure

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

6 years agoImport Curve 448 support
Matt Caswell [Wed, 15 Nov 2017 15:27:21 +0000 (15:27 +0000)]
Import Curve 448 support

This imports selected files from the src directory of this repository:

https://sourceforge.net/p/ed448goldilocks/code/ci/v0.9.4/tree/

This is from the version tagged as "v0.9.4" with commit id 7527e9.

This code was originally writting by Mike Hamburg and the import is done by
kind permission of Rambus and Mike Hamburg under CLA. As this is under CLA
the files are being relicensed under the OpenSSL licence. Subsequent
commits will correct any licence notices in the individual files.

These files should provide complete self-contained support for X448 and
Ed448. They are imported "as is" from the source repository and this
commit does not attempt to integrate them into the OpenSSL build system,
or modify them in any way to fit OpenSSL style guidelines. That will be
done by subsequent commits.

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

6 years agoAdd BIO_bind function to bind local address for a socket.
John Hughes [Thu, 8 Feb 2018 09:49:02 +0000 (10:49 +0100)]
Add BIO_bind function to bind local address for a socket.

Add -bind option to s_client application to allow specification of
local address for connection.

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

6 years ago Add X509_get0_authority_key_id() function
Massimiliano Pala [Mon, 19 Feb 2018 20:47:02 +0000 (15:47 -0500)]
  Add X509_get0_authority_key_id() function

  This function makes it easier to retrieve a reference to the
  authority key identifier (akid->keyid) inside a certificate.

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

6 years agoThe record version for ClientHello2 should be TLS1.2
Matt Caswell [Thu, 15 Feb 2018 14:29:45 +0000 (14:29 +0000)]
The record version for ClientHello2 should be TLS1.2

According to TLSv1.3 draft-24 the record version for ClientHello2 should
be TLS1.2, and not TLS1.0 as it is now.

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

6 years agosha/asm/keccak1600-armv8.pl: add hardware-assisted ARMv8.2 subroutines.
Andy Polyakov [Tue, 13 Feb 2018 20:59:15 +0000 (21:59 +0100)]
sha/asm/keccak1600-armv8.pl: add hardware-assisted ARMv8.2 subroutines.

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

6 years agotest_ssl_old: avoid empty strings for flags
Richard Levitte [Fri, 16 Feb 2018 22:34:32 +0000 (23:34 +0100)]
test_ssl_old: avoid empty strings for flags

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

6 years agoOpenSSL::Test::quotify: put quotes around empty arguments
Richard Levitte [Fri, 16 Feb 2018 22:28:31 +0000 (23:28 +0100)]
OpenSSL::Test::quotify: put quotes around empty arguments

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

6 years agoAvoid mentioning uninitialised contexts.
Pauli [Fri, 16 Feb 2018 01:24:51 +0000 (11:24 +1000)]
Avoid mentioning uninitialised contexts.

All contexts must be initialised because they can only be created using the _new() calls.
Remove the outdated mentions of uninitialised and initialised contexts.

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

6 years agoConfigure: avoid uninit data in configdata.pm
Richard Levitte [Sat, 17 Feb 2018 06:33:17 +0000 (07:33 +0100)]
Configure: avoid uninit data in configdata.pm

Fixes #5394

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

6 years agopkeyparam.pod: correct the command description
Dr. Matthias St. Pierre [Fri, 16 Feb 2018 09:26:55 +0000 (10:26 +0100)]
pkeyparam.pod: correct the command description

The description was probably copy&pasted from pkey.pod and forgotten.

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

6 years agoConfigure: move down the treatment of seed sources
Richard Levitte [Thu, 15 Feb 2018 17:08:54 +0000 (18:08 +0100)]
Configure: move down the treatment of seed sources

Most of all, this is so it doesn't output mysterious text when we're
treating the phony config targets LISH, HASH and TABLE

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

6 years agoAIX: make sure that the arflags value includes the command letter (r)
Richard Levitte [Thu, 15 Feb 2018 21:38:24 +0000 (22:38 +0100)]
AIX: make sure that the arflags value includes the command letter (r)

In previous OpenSSL versions, this letter was part of the make
variable AR.  However, following the usual convention (read: GNU),
this letter is supposed to be part of ARFLAGS.

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

6 years agoCheck the return code from ASN1_TIME_diff()
Matt Caswell [Mon, 12 Feb 2018 17:47:50 +0000 (17:47 +0000)]
Check the return code from ASN1_TIME_diff()

The function can fail so we should check the return code.

Found by Coverity

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

6 years agoThe function X509_gmtime_adj() can fail
Matt Caswell [Mon, 12 Feb 2018 17:43:38 +0000 (17:43 +0000)]
The function X509_gmtime_adj() can fail

Check for a failure and free a_tm as appropriate.

Found by Coverity

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

6 years agoIf s->ctx is NULL then this is an internal error
Matt Caswell [Mon, 12 Feb 2018 16:24:59 +0000 (16:24 +0000)]
If s->ctx is NULL then this is an internal error

Coverity was complaining because we checked if s->ctx is NULL and then
later on in the function deref s->ctx anyway. In reality if s->ctx is
NULL then this is an internal error.

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

6 years agoDRBG: make locking api truly private
Dr. Matthias St. Pierre [Thu, 15 Feb 2018 09:29:56 +0000 (10:29 +0100)]
DRBG: make locking api truly private

In PR #5295 it was decided that the locking api should remain private
and used only inside libcrypto. However, the locking functions were added
back to `libcrypto.num` by `mkdef.pl`, because the function prototypes
were still listed in `internal/rand.h`. (This header contains functions
which are internal, but shared between libcrypto and libssl.)

This commit moves the prototypes to `rand_lcl.h` and changes the names
to lowercase, following the convention therein. It also corrects an
outdated documenting comment.

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