openssl.git
2 years agoDeprecate old style BIO callback calls
Tomas Mraz [Mon, 24 May 2021 16:15:57 +0000 (18:15 +0200)]
Deprecate old style BIO callback calls

New style BIO_debug_callback_ex() function added to provide
replacement for BIO_debug_callback().

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15440)

2 years agoapps: Fix the mismatch of SM2 keys keymgmt
Tianjia Zhang [Tue, 25 May 2021 08:52:20 +0000 (16:52 +0800)]
apps: Fix the mismatch of SM2 keys keymgmt

The SM2 key has a separate keymgmt, which is independent of the
EC. The key generated by the subcommand ecparam is wrong. Using
'openssl ec -in sm2.key -noout -text' will also encounter some
errors.

When using the ecparam subcommand to generate the SM2 key, use
the correct keymgmt to solve this problem.

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15454)

2 years agoutil/fix-doc-nits: Fix link detection in collectnames() to be kinder
Richard Levitte [Tue, 25 May 2021 08:29:24 +0000 (10:29 +0200)]
util/fix-doc-nits: Fix link detection in collectnames() to be kinder

The way the links were parsed out of the contents caused a regexp
recursion.  The easiest way to deal with it is to find all markup
using $markup_re, and then parsing out the L markups and add them to
the links array.

Fixes #15449

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15450)

2 years agoTEST: Add test specific fipsmodule.cnf, and use it
Richard Levitte [Mon, 24 May 2021 12:25:28 +0000 (14:25 +0200)]
TEST: Add test specific fipsmodule.cnf, and use it

We add the concept of preparation recipes, which are performed
unconditionally.  They are all expected to match the pattern
test/recipes/00-prep_*.t.

We add one such preparation recipe, test/recipes/00-prep_fipsmodule_cnf.t,
which helps us generate a test specific fipsmodule.cnf, to be used by
all other tests.

Fixes #15166

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15436)

2 years agoBuild file templates: rework FIPS module installation
Richard Levitte [Mon, 24 May 2021 12:24:32 +0000 (14:24 +0200)]
Build file templates: rework FIPS module installation

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15436)

2 years agoBuild file templates: rework how general dependencies are computed
Richard Levitte [Mon, 24 May 2021 12:19:38 +0000 (14:19 +0200)]
Build file templates: rework how general dependencies are computed

For some types of targets, we pretty much know what kinds of files all
the dependencies are.  For some, however, we can't assume anything,
and are faced with dependencies in platform agnostic form.  We need to
find those in diverse places in %unified_info, and deduce from there
how they should be converted to a platform specific form.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15436)

2 years agoRework how providers/fipsmodule.cnf is produced
Richard Levitte [Mon, 24 May 2021 12:06:00 +0000 (14:06 +0200)]
Rework how providers/fipsmodule.cnf is produced

First of all, we have concluded that we can calculate the integrity
checksum with a simple perl script.

Second, having the production of providers/fipsmodule.cnf as a
dependency for run_tests wasn't quite right.  What we really want is
to generate it as soon as a new providers/fips.so is produced.  That
required a small bit of fiddling with how diverse dependencies are
made.

Fixes #15166

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15436)

2 years agoIgnore the threadstest_fips executable
Matt Caswell [Tue, 25 May 2021 11:02:07 +0000 (12:02 +0100)]
Ignore the threadstest_fips executable

Add a new executable that isn't caught by existing .gitignore rules

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15453)

2 years agoOSSL_DECODER_from_bio: Report an unsupported error when there is none
Tomas Mraz [Tue, 25 May 2021 07:59:06 +0000 (09:59 +0200)]
OSSL_DECODER_from_bio: Report an unsupported error when there is none

When nothing was decoded and there is no error on the stack report
something.

Fixes #15442

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15441)

2 years agoAdd negative test cases for PEM_read_bio_PrivateKey
Tomas Mraz [Tue, 25 May 2021 07:58:35 +0000 (09:58 +0200)]
Add negative test cases for PEM_read_bio_PrivateKey

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15441)

2 years agoFix possible infinite loop in pem_read_bio_key_decoder()
Tomas Mraz [Mon, 24 May 2021 16:47:45 +0000 (18:47 +0200)]
Fix possible infinite loop in pem_read_bio_key_decoder()

There could be an infinite loop if no read happened.

Fixes #15426

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15441)

2 years agotest: update RSA test with current bit strengths
Pauli [Tue, 25 May 2021 01:26:15 +0000 (11:26 +1000)]
test: update RSA test with current bit strengths

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/15428)

2 years agorsa: special case the strengths of RSA with 7680 and 15360 bits
Pauli [Sun, 23 May 2021 05:28:30 +0000 (15:28 +1000)]
rsa: special case the strengths of RSA with 7680 and 15360 bits

Also cap the strengths for values under these two because the formula
overestimates around them.

The formula NIST gives doesn't match the table also presented in IG 7.5

Partial fix for #15421

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/15428)

2 years agoFix buffer overflow when generating large RSA keys in FIPS mode.
Shane Lontis [Tue, 25 May 2021 03:31:44 +0000 (13:31 +1000)]
Fix buffer overflow when generating large RSA keys in FIPS mode.

A pairwise test runs only in FIPS mode.
An assumption about the size of the 'to' buffer passed to
RSA_private_decrypt() was incorrect. It needs to be up to RSA_size()
bytes long - so a fixed buffer of 256 bytes was not large enough.
An exiting malloc has increased in size to allocate buffer space for
both the encrypt and decrypt buffer.

The existing test used 2080 bits which was not quite large enough to
trigger the issue. A test using 3072 bits has been added.

Reported by Mark Powers from Acumen.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15447)

2 years agoFix -static builds on master
Tom Cosgrove [Mon, 17 May 2021 08:59:57 +0000 (09:59 +0100)]
Fix -static builds on master

Pull in Todd Short's fix cfd7225fbb from 1.1.1, which moves the disabling
of pic, threads and statics to before they are checked.

Signed-off-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15214)

2 years agoerr: rename err_load_xxx_strings_int functions
Pauli [Tue, 25 May 2021 02:04:22 +0000 (12:04 +1000)]
err: rename err_load_xxx_strings_int functions

The new names are ossl_err_load_xxx_strings.

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

2 years agoFix building of test/pbetest.c
Petr Gotthard [Mon, 24 May 2021 09:40:15 +0000 (11:40 +0200)]
Fix building of test/pbetest.c

The test_pkcs5_pbe() function is required twice:
once `if !defined OPENSSL_NO_RC4 && !defined OPENSSL_NO_MD5`
and once `if !defined OPENSSL_NO_DES && !defined OPENSSL_NO_SHA1`

Hence there should be `||` between those. Currently the build fails
if the first condition is false, while the second is true.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15432)

2 years agoAdd special case to skip RC4 reinit
Jon Spillett [Fri, 14 May 2021 04:46:25 +0000 (14:46 +1000)]
Add special case to skip RC4 reinit

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15276)

2 years agoAdd an evp_libctx_test test run for legacy provider
Jon Spillett [Fri, 14 May 2021 01:15:25 +0000 (11:15 +1000)]
Add an evp_libctx_test test run for legacy provider

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15276)

2 years agoAllow TLS13_AD_MISSING_EXTENSION for older versions
Benjamin Kaduk [Fri, 21 May 2021 17:25:00 +0000 (10:25 -0700)]
Allow TLS13_AD_MISSING_EXTENSION for older versions

Add a pass-through switch case for TLS13_AD_MISSING_EXTENSION in
ssl3_alert_code() and tls1_alert_code(), so that the call to
SSLfatal() in final_psk() will always actually generate an alert,
even for non-TLS1.3 protocol versions.

Fixes #15375

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15412)

2 years agoRemove tmp file smcont.signed_ that was used for debuggin PR #15347
Dr. David von Oheimb [Mon, 24 May 2021 13:53:04 +0000 (15:53 +0200)]
Remove tmp file smcont.signed_ that was used for debuggin PR #15347

This file made it into the master branch by mistake.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15438)

2 years agowrite-man-symlinks: Write relative symlinks not absolute
Tomas Mraz [Mon, 24 May 2021 13:09:50 +0000 (15:09 +0200)]
write-man-symlinks: Write relative symlinks not absolute

Fixes #15424

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

2 years agoAdd warning to key/param generating apps on potential delay due to missing entropy
Dr. David von Oheimb [Tue, 9 Jun 2020 08:21:58 +0000 (10:21 +0200)]
Add warning to key/param generating apps on potential delay due to missing entropy

This also introduces app_keygen() and app_paramgen() and cleans up err reporting.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12095)

2 years agofix Solaris OS detection in config.pm
Jan Lana [Mon, 24 May 2021 15:08:09 +0000 (17:08 +0200)]
fix Solaris OS detection in config.pm

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

2 years agoDo not try to install image directories with no images
Tomas Mraz [Mon, 24 May 2021 17:57:28 +0000 (19:57 +0200)]
Do not try to install image directories with no images

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15433)

2 years agoFIPS checksums CI: use merge checkout to compute the new checksums
Tomas Mraz [Mon, 24 May 2021 17:46:34 +0000 (19:46 +0200)]
FIPS checksums CI: use merge checkout to compute the new checksums

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15433)

2 years agoWindows CI: properly drop test_fuzz* tests to speed up things
Tomas Mraz [Mon, 24 May 2021 13:47:26 +0000 (15:47 +0200)]
Windows CI: properly drop test_fuzz* tests to speed up things

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15433)

2 years agoWindows CI: Add make install step on the shared 64 bit build
Tomas Mraz [Mon, 24 May 2021 10:16:00 +0000 (12:16 +0200)]
Windows CI: Add make install step on the shared 64 bit build

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15433)

2 years agoregenerate FIPS checksums
Pauli [Sat, 22 May 2021 05:58:16 +0000 (15:58 +1000)]
regenerate FIPS checksums

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15365)

2 years agochecksum: include header files in the checksumming output
Pauli [Thu, 20 May 2021 03:48:15 +0000 (13:48 +1000)]
checksum: include header files in the checksumming output

Fixes #15133

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15365)

2 years agoFix 'openssl req' to be able to use provided keytypes
Richard Levitte [Fri, 21 May 2021 06:26:46 +0000 (08:26 +0200)]
Fix 'openssl req' to be able to use provided keytypes

'openssl req' was still using old APIs that could only deal with
EVP_PKEY_ASN1_METHOD based EVP_PKEYs.  Now modified to use more
generic functions that can handle all forms of EVP_PKEY, this app
should be ready for the future.

Fixes #15388

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15400)

2 years agomac: add a getter for the MAC block size.
Pauli [Mon, 24 May 2021 04:22:17 +0000 (14:22 +1000)]
mac: add a getter for the MAC block size.

Fixes #12342

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

2 years agotest: add evp_tests for the MAC size and block size
Pauli [Mon, 24 May 2021 04:16:44 +0000 (14:16 +1000)]
test: add evp_tests for the MAC size and block size

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

2 years agodoc: document the MAC block size getter
Pauli [Mon, 24 May 2021 04:15:41 +0000 (14:15 +1000)]
doc: document the MAC block size getter

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

2 years agoAdd fipsinstall option to run self test KATS on module load
Shane Lontis [Wed, 5 May 2021 00:36:41 +0000 (10:36 +1000)]
Add fipsinstall option to run self test KATS on module load

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

2 years agoRemove engine_table_select_int
Rich Salz [Sat, 22 May 2021 19:57:07 +0000 (15:57 -0400)]
Remove engine_table_select_int

Add missing file/line args and call it engine_table_select

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

2 years agoDOCS: Don't mention internal functions in public documentation
Richard Levitte [Sun, 23 May 2021 06:53:34 +0000 (08:53 +0200)]
DOCS: Don't mention internal functions in public documentation

This time noticed in OSSL_trace_set_channel.pod, and it turned out to
be easy to mention the public functions affected instead.

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15422)

2 years agoFix warning in gf_serialize
Juergen Christ [Thu, 20 May 2021 11:27:43 +0000 (13:27 +0200)]
Fix warning in gf_serialize

Compiling under -Werror fails in gf_serialize:

crypto/ec/curve448/f_generic.c:21:27: error: argument 1 of type 'uint8_t[56]' {aka 'unsigned char[56]'} with mismatched bound [-Werror=array-parameter=]
   21 | void gf_serialize(uint8_t serial[SER_BYTES], const gf x, int with_hibit)
      |                   ~~~~~~~~^~~~~~~~~~~~~~~~~
In file included from crypto/ec/curve448/f_generic.c:12:
crypto/ec/curve448/field.h:65:28: note: previously declared as 'uint8_t *' {aka 'unsigned char *'}
void gf_serialize(uint8_t *serial, const gf x, int with_highbit);
                  ~~~~~~~~~^~~~~~
Changed parameter to pointer to fix this warning.

Signed-off-by: Juergen Christ <jchrist@linux.ibm.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15376)

2 years agoTEST: Avoid using just 'example.com' - test_cmp_http
Richard Levitte [Fri, 21 May 2021 04:07:25 +0000 (06:07 +0200)]
TEST: Avoid using just 'example.com'  - test_cmp_http

We have reports that some are using example.com in their /etc/hosts
for testing purposes, so we can't necessarily assume that those will
fail.

We fix it by using "random" hosts in that domain.

Fixes #15395

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15398)

2 years agoopenssl srp: make index.txt parsing error more verbose
Florian Mickler [Mon, 13 Jan 2020 01:06:49 +0000 (02:06 +0100)]
openssl srp: make index.txt parsing error more verbose

If index.txt exists but has some problems (like for example
consisting of a single \n character or number of fields wrong in one of the lines)
then openssl will just exit. This fixes it by printing an error when
load_index returns null.

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15360)

2 years agoopenssl ocsp: make index.txt parsing error more verbose
Florian Mickler [Mon, 13 Jan 2020 01:05:22 +0000 (02:05 +0100)]
openssl ocsp: make index.txt parsing error more verbose

If index.txt exists but has some problems (like for example consisting of a single \n character in it,
or some field-number error in one of the lines) openssl will just exit without any error message.

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15360)

2 years agoopenssl ca: make index.txt parsing error more verbose
Florian Mickler [Mon, 13 Jan 2020 00:44:24 +0000 (01:44 +0100)]
openssl ca: make index.txt parsing error more verbose

If index.txt exists but has some problems (like for example a single \n character in it) openssl will just exit without any error message.

Bug at least expirienced twice: https://superuser.com/questions/1327848/openssl-ca-fails-after-password-without-error-message

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15360)

2 years agoDon't try the same decoder multiple times
Matt Caswell [Fri, 21 May 2021 11:21:32 +0000 (12:21 +0100)]
Don't try the same decoder multiple times

The function collect_decoder decides whether a given decoder should be
tried or not. It loops through all the names for matching keymgmts to
see if any are a match or not. If there is a match then the decoder gets
added. However, each keymgmt may have multiple aliases and a decoder was
being added for each one. For example DHX has 4 alias names, and therefore
4 instances of the DHX decoder were added and being tried.

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

2 years agoWindows CI: use nasm on 32bit and 64bit shared builds
Tomas Mraz [Fri, 21 May 2021 08:56:00 +0000 (10:56 +0200)]
Windows CI: use nasm on 32bit and 64bit shared builds

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15349)

2 years agoAdd some basic Windows builds to the Windows CI workflow
Tomas Mraz [Wed, 19 May 2021 12:18:04 +0000 (14:18 +0200)]
Add some basic Windows builds to the Windows CI workflow

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15349)

2 years agoAdd a test for PKCS5_PBE_keyivgen()
Jon Spillett [Wed, 19 May 2021 04:52:16 +0000 (14:52 +1000)]
Add a test for PKCS5_PBE_keyivgen()

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14326)

2 years agoAdded PKCS5_PBE_keyivgen_ex() to allow PBKDF1 algorithms to be fetched for a specific...
Jon Spillett [Thu, 6 May 2021 05:25:29 +0000 (15:25 +1000)]
Added PKCS5_PBE_keyivgen_ex() to allow PBKDF1 algorithms to be fetched for a specific library context

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14326)

2 years agoAdd PBKDF1 to the legacy provider
Jon Spillett [Fri, 26 Feb 2021 05:21:47 +0000 (15:21 +1000)]
Add PBKDF1 to the legacy provider

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14326)

2 years agoRemove some perl 5.14 use from rsaz-avx512.pl
Matt Caswell [Thu, 20 May 2021 13:02:12 +0000 (14:02 +0100)]
Remove some perl 5.14 use from rsaz-avx512.pl

The non-destructive substitution syntax (s///r), was introduced in perl
5.14. We need to support 5.10 and above.

Fixes #15378

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15379)

2 years agoRename the field 'provctx and data' to 'algctx' inside some objects containing
Shane Lontis [Fri, 14 May 2021 03:08:42 +0000 (13:08 +1000)]
Rename the field 'provctx and data' to 'algctx' inside some objects containing
pointers to provider size algorithm contexts.

Fixes #14284

The gettable_ctx_params methods were confusingly passing a 'provctx' and
a provider context which are completely different objects.
Some objects such as EVP_KDF used 'data' while others such as EVP_MD used 'provctx'.

For libcrypto this 'ctx' is an opaque ptr returned when a providers algorithm
implementation creates an internal context using a new_ctx() method.
Hence the new name 'algctx'.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15275)

2 years agofips: default to running self tests when starting the fips provider
Pauli [Tue, 18 May 2021 09:03:28 +0000 (19:03 +1000)]
fips: default to running self tests when starting the fips provider

Also add a C++ constructor as per note 7 of IG 9.10 if no DEP is available and
C++ is being used.

Fixes #15322

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15324)

2 years agodoc: update core_thread_start() documentation
Pauli [Thu, 20 May 2021 22:54:07 +0000 (08:54 +1000)]
doc: update core_thread_start() documentation

It is now passed an arugment to pass to the callback

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

2 years agoFix a memleak in the FIPS provider
Matt Caswell [Thu, 20 May 2021 10:52:56 +0000 (11:52 +0100)]
Fix a memleak in the FIPS provider

If the DRBG is used within the scope of the FIPS OSSL_provider_init
function then it attempts to register a thread callback via c_thread_start.
However the implementation of c_thread_start assumed that the provider's
provctx was already present. However because OSSL_provider_init is still
running it was actually NULL. This means the thread callback fail to work
correctly and a memory leak resulted.

Instead of having c_thread_start use the provctx as the callback argument
we change the definition of c_thread_start to have an explicit callback
argument to use.

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15278)

2 years agotest: fix typo in comment in threadstest.c
Pauli [Mon, 17 May 2021 02:59:19 +0000 (12:59 +1000)]
test: fix typo in comment in threadstest.c

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

2 years agocore: condition out more in FIPS builds
Pauli [Tue, 18 May 2021 07:54:43 +0000 (17:54 +1000)]
core: condition out more in FIPS builds

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

2 years agotest: add test case to reliably reproduce RAND leak during POST
Pauli [Fri, 14 May 2021 05:41:14 +0000 (15:41 +1000)]
test: add test case to reliably reproduce RAND leak during POST

The FIPS provider leaks a RAND if the POST is run at initialisation time.
This test case reliably reproduces this event.

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

2 years ago80-test_cmp_http: Invert and correct the logic of success vs. failure exit
Dr. David von Oheimb [Fri, 21 May 2021 07:24:10 +0000 (09:24 +0200)]
80-test_cmp_http: Invert and correct the logic of success vs. failure exit

This makes the logic more intuitive and corrects the interpretation for NonStop.
Fixes #15386

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15402)

2 years agoapps/cms.c: Correct -sign output and -verify input with -binary
Dr. David von Oheimb [Wed, 19 May 2021 17:44:22 +0000 (19:44 +0200)]
apps/cms.c: Correct -sign output and -verify input with -binary

Also add related warnings on irrelevant use of -nodetach and -content options.

Fixes #15347

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15358)

2 years agoDisable loader_attic by default on VMS
Richard Levitte [Mon, 17 May 2021 21:10:11 +0000 (23:10 +0200)]
Disable loader_attic by default on VMS

The reason is that it currently doesn't build properly, due to the of
pvkfmt.c, causing multiply defined symbols since libcrypto exports
them as well.  At the same time, it can't do without that source file,
or it won't have access to certain internal symbols from there.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15320)

2 years agoMake it possible to disable the loader_attic engine
Richard Levitte [Mon, 17 May 2021 21:10:02 +0000 (23:10 +0200)]
Make it possible to disable the loader_attic engine

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15320)

2 years agoVMS: Fix run of generic generator programs in descrip.mms.tmpl
Richard Levitte [Fri, 21 May 2021 03:52:01 +0000 (05:52 +0200)]
VMS: Fix run of generic generator programs in descrip.mms.tmpl

For a generic program, always go through the MCR utility.

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15397)

2 years agoConfigurations/descrip.mms.tmpl: rework the inclusion hacks
Richard Levitte [Wed, 19 May 2021 08:57:48 +0000 (10:57 +0200)]
Configurations/descrip.mms.tmpl: rework the inclusion hacks

Because VMS C has some trouble with recursive inclusion of header
files, we have had to help it out for object files where there is such
an inclusion structure.

Previously, we did so with temporary logical names that were the same
as the first directory in an inclusion, so for example, to enable this
inclusion (found in ssl/ssl_local.h), we created the logical name
"record" when building any of the object files in the ssl/
subdirectories:

    #include "record/record.h"

However, there is another way with the VMS C compiler, to selectively
specify extra include directories in Unix form directly to the
compiler.  The logic is that from the directory where the source file
to compile is located, the specified inclusion directory merged with
the inclusion string should be able to access to specified header
file.

So for example, when a file in ssl/record/ is compiled, the following
inclusion is found:

    #include "../ssl_local.h"

So far so good, VMS C handles it properly.  However, the recursive
inclusion of "record/record.h" fails.  However, if the compiler is
helped out a little bit, with the following extra qualifier, then it
works:

    /INCLUDE="../"

The reason is that the compiler merges "../" and "record/record.h"
into "../record/record.h", which is the correct path to that header
file from the directory of the source file being compiled.

All that remained was to figure out all places where this trouble may
occur, and specify extra Unix formatted inclusion directories to
specify on per object file basis.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15369)

2 years agoFix upgrading docs for RSA_private_encrypt/RSA_public_decrypt
Robbie Harwood [Wed, 19 May 2021 19:15:19 +0000 (15:15 -0400)]
Fix upgrading docs for RSA_private_encrypt/RSA_public_decrypt

Despite the name, these functions manipulate signatures, which means
that their replacements are the EVP_PKEY_sign/EVP_PKEY_verify family.

Signed-off-by: Robbie Harwood <rharwood@redhat.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/15359)

2 years agoapps/cms: Simplify handling of encerts; add warning if they are ignored
Dr. David von Oheimb [Sat, 3 Apr 2021 17:51:36 +0000 (19:51 +0200)]
apps/cms: Simplify handling of encerts; add warning if they are ignored

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14843)

2 years agoconfigurations: update template makefiles to install documentation images
Pauli [Fri, 21 May 2021 05:24:57 +0000 (15:24 +1000)]
configurations: update template makefiles to install documentation images

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

2 years agoconfigure: build list of image files
Pauli [Fri, 21 May 2021 05:16:39 +0000 (15:16 +1000)]
configure: build list of image files

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

2 years agodoc: process images when installing
Pauli [Fri, 21 May 2021 05:16:18 +0000 (15:16 +1000)]
doc: process images when installing

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

2 years agodoc: rereference img locations into subdirectory
Pauli [Fri, 21 May 2021 05:16:03 +0000 (15:16 +1000)]
doc: rereference img locations into subdirectory

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

2 years agodoc: move images into their own subdirectory
Pauli [Fri, 21 May 2021 05:14:57 +0000 (15:14 +1000)]
doc: move images into their own subdirectory

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

2 years agoproperty: convert integers to strings properly.
Pauli [Fri, 21 May 2021 01:19:30 +0000 (11:19 +1000)]
property: convert integers to strings properly.

The int64_t type was converted to int (truncation).
Negative values were not handled at all.

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

2 years agotest/params_conversion_test.c: fix the use of strtoumax and strtoimax on VMS
Richard Levitte [Thu, 20 May 2021 07:42:22 +0000 (09:42 +0200)]
test/params_conversion_test.c: fix the use of strtoumax and strtoimax on VMS

We do this by making them aliases for strtoull and strtoll, since long
long is the current largest integer that have this sort of routine on
VMS.

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15366)

2 years agoInclude "internal/numbers.h" in test programs using SIZE_MAX
Richard Levitte [Thu, 20 May 2021 07:42:12 +0000 (09:42 +0200)]
Include "internal/numbers.h" in test programs using SIZE_MAX

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15366)

2 years agoVMS: don't use app_malloc() in apps/lib/vms_decc_argv.c
Richard Levitte [Thu, 20 May 2021 08:31:21 +0000 (10:31 +0200)]
VMS: don't use app_malloc() in apps/lib/vms_decc_argv.c

The reason being that it would otherwise force test programs to link
with all of libapps.a, which unfortunately causes multiple symbol
definition issues.

The quick and dirty fix is to use OPENSSL_malloc() instead of
app_malloc() in apps/lib/vms_decc_argv.c, and clean up libapps.a
later.

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15368)

2 years agoCleanup the peer point formats on regotiation
Dmitry Belyavskiy [Thu, 20 May 2021 14:03:05 +0000 (16:03 +0200)]
Cleanup the peer point formats on regotiation

Fixes #14875

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

2 years agoDOCS: Fixups of the migration guide and the FIPS module manual
Richard Levitte [Thu, 20 May 2021 11:32:28 +0000 (13:32 +0200)]
DOCS: Fixups of the migration guide and the FIPS module manual

The markup needed a few touch-ups

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/15377)

2 years agoHMAC doesn't work with a default digest
Dmitry Belyavskiy [Thu, 20 May 2021 08:59:07 +0000 (10:59 +0200)]
HMAC doesn't work with a default digest

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

2 years agoProperly restore XMM registers in ChaCha20's AVX-512(VL) assembly
Jean-Philippe Boivin [Mon, 17 May 2021 20:38:14 +0000 (16:38 -0400)]
Properly restore XMM registers in ChaCha20's AVX-512(VL) assembly

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15315)

2 years agoPROV: Relegate most of the FIPS provider code to libfips.a
Richard Levitte [Wed, 19 May 2021 16:51:07 +0000 (18:51 +0200)]
PROV: Relegate most of the FIPS provider code to libfips.a

provider/fips/fipsprov.c contains a number of symbols that get used by
anything that's included in libfips.a, at least on Unix.
Unfortunately, there are platforms that do not support resolving
symbols to things that are already included in the end product (module
in this case) being built; they only support resolving symbols with
what comes next in the linking process.

The offending symbols in this case are FIPS_security_check_enabled,
c_thread_start and ossl_fips_intern_provider_init.

We resolve this by placing provider/fips/fipsprov.c in libfips.a along
with everything else there.  That takes care of the offending symbols.
What remains is to ensure that there is an entry point in an object
file used directly when linking the module, providers/fips/fips_entry.c

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15370)

2 years agoCleanup the missing*.txt files
Matt Caswell [Tue, 18 May 2021 16:39:56 +0000 (17:39 +0100)]
Cleanup the missing*.txt files

One macro existed that was added since 1.1.1 and was undocumented. This
had been added to missingmacro.txt. This is the wrong approach and so
has been removed from there.

There were some entries in missingcrypto.txt that don't exist as functions
at all. There were also some which were in fact documented.

Additionally 2 entries from missingcrypto.txt have been moved to
missingmacro.txt. These entries existed in 1.1.1 and were undocumented. In
master they have been deprecated and compatibility macros for them
implemented. The replacement functions have been documented.

An entry in missingcrypto111.txt was not in alphabetical order (and was
also) duplicated, but the equivalent entry in missingcrypto.txt was in the
correct place. This has been corrected to make comparisons between the files
easier.

Finally a function has been added to missingcrypto111.txt. This function
did exist in 1.1.1 and was undocumented. Its unclear why this wasn't in
missingcrypto111.txt to start with.

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15333)

2 years agoapps: Cleanup useless bio_open_default() calls for key input
Tomas Mraz [Tue, 18 May 2021 15:20:49 +0000 (17:20 +0200)]
apps: Cleanup useless bio_open_default() calls for key input

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/15331)

2 years agoFIPS label CI: Save PR number and use it
Tomas Mraz [Wed, 19 May 2021 07:50:17 +0000 (09:50 +0200)]
FIPS label CI: Save PR number and use it

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15345)

2 years agoClean up the "fips" option to Configure
Matt Caswell [Wed, 19 May 2021 10:46:00 +0000 (11:46 +0100)]
Clean up the "fips" option to Configure

Don't die if someone says "fips" instead of "enable-fips"

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

2 years agoBIO_s_accept.pod: Document port auto-selection feature of BIO_set_accept_port()
Dr. David von Oheimb [Wed, 19 May 2021 15:20:53 +0000 (17:20 +0200)]
BIO_s_accept.pod: Document port auto-selection feature of BIO_set_accept_port()

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15354)

2 years agoEVP_DigestSignInit.pod: Clarification in EVP_DigestSignFinal() parameter 'sig'
Dr. David von Oheimb [Wed, 19 May 2021 14:12:49 +0000 (16:12 +0200)]
EVP_DigestSignInit.pod: Clarification in EVP_DigestSignFinal() parameter 'sig'

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15354)

2 years agoExchange no-siv and no-ec2m between daily and ci workflows
Tomas Mraz [Wed, 19 May 2021 16:21:44 +0000 (18:21 +0200)]
Exchange no-siv and no-ec2m between daily and ci workflows

The no-ec2m with ec enabled is much more likely to show
regressions such as #15170 than the no-siv build.

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15355)

2 years agopem_read_bio_key_legacy: Do not obscure real error if there is one
Tomas Mraz [Wed, 19 May 2021 16:16:21 +0000 (18:16 +0200)]
pem_read_bio_key_legacy: Do not obscure real error if there is one

Fixes #15170

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15355)

2 years agoAdd ordinal numbers to the .num files
Matt Caswell [Thu, 20 May 2021 14:44:10 +0000 (15:44 +0100)]
Add ordinal numbers to the .num files

Now that our next release is expected to be a beta release, "make update"
wants to see ordinal numbers in the .num files.

Run make update to add them.

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

2 years agoapps/cms: Clean up order of options in help output and documentation
Dr. David von Oheimb [Sat, 3 Apr 2021 17:42:39 +0000 (19:42 +0200)]
apps/cms: Clean up order of options in help output and documentation

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15126)

2 years agoAPPS: Allow duplicate entries in options list, marking them OPT_DUP
Dr. David von Oheimb [Mon, 12 Apr 2021 17:00:00 +0000 (19:00 +0200)]
APPS: Allow duplicate entries in options list, marking them OPT_DUP

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15126)

2 years agoAPPS: Allow non-option parameters appear anywhere in list, marking them OPT_PARAM
Dr. David von Oheimb [Sat, 3 Apr 2021 14:03:21 +0000 (16:03 +0200)]
APPS: Allow non-option parameters appear anywhere in list, marking them OPT_PARAM

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15126)

2 years agocheck-format.pl: Rename '*-cmt' options '*-comment'
Dr. David von Oheimb [Fri, 30 Apr 2021 05:30:33 +0000 (07:30 +0200)]
check-format.pl: Rename '*-cmt' options '*-comment'

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agocheck-format.pl: Rename 'one-letter' to 'single-letter', do not report 'l'
Dr. David von Oheimb [Thu, 29 Apr 2021 20:09:55 +0000 (22:09 +0200)]
check-format.pl: Rename 'one-letter' to 'single-letter', do not report 'l'

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agocheck-format.pl: Allow extra space before end-of-line comments unless -e|--eol-cmt...
Dr. David von Oheimb [Thu, 29 Apr 2021 20:02:41 +0000 (22:02 +0200)]
check-format.pl: Allow extra space before end-of-line comments unless -e|--eol-cmt given

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agocheck-format.pl: Replace 'SPC' and 'spc' by 'space' in reports and option names
Dr. David von Oheimb [Thu, 29 Apr 2021 17:43:16 +0000 (19:43 +0200)]
check-format.pl: Replace 'SPC' and 'spc' by 'space' in reports and option names

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agocheck-format.pl: Fix false positive on struct/union/enum in func return type
Dr. David von Oheimb [Thu, 29 Apr 2021 07:41:30 +0000 (09:41 +0200)]
check-format.pl: Fix false positive on struct/union/enum in func return type

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agocheck-format.pl: Fix false positive "no SPC before binary '*'" for '!*'
Dr. David von Oheimb [Thu, 29 Apr 2021 06:05:10 +0000 (08:05 +0200)]
check-format.pl: Fix false positive "no SPC before binary '*'" for '!*'

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agocheck-format.pl: Report needless intermediate multiple SPC only on -e or --extra-spc
Dr. David von Oheimb [Thu, 29 Apr 2021 05:57:36 +0000 (07:57 +0200)]
check-format.pl: Report needless intermediate multiple SPC only on -e or --extra-spc

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agocheck-format.pl: Add check for constant left of comparison operator
Dr. David von Oheimb [Wed, 28 Apr 2021 19:45:07 +0000 (21:45 +0200)]
check-format.pl: Add check for constant left of comparison operator

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15077)

2 years agoVMS: Copy __DECC_INCLUDE_{PROLOGUE,EPILOGUE}.H to more places
Richard Levitte [Wed, 19 May 2021 07:43:13 +0000 (09:43 +0200)]
VMS: Copy __DECC_INCLUDE_{PROLOGUE,EPILOGUE}.H to more places

Every inclusion directory related to a library we build need these two
files.  That signals to any other module using anything from these
libraries what to expect in terms of case sensitivity as well as how
long symbol names are dealt with.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15341)

2 years agoutil/find-doc-nits: Improve helpstr pattern matching
Dr. David von Oheimb [Wed, 19 May 2021 07:38:20 +0000 (09:38 +0200)]
util/find-doc-nits: Improve helpstr pattern matching

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15299)