]> git.ipfire.org Git - thirdparty/openssl.git/log
thirdparty/openssl.git
3 years agoFix detection of ARMv7 and ARM64 CPU features on FreeBSD
Allan Jude [Fri, 19 Nov 2021 15:14:30 +0000 (15:14 +0000)] 
Fix detection of ARMv7 and ARM64 CPU features on FreeBSD

OpenSSL assumes AT_HWCAP = 16 (as on Linux), but on FreeBSD AT_HWCAP = 25
Switch to using AT_HWCAP, and setting it to 16 if it is not defined.

OpenSSL calls elf_auxv_info() with AT_CANARY which returns ENOENT
resulting in all ARM acceleration features being disabled.

CLA: trivial

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17082)

(cherry picked from commit c1dabe26e3e96cdce0ffc929e9677840ad089ba5)

3 years agoDOC: Add a few previously documented functions
Richard Levitte [Sun, 21 Nov 2021 09:37:18 +0000 (10:37 +0100)] 
DOC: Add a few previously documented functions

d2i_X509_bio(), d2i_X509_fp(), i2d_X509_bio(), and i2d_X509_fp()
were documented in OpenSSL 1.0.2.  In a grand unification of the
documentation of (almost) all d2i and i2d functions, these were
dropped, most likely by mistake.

This simply adds them back.

Fixes #17091

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

3 years agoAdd test for EVP_PKEY_sign_init_ex with RSA PSS padding
Tomas Mraz [Fri, 19 Nov 2021 15:54:39 +0000 (16:54 +0100)] 
Add test for EVP_PKEY_sign_init_ex with RSA PSS padding

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

(cherry picked from commit 5321333520b95a4f355916923af6c24dd10ed5dc)

3 years agorsa_signverify_init: Set the PARAMS after key is set
Tomas Mraz [Fri, 19 Nov 2021 14:16:53 +0000 (15:16 +0100)] 
rsa_signverify_init: Set the PARAMS after key is set

Also, default to unrestricted pss parameters until the key is set.

Fixes #17075

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

(cherry picked from commit eaae5d69eb5a8cd9c054b23cc388397cbb4ffb98)

3 years agoDOC: OSSL_PARAM_{set,get,construct}_BN() currently only supports nonnegative numbers
Richard Levitte [Sun, 21 Nov 2021 08:48:05 +0000 (09:48 +0100)] 
DOC: OSSL_PARAM_{set,get,construct}_BN() currently only supports nonnegative numbers

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

(cherry picked from commit b33fb68a3230b8fc87f6663212ac3ffae0b361c5)

3 years agoMake OSSL_PARAM_BLD_push_BN{,_pad}() return an error on negative numbers
Richard Levitte [Fri, 19 Nov 2021 12:18:34 +0000 (13:18 +0100)] 
Make OSSL_PARAM_BLD_push_BN{,_pad}() return an error on negative numbers

Adding documentation to that fact as well.

Fixes #17070

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

(cherry picked from commit db65eabefe76e44818ff8bd19c68990e7dcc70d3)

3 years agoAdd a test case for duplicate engine loading
Bernd Edlinger [Fri, 19 Nov 2021 15:38:55 +0000 (16:38 +0100)] 
Add a test case for duplicate engine loading

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/17073)

(cherry picked from commit 2595eef82c2b67ea75cc3368529078b643a1ecb6)

3 years agoAvoid loading of a dynamic engine twice
Bernd Edlinger [Fri, 19 Nov 2021 10:33:34 +0000 (11:33 +0100)] 
Avoid loading of a dynamic engine twice

Use the address of the bind function as a DYNAMIC_ID,
since the true name of the engine is not known
before the bind function returns,
but invoking the bind function before the engine
is unloaded results in memory corruption.

Fixes #17023

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/17073)

(cherry picked from commit e2571e02d2b0cd83ed1c79d384fe941f27e603c0)

3 years agoSSL_export_keying_material: fix return check
Peiwei Hu [Sun, 14 Nov 2021 16:27:31 +0000 (00:27 +0800)] 
SSL_export_keying_material: fix return check

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

(cherry picked from commit 40649e36c4c0c9438f62e1bf2ccb983f6854c662)

3 years agoBIO_set_indent: fix return check
Peiwei Hu [Sun, 14 Nov 2021 15:46:47 +0000 (23:46 +0800)] 
BIO_set_indent: fix return check

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

(cherry picked from commit a9ed63f1d1d8993a8b30fc978ce09674f97f061d)

3 years agoBIO_set_prefix: fix return check
Peiwei Hu [Sun, 14 Nov 2021 15:45:39 +0000 (23:45 +0800)] 
BIO_set_prefix: fix return check

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

(cherry picked from commit ac6568ecc6050bc526adc6a7245835fd95d8dfed)

3 years agoEVP_RAND_generate: fix return check
Peiwei Hu [Sun, 14 Nov 2021 15:16:57 +0000 (23:16 +0800)] 
EVP_RAND_generate: fix return check

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

(cherry picked from commit a8f4cdd70c9d9ebe4553d7a72c67f73eaf0c169d)

3 years agoasn1_item_embed_d2i: fix th return check
Peiwei Hu [Sun, 14 Nov 2021 15:00:00 +0000 (23:00 +0800)] 
asn1_item_embed_d2i: fix th return check

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

(cherry picked from commit 7f608e4b1d9473258445144ba66216fb0e63aebe)

3 years agoTXT_DB_write: fix the return check
Peiwei Hu [Sun, 14 Nov 2021 14:56:24 +0000 (22:56 +0800)] 
TXT_DB_write: fix the return check

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

(cherry picked from commit aba9943fef8dcc8416ac9a219c97c616c1fd6344)

3 years agoFix EVP_PKEY_decrypt return check
Peiwei Hu [Sun, 14 Nov 2021 09:57:57 +0000 (17:57 +0800)] 
Fix EVP_PKEY_decrypt return check

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

(cherry picked from commit 0650ac437b529274aca094c516a5a0127bbaf48c)

3 years agoossl_do_blob_header: fix return check
Peiwei Hu [Sun, 14 Nov 2021 09:15:11 +0000 (17:15 +0800)] 
ossl_do_blob_header: fix return check

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

(cherry picked from commit 546b9f6b5cf6d0fde60aa37084eec1bb7d0fbc72)

3 years agoBIO_gets: fix the incomplete return check
Peiwei Hu [Sun, 14 Nov 2021 08:55:45 +0000 (16:55 +0800)] 
BIO_gets: fix the incomplete return check

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

(cherry picked from commit 7264068a15e7c4955efa25753430595a45caa16f)

3 years ago02-test_errstr.t: print errorcodes in hex (rather than decimal) format
Dr. David von Oheimb [Fri, 19 Nov 2021 10:12:09 +0000 (11:12 +0100)] 
02-test_errstr.t: print errorcodes in hex (rather than decimal) format

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

3 years agoMake ERR_str_reasons in err.c consistent again with err.h
Dr. David von Oheimb [Wed, 17 Nov 2021 18:05:21 +0000 (19:05 +0100)] 
Make ERR_str_reasons in err.c consistent again with err.h

Fixes printing generic reason strings, e.g., 'reason(524550)' vs. 'passed an invalid argument'

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

3 years agoHTTP client: workaround for #16028 (BIO_gets not supported by connect and SSL BIOs)
Dr. David von Oheimb [Thu, 18 Nov 2021 19:38:55 +0000 (20:38 +0100)] 
HTTP client: workaround for #16028 (BIO_gets not supported by connect and SSL BIOs)

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

3 years agoFix the return check of OBJ_obj2txt
PW Hu [Wed, 10 Nov 2021 04:39:54 +0000 (12:39 +0800)] 
Fix the return check of OBJ_obj2txt

Also update OBJ_nid2obj.pod to document the possible return values.

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

(cherry picked from commit 2349d7ba57c9327290df6f7bc18b7f0c3976ca9e)

3 years agod2i_PublicKey: Make it work with EC parameters in a provided key
Tomas Mraz [Thu, 18 Nov 2021 19:09:57 +0000 (20:09 +0100)] 
d2i_PublicKey: Make it work with EC parameters in a provided key

Fixes #16989

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

(cherry picked from commit 615a9b8798e6ec58f1b2e1ec08a0f6b3c8cb7f60)

3 years agoperlasm/ppc-xlate.pl: Fix build on OS X
Martin Schwenke [Tue, 9 Nov 2021 11:07:54 +0000 (22:07 +1100)] 
perlasm/ppc-xlate.pl: Fix build on OS X

vsr2vr1() fails on OS X because the main loop doesn't strip the
non-numeric register prefixes for OS X.

Strip any non-numeric prefix (likely just "v") from registers before
doing numeric calculation, then put the prefix back on the result.

Fixes: #16995
Signed-off-by: Martin Schwenke <martin@meltin.net>
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/17026)

(cherry picked from commit e67edf60f2e9be6e5f5465b52d01aa26bf715280)

3 years ago80-test_cmp_http: Make server diagnostics more verbose to aid debugging
Dr. David von Oheimb [Fri, 12 Nov 2021 11:51:44 +0000 (12:51 +0100)] 
80-test_cmp_http: Make server diagnostics more verbose to aid debugging

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

3 years agocmp_server.c: Log received request type before checking details
Dr. David von Oheimb [Fri, 12 Nov 2021 11:48:29 +0000 (12:48 +0100)] 
cmp_server.c: Log received request type before checking details

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

3 years agoFix verbosity of CMP client diagnostics
Dr. David von Oheimb [Mon, 12 Jul 2021 12:17:04 +0000 (14:17 +0200)] 
Fix verbosity of CMP client diagnostics

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

3 years agoAdd documentation for some of the missing environment variables.
Pauli [Tue, 16 Nov 2021 00:31:44 +0000 (10:31 +1000)] 
Add documentation for some of the missing environment variables.

Where document already exists, it has been linked to.

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

(cherry picked from commit 7f6496275157f8e40f544f75a223c2c0dc6b389e)

3 years agoBIO_read_filename: fix return check
Peiwei Hu [Sun, 14 Nov 2021 16:41:21 +0000 (00:41 +0800)] 
BIO_read_filename: fix return check

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/17033)

(cherry picked from commit e3f0362407f6f40e413d6dcb35888514dbaed6f8)

3 years agoEVP_PKEY_keygen_init: fix return check
Peiwei Hu [Sun, 14 Nov 2021 16:05:04 +0000 (00:05 +0800)] 
EVP_PKEY_keygen_init: fix return check

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/17031)

(cherry picked from commit bf4ceeded1497c79e72fba4f9ff15febae58108d)

3 years agoEVP_PKEY_paramgen_init: fix return check
Peiwei Hu [Sun, 14 Nov 2021 15:52:56 +0000 (23:52 +0800)] 
EVP_PKEY_paramgen_init: fix return check

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/17030)

(cherry picked from commit 6e0b05f3008a3f22105fd2bed9314b0bfa381f93)

3 years agoEVP_DigestVerifyFinal: fix test function and invocation
Peiwei Hu [Sun, 14 Nov 2021 14:42:35 +0000 (22:42 +0800)] 
EVP_DigestVerifyFinal: fix test function and invocation

Signed-off-by: Peiwei Hu <jlu.hpw@foxmail.com>
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/17029)

(cherry picked from commit e2e5e72d5aec4d8d633cc5e9930f762da7973ab6)

3 years agoEVP_Cipher: fix the incomplete return check
Peiwei Hu [Sun, 14 Nov 2021 08:39:42 +0000 (16:39 +0800)] 
EVP_Cipher: fix the incomplete return check

Signed-off-by: Peiwei Hu <jlu.hpw@foxmail.com>
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/17027)

(cherry picked from commit 6d774732517f1d63b7999c5691fc0bf046023faf)

3 years agoAdd a test for creating ECX private keys that are too short
Matt Caswell [Mon, 15 Nov 2021 12:24:05 +0000 (12:24 +0000)] 
Add a test for creating ECX private keys that are too short

We expect attempting to create such short keys to fail

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

(cherry picked from commit 8c08c8b37cab0eb66ca74fc65a40af3ccec77c00)

3 years agoDon't create an ECX key with short keys
Matt Caswell [Mon, 15 Nov 2021 12:14:03 +0000 (12:14 +0000)] 
Don't create an ECX key with short keys

If an ECX key is created and the private key is too short, a fromdata
call would create the key, and then later detect the error and report it
after freeing the key. However freeing the key was calling
OPENSSL_secure_clear_free() and assuming that the private key was of the
correct length. If it was actually too short this will write over memory
that it shouldn't.

Fixes #17017

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

(cherry picked from commit 50938aec35fd57fb3bec707ead2eee381fcfaf04)

3 years agoRAND_bytes_ex: fix return check
Peiwei Hu [Sun, 14 Nov 2021 16:20:32 +0000 (00:20 +0800)] 
RAND_bytes_ex: fix return check

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

(cherry picked from commit c9007bda79291179ed2df31b3dfd9f1311102847)

3 years agoClarify the PEM docs
Matt Caswell [Thu, 11 Nov 2021 12:09:15 +0000 (12:09 +0000)] 
Clarify the PEM docs

Make it clear how the existing PEM functions can be used to create an
X509, X509_REQ or X509_CRL object with an associated libctx/propq.

Fixes #16966

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

(cherry picked from commit e48fe798409eb22f067f635c62b9a72e18cd4347)

3 years agoReset the rwstate before calling ASYNC_start_job()
Matt Caswell [Thu, 11 Nov 2021 16:59:43 +0000 (16:59 +0000)] 
Reset the rwstate before calling ASYNC_start_job()

If an async job pauses while processing a TLS connection then the
rwstate gets set to SSL_ASYNC_PAUSED. When resuming the job we should
reset the rwstate back to SSL_NOTHING. In fact we can do this
unconditionally since if we're about to call ASYNC_start_job() then either
we are about to start the async job for the first time (in which case the
rwstate should already by SSL_NOTHING), or we are restarting it after a
pause (in which case reseting it to SSL_NOTHING is the correct action).

Fixes #16809

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

(cherry picked from commit 07f620e3acf0dd76a3a03ada9911c544aa483aa7)

3 years agoExtend the test_multi_load() test
Matt Caswell [Tue, 9 Nov 2021 18:31:24 +0000 (18:31 +0000)] 
Extend the test_multi_load() test

Run more threads and load the legacy provider (which uses a child lib ctx)
in order to hit more possible thread failures.

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

3 years agoHold the flag_lock when calling child callbacks
Matt Caswell [Tue, 9 Nov 2021 16:23:34 +0000 (16:23 +0000)] 
Hold the flag_lock when calling child callbacks

Not holding the flag lock when creating/removing child providers can
confuse the activation counts if the parent provider is loaded/unloaded
at the same time.

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

3 years agoUse a write lock during ossl_provider_find()
Matt Caswell [Tue, 9 Nov 2021 14:32:14 +0000 (14:32 +0000)] 
Use a write lock during ossl_provider_find()

A "find" operation on a stack can end up sorting the underlying stack. In
this case it is necessary to use a "write" lock to synchronise access to
the stack across multiple threads.

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

3 years agoCorrectly activate the provider in OSSL_PROVIDER_try_load
Matt Caswell [Tue, 9 Nov 2021 14:20:31 +0000 (14:20 +0000)] 
Correctly activate the provider in OSSL_PROVIDER_try_load

If during OSSL_PROVIDER_try_load() we attempt to load a provider, but
adding to the store gives back a different provider, then we need to
ensure this different provider has its activation count increased.

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

3 years agoStop receiving child callbacks in a child libctx when appropriate
Matt Caswell [Tue, 9 Nov 2021 13:48:31 +0000 (13:48 +0000)] 
Stop receiving child callbacks in a child libctx when appropriate

We should stop receiving child callbacks if we're about to free up
the child libctx. Otherwise we can get callbacks when the libctx is half
freed up.

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

3 years agoDon't bail out during provider deactivation if we don't have store
Matt Caswell [Tue, 9 Nov 2021 11:53:27 +0000 (11:53 +0000)] 
Don't bail out during provider deactivation if we don't have store

A provider may have been activated, but failed when being added to
the store. At this point we still need to deactivate it.

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

3 years agoDon't try and do ossl_provider_find in ossl_provider_new
Matt Caswell [Mon, 8 Nov 2021 16:47:38 +0000 (16:47 +0000)] 
Don't try and do ossl_provider_find in ossl_provider_new

We leave it to the caller to confirm that the provider does not exist
in the store. If it does exist then later adding it to the store will
fail.

It is possible that the provider could be added to the store in
between the caller checking, and the caller calling ossl_provider_new.
We leave it to the caller to properly handle the failure when it
attempts to add the provider to the store. This is simpler than
having ossl_provider_new try to handle it.

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

3 years agoRemove the isinited variable from child_prov_globals
Matt Caswell [Mon, 8 Nov 2021 16:30:43 +0000 (16:30 +0000)] 
Remove the isinited variable from child_prov_globals

This variable might have made sense at some point but it not longer does
so. It was being used to check whether we are still initing or not. If we
are still initing then the assumption was that we already hold the lock.
That assumption was untrue. We need to always take the lock.

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

3 years agoAvoid a race in init_thread_stop()
Matt Caswell [Fri, 5 Nov 2021 14:43:01 +0000 (14:43 +0000)] 
Avoid a race in init_thread_stop()

init_thread_stop() is called when a thread is stopping. It calls all
the callbacks that need to know about the demise of this thread. However,
the list of callbacks is also available globally and may be updated by
other threads so we need to make sure we use the right lock.

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

3 years agoDon't attempt to deactive child providers if we don't need to
Matt Caswell [Fri, 5 Nov 2021 13:42:40 +0000 (13:42 +0000)] 
Don't attempt to deactive child providers if we don't need to

If a provider doesn't have any child providers then there is no need
to attempt to remove them - so we should not do so. This removes some
potentialy thread races.

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

3 years agoDon't write to the globals ossl_property_true and ossl_property_false
Matt Caswell [Fri, 5 Nov 2021 13:29:41 +0000 (13:29 +0000)] 
Don't write to the globals ossl_property_true and ossl_property_false

These global variables were previously overwritten with the same value
every time we created a new OSSL_LIB_CTX. Instead we preinitialise them
with the correct values, and then confirm that settings for each
OSSL_LIB_CTX agree with the preinitialised values.

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

3 years agoAdd null digest implementation to the default provider
Tomas Mraz [Fri, 12 Nov 2021 15:31:35 +0000 (16:31 +0100)] 
Add null digest implementation to the default provider

This is necessary to keep compatibility with 1.1.1.

Fixes #16660

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

(cherry picked from commit bef9b48e5071cdd2b41a4f486d1bcb5e14b2a5c3)

3 years agodoc: Document outcome of multiple digestsign/digestverify calls
Tomas Mraz [Fri, 5 Nov 2021 13:14:45 +0000 (14:14 +0100)] 
doc: Document outcome of multiple digestsign/digestverify calls

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

(cherry picked from commit 3641f04fb06e9679a67da113bab65e5f1bb5e9ba)

3 years agoevp_extra_test: Add SIPHASH MAC digestsign test with reinitialization
Tomas Mraz [Fri, 5 Nov 2021 13:04:25 +0000 (14:04 +0100)] 
evp_extra_test: Add SIPHASH MAC digestsign test with reinitialization

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

(cherry picked from commit 8cbfc4f67b4e97d423ab4784dbbb54d454c6342a)

3 years agoproviders: Allow possible reinitialization in all signature algorithms
Tomas Mraz [Thu, 4 Nov 2021 14:38:51 +0000 (15:38 +0100)] 
providers: Allow possible reinitialization in all signature algorithms

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

(cherry picked from commit 3ffd23e9529d725903bc97fd45489a77b831876f)

3 years agotest: Add testing of reinitialization via EVP_DigestSignInit()
Tomas Mraz [Thu, 4 Nov 2021 14:35:40 +0000 (15:35 +0100)] 
test: Add testing of reinitialization via EVP_DigestSignInit()

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

(cherry picked from commit 816f72d08834ee35ba2615f624b4a29f2717d1c7)

3 years agodo_sigver_init: Allow reinitialization of an existing operation.
Tomas Mraz [Thu, 4 Nov 2021 10:06:26 +0000 (11:06 +0100)] 
do_sigver_init: Allow reinitialization of an existing operation.

Fixes #16936

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

(cherry picked from commit ae6b68b761b9c5f30897747487ea943ccfab53ba)

3 years agoFix return value checking of BN_check_prime invocations
PW Hu [Fri, 5 Nov 2021 09:33:32 +0000 (17:33 +0800)] 
Fix return value checking of BN_check_prime invocations

Negative return value indicates an error so we bail out.

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

(cherry picked from commit 680827a15f12c3b37a6335fcb992555cf300730e)

3 years agoAdd return value NULL checks that were missing
Pauli [Wed, 10 Nov 2021 20:49:49 +0000 (06:49 +1000)] 
Add return value NULL checks that were missing

Issues located by Brian Carpenter of Geeknik's Farm.

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

(cherry picked from commit ed5b26ce0b34ec00bdd53d15854a22bccbb4d415)

3 years agoFix sigsize usage in apps/speed.c
Xiaofei Bai [Wed, 3 Nov 2021 03:28:23 +0000 (03:28 +0000)] 
Fix sigsize usage in apps/speed.c

In a recent upstream change
(43da9a14f0e73f42f28ae34219929b44df5d1a11)
the parameter sigsize become a read/write input in
EVP_PKEY_sign(), and after signing, sigsize will be overwritten with
the actual size and used in the verify step. As the speed program
calls EVP_PKEY_sign() on the same context repeatedly, sigsize value is
no longer the initial available size, and may fail in later buffer
size checks.

This fix adds a new buflen member in struct loopargs (which is only
used within apps/speed.c), to save available buffer size and
to be used as sigsize input in EVP_PKEY_sign() calls.
Sigsize still contains the signature size for the verify step.

Signed-off-by: Xiaofei Bai <xiaofei.bai@arm.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16991)

(cherry picked from commit e7414634a59aa61c7917193a31382ced95d40eeb)

3 years agoFix: invoking X509_self_signed improperly
PW Hu [Fri, 5 Nov 2021 09:56:50 +0000 (17:56 +0800)] 
Fix: invoking X509_self_signed improperly

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

(cherry picked from commit 64c428c35053a101a452c42d5d0a9a8342493606)

3 years agoFix DER encoder implementations for output structures "EC" and "SM2"
Richard Levitte [Sun, 7 Nov 2021 05:18:16 +0000 (06:18 +0100)] 
Fix DER encoder implementations for output structures "EC" and "SM2"

These DER encoder implementations are supposed to be aliases for the
"type-specific" output structure, but were made different in so far
that they would output a "type specific" public key, which turns out
to be garbage (it called i2o_ECPublicKey()).  The "type-specific"
output structure doesn't support that, and shouldn't.

Fixes #16977

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

3 years agoFix: invoking x509_name_cannon improperly
PW Hu [Fri, 5 Nov 2021 09:16:03 +0000 (17:16 +0800)] 
Fix: invoking x509_name_cannon improperly

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

(cherry picked from commit 09235289c377ff998964bb6b074bb2a3ad768fd2)

3 years agoAPPS/x509: Fix generation of AKID via v2i_AUTHORITY_KEYID()
Dr. David von Oheimb [Fri, 27 Aug 2021 09:34:23 +0000 (11:34 +0200)] 
APPS/x509: Fix generation of AKID via v2i_AUTHORITY_KEYID()

Fixes #16300

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

(cherry picked from commit 9bf1061c44c81059102cd4749f6078b6ce71da9d)

3 years agoKTLS: use EVP_CIPHER_is_a instead of nid
Tianjia Zhang [Thu, 4 Nov 2021 07:42:46 +0000 (15:42 +0800)] 
KTLS: use EVP_CIPHER_is_a instead of nid

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Yang <kaishen.yy@antfin.com>
(Merged from https://github.com/openssl/openssl/pull/16963)

3 years agoFix errors in EVP_PKEY_fromdata examples
Matt Caswell [Fri, 5 Nov 2021 08:43:10 +0000 (08:43 +0000)] 
Fix errors in EVP_PKEY_fromdata examples

The EVP_PKEY_fromdata man page has some code examples with various
errors in them. This fixes those errors.

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

(cherry picked from commit 4ce64ed79d301939c7f2844a9e5e5fdd2033605f)

3 years agoFix data race setting `default_DSO_meth`
Pauli [Fri, 5 Nov 2021 03:10:10 +0000 (13:10 +1000)] 
Fix data race setting `default_DSO_meth`

The global variable `default_DSO_meth` was potentially set multiple times by
different threads.  It turns out that it could only be set to a single value
so the race is harmless but still better avoided.  The fix here simply removes
the global and accesses the value it was set to via the `DSO_METHOD_openssl()`
call.

Problem discovered via #16970, but this does not resolve that issue because
there are other concerns.

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

(cherry picked from commit e6a10b074e90f1ce3d8e9ae0ca740a835ff29bb9)

3 years agoAddress Coverity 1493362 resource leak
Pauli [Thu, 4 Nov 2021 05:05:59 +0000 (15:05 +1000)] 
Address Coverity 1493362 resource leak

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

(cherry picked from commit 1b4d9967a24154f1dc00f471eb843203ec7bb7d4)

3 years agoAddress coverity 1493382 argument cannot be negative
Pauli [Thu, 4 Nov 2021 02:52:00 +0000 (12:52 +1000)] 
Address coverity 1493382 argument cannot be negative

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

(cherry picked from commit fe4125382301201e42a3251544cda429bba0c9d7)

3 years agoAddress Coverity 1493387 Logically dead code
Pauli [Thu, 4 Nov 2021 02:46:58 +0000 (12:46 +1000)] 
Address Coverity 1493387 Logically dead code

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

(cherry picked from commit 182cc644b3a3690bddfecba925486fefa421d6ec)

3 years agoFix coverity 1493364 & 1493375: unchecked return value
Pauli [Thu, 4 Nov 2021 01:59:55 +0000 (11:59 +1000)] 
Fix coverity 1493364 & 1493375: unchecked return value

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

(cherry picked from commit 73a815defe428e42ccc27fdc9d5be507f980278b)

3 years agoFix incorrect return check of BN_bn2binpad
PW Hu [Mon, 1 Nov 2021 07:00:54 +0000 (15:00 +0800)] 
Fix incorrect return check of BN_bn2binpad

Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16942)

(cherry picked from commit 098f2627c8d283a518a6e6e60e7893664c7510e0)

3 years agoavoid a NULL dereference when getting digest
Pauli [Wed, 3 Nov 2021 22:23:32 +0000 (08:23 +1000)] 
avoid a NULL dereference when getting digest

Fixes #16961

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/16969)

(cherry picked from commit ab547fc005307ecf48451638e947cdabca147159)

3 years agoFix tests to check for negative results when calling EVP_PKEY_fromdata_init
slontis [Mon, 11 Oct 2021 02:00:12 +0000 (12:00 +1000)] 
Fix tests to check for negative results when calling EVP_PKEY_fromdata_init

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

(cherry picked from commit 884400d78992d1da1573a3677876b06421b797eb)

3 years agoFix for a segv interrupt that occurs when fix_dh_rfc5114 is called with
Phil Mesnier [Wed, 27 Oct 2021 09:26:45 +0000 (04:26 -0500)] 
Fix for a segv interrupt that occurs when fix_dh_rfc5114 is called with
ctx->p2 being a null pointer.

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

3 years agoAdd unit tests for weak key and key parity checks
Pauli [Wed, 3 Nov 2021 00:34:36 +0000 (10:34 +1000)] 
Add unit tests for weak key and key parity checks

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

(cherry picked from commit cc350c882218b1053a636d01eb36573b3e7b20c2)

3 years agoConvert the weak key and key parity tests to be constant time.
Pauli [Wed, 3 Nov 2021 00:33:06 +0000 (10:33 +1000)] 
Convert the weak key and key parity tests to be constant time.

Fixes #16944
Fixes #16859

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

(cherry picked from commit 8db9d07508e201d95e40f8006ede3a76494bbef3)

3 years agoFix a memory leak in ssl_create_cipher_list
Bernd Edlinger [Wed, 3 Nov 2021 08:19:39 +0000 (09:19 +0100)] 
Fix a memory leak in ssl_create_cipher_list

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

(cherry picked from commit 3a069c1b0b4857b838186aeb55378195dfa50823)

3 years agoFix a memory leak in tls_parse_stoc_key_share
Bernd Edlinger [Wed, 3 Nov 2021 08:40:59 +0000 (09:40 +0100)] 
Fix a memory leak in tls_parse_stoc_key_share

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

(cherry picked from commit b3c34401c088dc247b8b54ea812e7cdde6caf361)

3 years agoFix builds on Armv8 systems without AArch64
Tom Cosgrove [Tue, 2 Nov 2021 15:26:21 +0000 (15:26 +0000)] 
Fix builds on Armv8 systems without AArch64

This fixes "undefined reference to `aes_gcm_dec_128_kernel' in function
`armv8_aes_gcm_decrypt'" and similar

Fixes #16949

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

(cherry picked from commit 3841d0f6f02e1ad3a54beabf1d5395bd1c383254)

3 years agocheck the return value of BN_new() and BN_dup()
x2018 [Mon, 1 Nov 2021 12:36:54 +0000 (20:36 +0800)] 
check the return value of BN_new() and BN_dup()

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

(cherry picked from commit d99004fe5de934120765d342586f08d22131b8ed)

3 years agoDES_set_key(): return values as DES_set_key_checked() but always set
Tomas Mraz [Mon, 1 Nov 2021 07:39:21 +0000 (08:39 +0100)] 
DES_set_key(): return values as DES_set_key_checked() but always set

This avoids using accidentally uninitialized key schedule in
applications that use DES_set_key() not expecting it to check the key
which is the default on OpenSSL <= 1.1.1

Fixes #16859

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

(cherry picked from commit 6450ea27ffdc22194f27e90796ce5538af2d81e2)

3 years agoAdd missing check according to SM2 Digital Signature generation algorithm
Mingjun.Yang [Thu, 28 Oct 2021 02:14:55 +0000 (10:14 +0800)] 
Add missing check according to SM2 Digital Signature generation algorithm

The process should be conforming to clause 6.1 and 6.2 of GMT 0003.2-2012.

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

(cherry picked from commit e81c81c9af8a5d22658110d2dc753582eb87a58e)

3 years agoupdate doc: BN_bn2lebinpad() and BN_bn2nativepad()
PW Hu [Mon, 1 Nov 2021 08:40:27 +0000 (16:40 +0800)] 
update doc: BN_bn2lebinpad() and BN_bn2nativepad()

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

(cherry picked from commit aedc5a819ee3f5267a7ec5c795b97481a1c63dc6)

3 years agoFix incorrect return check of BN_bn2nativepad
PW Hu [Mon, 1 Nov 2021 07:08:51 +0000 (15:08 +0800)] 
Fix incorrect return check of BN_bn2nativepad

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

(cherry picked from commit 944fcfc69d16dfd20decdd9cd105436f0043dbe0)

3 years agoRemove redundant RAND_get0_private() call
Pauli [Tue, 26 Oct 2021 22:22:09 +0000 (08:22 +1000)] 
Remove redundant RAND_get0_private() call

The test called this twice which doesn't hurt but isn't ideal.

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

(cherry picked from commit a87c3247ca641f2593391bf44d47e3dccc7f8d73)

3 years agoFix return value error in doc, and an error test
PW Hu [Fri, 22 Oct 2021 10:10:17 +0000 (18:10 +0800)] 
Fix return value error in doc, and an error test

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

[edited to remove end of line whitespace and wrap lines to eighty columns]

(cherry picked from commit 8b7d7789dc4ea0de11331cb4045bcb03ab0864fc)

3 years agoConfigurations/windows-makefile.tmpl: obj2bin(): use the resource file too
Richard Levitte [Thu, 21 Oct 2021 07:35:07 +0000 (09:35 +0200)] 
Configurations/windows-makefile.tmpl: obj2bin(): use the resource file too

When remaking how programs were linked, the variable `$ress` was forgotten.
Unfortunately, perl treats this with silence.

Fixes #16870
Fixes #16667

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

(cherry picked from commit 01451721afebabd0b7bdcd4cb3a183c9b590d266)

3 years agoFix a gcc 11.2.0 warning
Matt Caswell [Fri, 22 Oct 2021 09:17:14 +0000 (10:17 +0100)] 
Fix a gcc 11.2.0 warning

gcc 11.2.0 is the default on Ubuntu 21.10. It emits a (spurious) warning
when compiling test/packettest.c, which causes --strict-warnings builds
to fail. A simple fix avoids the warning.

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/16887)

(cherry picked from commit 37467b2752f75ce80437120f704452982b7c1998)

3 years agoClarify the documentation for the "byname" functions
Matt Caswell [Fri, 22 Oct 2021 14:34:19 +0000 (15:34 +0100)] 
Clarify the documentation for the "byname" functions

Make it clear that the cipher/digest objects returned from
EVP_get_cipherbyname() and EVP_get_digestbyname() functions have no
associated implementation fetched from a provider.

Fixes #16864

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

(cherry picked from commit 971dbab4ad20193c27e8c3865e92e8f487b89334)

3 years agotest: fetching proper signature provider for non-exportable keys
Tomas Mraz [Wed, 6 Oct 2021 17:21:53 +0000 (19:21 +0200)] 
test: fetching proper signature provider for non-exportable keys

Co-author: Selva Nair <selva.nair@gmail.com>

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

(cherry picked from commit 051228353a9842eede597294603cc06a55e3a22c)

3 years agoCORE: Encure that cached fetches can be done per provider
Richard Levitte [Mon, 4 Oct 2021 13:33:37 +0000 (15:33 +0200)] 
CORE: Encure that cached fetches can be done per provider

This mostly entails passing around a provider pointer, and handling
queries that includes a pointer to a provider, where NULL means "any".

This also means that there's a need to pass the provider pointer, not
just down to the cache functions, but also be able to get it from
ossl_method_store_fetch().  To this end, that function's OSSL_PROVIDER
pointer argument is modified to be a pointer reference, so the
function can answer back what provider the method comes from.

Test added.

Fixes #16614

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

(cherry picked from commit dc010ca6ec01d313a84c3c4b040232655a1772ad)

3 years agoEVP: For all operations that use an EVP_PKEY, check that there is one
Richard Levitte [Fri, 1 Oct 2021 13:02:15 +0000 (15:02 +0200)] 
EVP: For all operations that use an EVP_PKEY, check that there is one

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

(cherry picked from commit 433e13455ede1a39d415b690b8a564b4f36b8dee)

3 years agoEVP: Allow a fallback for operations that work with an EVP_PKEY
Richard Levitte [Fri, 1 Oct 2021 12:05:02 +0000 (14:05 +0200)] 
EVP: Allow a fallback for operations that work with an EVP_PKEY

Functions like EVP_PKEY_sign_init() do an implicit fetch of the
operation implementation (EVP_SIGNATURE in this case), then get the
KEYMGMT from the same provider, and tries to export the key there if
necessary.

If an export of the key isn't possible (because the provider that
holds the key is an HSM and therefore can't export), we would simply
fail without looking any further.

This change modifies the behaviour a bit by trying a second fetch of
the operation implementation, but specifically from the provider of
the EVP_PKEY that's being used.  This is done with the same properties
that were used with the initial operation implementation fetch, and
should therefore be safe, allowing only what those properties allow.

Fixes #16614

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

(cherry picked from commit 839ffdd11cd48d329a1d89565d62e0be082f9d08)

3 years agoEVP: Add internal functions to fetch type specific EVP methods from provider
Richard Levitte [Fri, 1 Oct 2021 10:06:52 +0000 (12:06 +0200)] 
EVP: Add internal functions to fetch type specific EVP methods from provider

Added functions:

evp_signature_fetch_from_prov(), evp_asym_cipher_fetch_from_prov(),
evp_keyexch_fetch_from_prov(), evp_kem_fetch_from_prov()

These are all like the public conterparts, except they all take a
provider instead of a library context as first argument.

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

(cherry picked from commit ff7781462dd04ab99c159136b47672252bad7fa8)

3 years agoEVP: Reverse the fetch logic in all pkey using functionality
Richard Levitte [Fri, 1 Oct 2021 06:57:03 +0000 (08:57 +0200)] 
EVP: Reverse the fetch logic in all pkey using functionality

In all initializing functions for functionality that use an EVP_PKEY, the
coded logic was to find an KEYMGMT implementation first, and then try to
find the operation method (for example, SIGNATURE implementation) in the
same provider.

This implies that in providers where there is a KEYMGMT implementation,
there must also be a SIGNATURE implementation, along with a KEYEXCH,
ASYM_CIPHER, etc implementation.

The intended design was, however, the opposite implication, i.e. that
where there is a SIGNATURE implementation, there must also be KEYMGMT.

This change reverses the logic of the code to be closer to the intended
design.

There is a consequence; we now use the query_operation_name function from
the KEYMGMT of the EVP_PKEY given by the EVP_PKEY_CTX (ultimately given by
the application).  Previously, we used the query_operation_name function
from the KEYMGMT found alongside the SIGNATURE implementation.

Another minor consequence is that the |keymgmt| field in EVP_PKEY_CTX
is now always a reference to the KEYMGMT of the |pkey| field if that
one is given (|pkey| isn't NULL) and is provided (|pkey->keymgmt|
isn't NULL).

Fixes #16614

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

(cherry picked from commit 5246183e7a9f9fb1819d50ab40e2fecc68235e0d)

3 years agoEVP: Add evp_keymgmt_fetch_from_prov()
Richard Levitte [Thu, 30 Sep 2021 15:40:16 +0000 (17:40 +0200)] 
EVP: Add evp_keymgmt_fetch_from_prov()

This is an internal function to fetch a keymgmt method from a specific
provider.

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

(cherry picked from commit 33561e0d5b89a06d1c03b952196d008b5014914a)

3 years agoEVP: Add the internal function evp_generic_fetch_from_prov()
Richard Levitte [Thu, 30 Sep 2021 07:44:10 +0000 (09:44 +0200)] 
EVP: Add the internal function evp_generic_fetch_from_prov()

This function leverages the generic possibility to fetch EVP methods
from a specific provider.

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

(cherry picked from commit 2fd3392c8f4e2f3481fa4d7e6a683dc19c6c1cd2)

3 years agoCORE: add a provider argument to ossl_method_construct()
Richard Levitte [Thu, 30 Sep 2021 07:32:57 +0000 (09:32 +0200)] 
CORE: add a provider argument to ossl_method_construct()

This makes it possible to limit the search of methods to that
particular provider.  This uses already available possibilities in
ossl_algorithm_do_all().

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

(cherry picked from commit cfce50f791511c8fee7dec90c57f02d9410d039f)

3 years agotest/ssl_old_test.c: Do NULL pointer check before its use
Jiasheng Jiang [Tue, 26 Oct 2021 02:40:20 +0000 (02:40 +0000)] 
test/ssl_old_test.c: Do NULL pointer check before its use

In openssl-3.0.0 and system provided, it is not reasonable to
check null pointer after use. The order was accidentally reversed.
Therefore, it is better to correct it.

CLA: trivial

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

(cherry picked from commit 8c590a219fe30b97cfde2efdd8ea94c03a90a8c6)

3 years agofree the Post-Handshake Auth digest when there is an error saving the digest
x2018 [Tue, 26 Oct 2021 03:31:11 +0000 (11:31 +0800)] 
free the Post-Handshake Auth digest when there is an error saving the digest

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

(cherry picked from commit 963eb12dbd551df71d7eb054e095c1b85f4aaab9)

3 years agoTest that a key is usable after an EVP_PKEY_fromdata call
Matt Caswell [Mon, 25 Oct 2021 13:34:38 +0000 (14:34 +0100)] 
Test that a key is usable after an EVP_PKEY_fromdata call

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

(cherry picked from commit fd19fc4c2726b08282b8db15f9bace2f04712498)

3 years agoDon't crash encoding a public key with no public key value
Matt Caswell [Mon, 25 Oct 2021 12:07:01 +0000 (13:07 +0100)] 
Don't crash encoding a public key with no public key value

If asked to encode an EC_KEY public key, but no public key value is present
in the structure, we should fail rather than crash.

Fixes the crash seen here:
https://mta.openssl.org/pipermail/openssl-users/2021-October/014479.html

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

(cherry picked from commit 6187d9eac2738e873d23c0c91f9769333b1bb6af)