openssl.git
3 years agoAdd AES_CBC_CTS ciphers to providers
Shane Lontis [Mon, 8 Jun 2020 04:33:27 +0000 (14:33 +1000)]
Add AES_CBC_CTS ciphers to providers

Added Algorithm names AES-128-CBC-CTS, AES-192-CBC-CTS and AES-256-CBC-CTS.
CS1, CS2 and CS3 variants are supported.
Only single shot updates are supported.
The cipher returns the mode EVP_CIPH_CBC_MODE (Internally it shares the aes_cbc cipher code). This
would allow existing code that uses AES_CBC to switch to the CTS variant without breaking code that
tests for this mode. Because it shares the aes_cbc code the cts128.c functions could not be used directly.
The cipher returns the flag EVP_CIPH_FLAG_CTS.
EVP_CIPH_FLAG_FIPS & EVP_CIPH_FLAG_NON_FIPS_ALLOW have been deprecated.

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

3 years agoEnable WinCE build without deceiving _MSC_VER.
aSoujyuTanaka [Sat, 11 Apr 2020 19:10:57 +0000 (04:10 +0900)]
Enable WinCE build without deceiving _MSC_VER.

Reviewed-by: Mark J. Cox <mark@awe.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11526)

3 years agoTo generate makefile with correct parameters for WinCE.
aSoujyuTanaka [Sat, 11 Apr 2020 19:00:17 +0000 (04:00 +0900)]
To generate makefile with correct parameters for WinCE.

Reviewed-by: Mark J. Cox <mark@awe.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11526)

3 years agoDisable optimiization of BN_num_bits_word() for VS2005 ARM compiler due to
aSoujyuTanaka [Sat, 11 Apr 2020 18:58:44 +0000 (03:58 +0900)]
Disable optimiization of BN_num_bits_word() for VS2005 ARM compiler due to
its miscompilation of the function.
https://mta.openssl.org/pipermail/openssl-users/2018-August/008465.html

Reviewed-by: Mark J. Cox <mark@awe.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11526)

3 years agoChanged uintptr_t to size_t. WinCE6 doesn't seem it have the definition.
aSoujyuTanaka [Sat, 11 Apr 2020 18:58:02 +0000 (03:58 +0900)]
Changed uintptr_t to size_t. WinCE6 doesn't seem it have the definition.

Reviewed-by: Mark J. Cox <mark@awe.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11526)

3 years agoDRBG: rename the DRBG taxonomy.
Pauli [Sat, 4 Jul 2020 00:48:19 +0000 (10:48 +1000)]
DRBG: rename the DRBG taxonomy.

The existing wording didn't capture the reality of the default setup, this new
nomenclature attempts to improve the situation.

Reviewed-by: Mark J. Cox <mark@awe.com>
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/12366)

3 years agoConfigurations: make Makefile tmpl files non-links
Daniel Bevenius [Thu, 9 Jul 2020 05:26:38 +0000 (07:26 +0200)]
Configurations: make Makefile tmpl files non-links

This commit updates Configurations/README.md and turns the Makefile
templates into non-links.

The motivation for this is that not all template exist in the directory
leading to 404 Not found errors when accessed.

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

3 years ago[test] ectest: check custom generators
Billy Brumley [Tue, 9 Jun 2020 10:16:15 +0000 (13:16 +0300)]
[test] ectest: check custom generators

Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12096)

3 years agoProviderized libssl fallout: cleanup init
Benjamin Kaduk [Thu, 2 Jul 2020 19:14:52 +0000 (12:14 -0700)]
Providerized libssl fallout: cleanup init

Since libssl is entirely using fetched cipher/digest implementations
from providers, we don't need to register the libcrypto cipher/digest
implementations in ossl_init_ssl_base().

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

3 years agoBN: Check endianness in run-time, in BN_native2bn() and BN_bn2nativepad()
Richard Levitte [Thu, 9 Jul 2020 06:40:50 +0000 (08:40 +0200)]
BN: Check endianness in run-time, in BN_native2bn() and BN_bn2nativepad()

The code relied on B_ENDIAN being defined on all big-endian platform,
which turned out to not always be the case.

Fixes #12387

Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/12390)

3 years agoAdd and use internal header that implements endianness check
Richard Levitte [Thu, 9 Jul 2020 06:37:46 +0000 (08:37 +0200)]
Add and use internal header that implements endianness check

This moves test/ossl_test_endian.h to include/internal/endian.h and
thereby makes the macros in there our standard way to check endianness
in run-time.

Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
(Merged from https://github.com/openssl/openssl/pull/12390)

3 years agoDOC: install documentation without execution permissions.
Richard Levitte [Mon, 6 Jul 2020 08:35:18 +0000 (10:35 +0200)]
DOC: install documentation without execution permissions.

Fixes #12350

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

3 years agoocsp.h: Fix backward compatibility decl for OCSP_parse_url() by including http.h
Dr. David von Oheimb [Thu, 9 Jul 2020 06:00:59 +0000 (08:00 +0200)]
ocsp.h: Fix backward compatibility decl for OCSP_parse_url() by including http.h

Fixes #12386

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

3 years agoFix wrong fipsinstall key used in test
Shane Lontis [Thu, 9 Jul 2020 13:04:02 +0000 (23:04 +1000)]
Fix wrong fipsinstall key used in test

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

3 years agoMakefile template: fix incorrect treatment of produced document files
Richard Levitte [Mon, 6 Jul 2020 09:35:25 +0000 (11:35 +0200)]
Makefile template: fix incorrect treatment of produced document files

Documentation files were treated as programs when assigning to the
make variables HTMLDOCS{1,3,5,7} and MANDOCS{1,3,5,7}, which is is
incorrect on POSIX sub-systems where executables have an extension
(.exe).

Fixes #11937

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

3 years agoAdd multiple fixes for ffc key generation using invalid p,q,g parameters.
Shane Lontis [Thu, 9 Jul 2020 03:43:10 +0000 (13:43 +1000)]
Add multiple fixes for ffc key generation using invalid p,q,g parameters.

Fixes #11864

- The dsa keygen assumed valid p, q, g values were being passed. If this is not correct then it is
  possible that dsa keygen can either hang or segfault.
  The fix was to do a partial validation of p, q, and g inside the keygen.
- Fixed a potential double free in the dsa keypair test in the case when in failed (It should never fail!).
  It freed internal object members without setting them to NULL.
- Changed the FFC key validation to accept 1024 bit keys in non fips mode.
- Added tests that use both the default provider & fips provider to test these cases.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12176)

3 years agoFix CID 1454808: Error handling issues NEGATIVE_RETURNS (PKCS7_dataDecode())
Shane Lontis [Mon, 6 Jul 2020 23:50:34 +0000 (09:50 +1000)]
Fix CID 1454808:  Error handling issues NEGATIVE_RETURNS (PKCS7_dataDecode())

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12379)

3 years agoFix CID 1454806: NEGATIVE_RETURNS (cms_enc.c)
Shane Lontis [Mon, 6 Jul 2020 23:46:37 +0000 (09:46 +1000)]
Fix CID 1454806:   NEGATIVE_RETURNS (cms_enc.c)

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12379)

3 years agoFix CID 1465213: Integer handling issues (evp_extra_test.c)
Shane Lontis [Mon, 6 Jul 2020 07:35:23 +0000 (17:35 +1000)]
Fix CID 1465213: Integer handling issues (evp_extra_test.c)

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12379)

3 years agoFix CID 1463883 Dereference after null check (in ess_find_cert_v2())
Shane Lontis [Mon, 6 Jul 2020 06:13:48 +0000 (16:13 +1000)]
Fix CID 1463883 Dereference after null check (in ess_find_cert_v2())

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12379)

3 years agoFix CID 1465214 Resource leak (in file_load.c)
Shane Lontis [Mon, 6 Jul 2020 04:31:32 +0000 (14:31 +1000)]
Fix CID 1465214 Resource leak (in file_load.c)

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12379)

3 years agoFix CID 1465215 : Explicit null dereferenced (in test)
Shane Lontis [Mon, 6 Jul 2020 04:16:09 +0000 (14:16 +1000)]
Fix CID 1465215 : Explicit null dereferenced (in test)

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12379)

3 years agoFix CID #1465216 Resource leak in property_fetch
Shane Lontis [Mon, 6 Jul 2020 04:08:58 +0000 (14:08 +1000)]
Fix CID #1465216 Resource leak in property_fetch

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12379)

3 years agoEnsure we excluse ec2m curves if ec2m is disabled
Matt Caswell [Wed, 1 Jul 2020 11:20:49 +0000 (12:20 +0100)]
Ensure we excluse ec2m curves if ec2m is disabled

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

3 years agoAdd a test to check having a provider loaded without a groups still works
Matt Caswell [Fri, 26 Jun 2020 19:49:19 +0000 (20:49 +0100)]
Add a test to check having a provider loaded without a groups still works

As long as we have at least one provider loaded which offers some
groups, it doesn't matter if we have others loaded that don't.

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

3 years agoFix an incorrect error flow in add_provider_groups
Matt Caswell [Fri, 26 Jun 2020 19:44:27 +0000 (20:44 +0100)]
Fix an incorrect error flow in add_provider_groups

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

3 years agoFix OSSL_PROVIDER_get_capabilities()
Matt Caswell [Fri, 26 Jun 2020 19:40:11 +0000 (20:40 +0100)]
Fix OSSL_PROVIDER_get_capabilities()

It is not a failure to call OSSL_PROVIDER_get_capabilities() with a
provider loaded that has no capabilities.

Fixes #12286

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

3 years agoAdd support to zeroize plaintext in S3 record layer
Martin Elshuber [Tue, 23 Jun 2020 10:14:41 +0000 (12:14 +0200)]
Add support to zeroize plaintext in S3 record layer

Some applications want even all plaintext copies beeing
zeroized. However, currently plaintext residuals are kept in rbuf
within the s3 record layer.

This patch add the option SSL_OP_CLEANSE_PLAINTEXT to its friends to
optionally enable cleansing of decrypted plaintext data.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12251)

3 years ago[test][15-test_genec] Improve EC tests with genpkey
Nicola Tuveri [Sun, 28 Jun 2020 17:03:53 +0000 (20:03 +0300)]
[test][15-test_genec] Improve EC tests with genpkey

Test separately EC parameters and EC key generation.

Some curves only support explicit params encoding.

For some curves we have had cases in which generating the parameters
under certain conditions failed, while generating and serializing a key
under the same conditions did not.
See <https://github.com/openssl/openssl/issues/12306> for more details.

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

3 years ago[apps/genpkey] exit status should not be 0 on output errors
Nicola Tuveri [Fri, 26 Jun 2020 22:42:49 +0000 (01:42 +0300)]
[apps/genpkey] exit status should not be 0 on output errors

If the key is to be serialized or printed as text and the framework
returns an error, the app should signal the failure to the user using
a non-zero exit status.

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

3 years ago[EC][ASN1] Detect missing OID when serializing EC parameters and keys
Nicola Tuveri [Sun, 28 Jun 2020 21:53:46 +0000 (00:53 +0300)]
[EC][ASN1] Detect missing OID when serializing EC parameters and keys

The following built-in curves do not have an assigned OID:

- Oakley-EC2N-3
- Oakley-EC2N-4

In general we shouldn't assume that an OID is always available.

This commit detects such cases, raises an error and returns appropriate
return values so that the condition can be detected and correctly
handled by the callers, when serializing EC parameters or EC keys with
the default `ec_param_enc:named_curve`.

Fixes #12306

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

3 years agoimprove SSL_CTX_set_tlsext_ticket_key_cb ref impl
Glenn Strauss [Fri, 5 Jun 2020 21:14:08 +0000 (17:14 -0400)]
improve SSL_CTX_set_tlsext_ticket_key_cb ref impl

improve reference implementation code in
  SSL_CTX_set_tlsext_ticket_key_cb man page

change EVP_aes_128_cbc() to EVP_aes_256_cbc(), with the implication
of requiring longer keys.  Updating this code brings the reference
implementation in line with implementation in openssl committed in 2016:
commit 05df5c20
Use AES256 for the default encryption algoritm for TLS session tickets

add comments where user-implementation is needed to complete code

CLA: trivial

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

3 years agoEnsure TLS padding is added during encryption on the provider side
Matt Caswell [Fri, 26 Jun 2020 17:22:18 +0000 (18:22 +0100)]
Ensure TLS padding is added during encryption on the provider side

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

3 years agoConvert SSLv3 handling to use provider side CBC/MAC removal
Matt Caswell [Fri, 26 Jun 2020 12:05:18 +0000 (13:05 +0100)]
Convert SSLv3 handling to use provider side CBC/MAC removal

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

3 years agoEnsure any allocated MAC is freed in the provider code
Matt Caswell [Tue, 23 Jun 2020 15:47:31 +0000 (16:47 +0100)]
Ensure any allocated MAC is freed in the provider code

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

3 years agoDecreate the length after decryption for the stitched ciphers
Matt Caswell [Tue, 23 Jun 2020 13:34:45 +0000 (14:34 +0100)]
Decreate the length after decryption for the stitched ciphers

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

3 years agoEnsure the sslcorrupttest checks all errors on the queue
Matt Caswell [Mon, 22 Jun 2020 15:02:12 +0000 (16:02 +0100)]
Ensure the sslcorrupttest checks all errors on the queue

sslcorrupttest was looking for a "decryption failed or bad record mac"
error in the queue. However if there were multiple errors on the queue
then it would fail to find it. We modify the test to check all errors.

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

3 years agoEnsure GCM "update" failures return 0 on error
Matt Caswell [Mon, 22 Jun 2020 15:01:31 +0000 (16:01 +0100)]
Ensure GCM "update" failures return 0 on error

EVP_CipherUpdate is supposed to return 1 for success or 0 for error.
However for GCM ciphers it was sometimes returning -1 for error.

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

3 years agoEnsure cipher_generic_initkey gets passed the actual provider ctx
Matt Caswell [Mon, 22 Jun 2020 14:04:50 +0000 (15:04 +0100)]
Ensure cipher_generic_initkey gets passed the actual provider ctx

We were not correctly passing the provider ctx down the chain during
initialisation of a new cipher ctx. Instead the provider ctx got set to
NULL.

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

3 years agoMake the NULL cipher TLS aware
Matt Caswell [Mon, 22 Jun 2020 09:51:48 +0000 (10:51 +0100)]
Make the NULL cipher TLS aware

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

3 years agoChange ChaCha20-Poly1305 to be consistent with out ciphers
Matt Caswell [Fri, 19 Jun 2020 16:26:49 +0000 (17:26 +0100)]
Change ChaCha20-Poly1305 to be consistent with out ciphers

Other ciphers return the length of the Payload for TLS as a result of an
EVP_DecryptUpdate() operation - but  ChaCha20-Poly1305 did not. We change
it so that it does.

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

3 years agoMake libssl start using the TLS provider CBC support
Matt Caswell [Wed, 17 Jun 2020 16:16:22 +0000 (17:16 +0100)]
Make libssl start using the TLS provider CBC support

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

3 years agoAdd provider support for TLS CBC padding and MAC removal
Matt Caswell [Wed, 27 May 2020 16:20:18 +0000 (17:20 +0100)]
Add provider support for TLS CBC padding and MAC removal

The previous commits separated out the TLS CBC padding code in libssl.
Now we can use that code to directly support TLS CBC padding and MAC
removal in provided ciphers.

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

3 years agoRemove SSL dependencies from tls_pad.c
Matt Caswell [Wed, 10 Jun 2020 14:34:04 +0000 (15:34 +0100)]
Remove SSL dependencies from tls_pad.c

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

3 years agoSplit the padding/mac removal functions out into a separate file
Matt Caswell [Wed, 10 Jun 2020 14:11:28 +0000 (15:11 +0100)]
Split the padding/mac removal functions out into a separate file

We split these functions out into a separate file because we are
preparing to make this file shared between libssl and providers.

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

3 years agoMove MAC removal responsibility to the various protocol "enc" functions
Matt Caswell [Wed, 3 Jun 2020 16:42:01 +0000 (17:42 +0100)]
Move MAC removal responsibility to the various protocol "enc" functions

For CBC ciphersuites using Mac-then-encrypt we have to be careful about
removing the MAC from the record in constant time. Currently that happens
immediately before MAC verification. Instead we move this responsibility
to the various protocol "enc" functions so that MAC removal is handled at
the same time as padding removal.

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

3 years agoTEST: update 02-test_errstr.t to have better tests
Richard Levitte [Wed, 1 Jul 2020 21:13:49 +0000 (23:13 +0200)]
TEST: update 02-test_errstr.t to have better tests

We now check that if libcrypto hasn't loaded the string for some particular
system error, it gives us "reason(nnn)" instead, where 'nnn' is the system
error number in decimal.

We go through all possible error macros that perl serves us, not only the
POSIX ones.

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12343)

3 years agoSSL: fix misuse of ERR_LIB_SYS
Richard Levitte [Wed, 1 Jul 2020 20:17:01 +0000 (22:17 +0200)]
SSL: fix misuse of ERR_LIB_SYS

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12343)

3 years agoTEST: fix test/errtest.c
Richard Levitte [Mon, 29 Jun 2020 10:43:40 +0000 (12:43 +0200)]
TEST: fix test/errtest.c

test/errtest.c used the system error code 1 for EPERM.  However, EPERM
may be coded differently on different systems, so we switch to using
EPERM instead.  However, because we know that the ERR sub-system
truncates system error codes that occupy more than 24 bits, we check
that the reason code in the recorded error matches our EPERM, and skip
the test if not.

To be safe (even though the error string for that code is well defined
in POSIX), we also use strerror() to retrieve the string for that
error code instead of using a hard coded value.

Fixes #12276
Fixes #12217
Fixes #12354

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12343)

3 years agoERR: special case system errors
Richard Levitte [Mon, 29 Jun 2020 10:18:24 +0000 (12:18 +0200)]
ERR: special case system errors

Because system errors can be any positive number that fits in an 'int'
according to POSIX, we can't reasonably expect them to be in the 1..127
range, even though that's the most usual.

Instead of packing them into the OpenSSL error code structure, we
recognise them as a special case and mark them as such by storing them
in our error queue with the highest bit set.  We make OpenSSL specific
error records have their highest bit cleared, and in doing so, we
shift down the library section of the code by one bit.  This still
leaves a very large section for the reason codes.

Of course, we must adapt the error code and reason string extraction
and printing functions accordingly.

With this, we also thrown away the pre-loaded array of system error
strings, and extract them from the system when needed instead, i.e.
when we create error strings.

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12343)

3 years agoERR: refactor global error codes
Richard Levitte [Mon, 29 Jun 2020 10:08:27 +0000 (12:08 +0200)]
ERR: refactor global error codes

Some ERR_R_ codes overlapped other ERR_R_ codes:

- ERR_R_BUF_LIB vs ERR_R_PASSED_INVALID_ARGUMENT
- ERR_R_DSA_LIB vs ERR_R_INTERRUPTED_OR_CANCELLED

Looking back at history, this was originally not an issue, because
the ERR_R_ codes that weren't ERR_LIB_ aliases had bit 2**6 set.
However, new codes without that bit came in, and we got the overlap
that is mentioned above.

To get rid of the overlap, we repartition the codes as follows:

- ERR_R_{name}_LIB that are aliases for ERR_LIB_{name} are confined to
  the range 1..63.
- Other ERR_R_ codes are confined to 64..99

We also expand the reason codes to 24 bits of data, where the 4 top
bits are for reason code flags.  We also allocate a "fatal" flag
ERR_RFLAG_FATAL.  The reason code ERR_R_FATAL stops acting as a flag,
but is coded in such a way that it still serves as one for code that
happens to use it as such.

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12343)

3 years agoCORE: perform post-condition in algorithm_do_this() under all circumstances
Richard Levitte [Fri, 3 Jul 2020 12:12:54 +0000 (14:12 +0200)]
CORE: perform post-condition in algorithm_do_this() under all circumstances

When ossl_provider_query_operation() returned NULL, the post-condition
callback wasn't called, and could make algorithm_do_this() falsely
tell the caller that there was an error.  Because of this, a provider
that answered with NULL for a particular operation identity would
effectively block the same query on all following providers.

Fixes #12293

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/12365)

3 years agoFix many MarkDown issues in {NOTES*,README*,HACKING,LICENSE}.md files
Dr. David von Oheimb [Wed, 10 Jun 2020 15:49:25 +0000 (17:49 +0200)]
Fix many MarkDown issues in {NOTES*,README*,HACKING,LICENSE}.md files

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

3 years agoRename NOTES*, README*, VERSION, HACKING, LICENSE to .md or .txt
Dr. David von Oheimb [Wed, 10 Jun 2020 12:15:28 +0000 (14:15 +0200)]
Rename NOTES*, README*, VERSION, HACKING, LICENSE to .md or .txt

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

3 years agoutil/markdownlint.rb: Add two rule exceptions: MD023 and MD026
Dr. David von Oheimb [Thu, 11 Jun 2020 09:28:02 +0000 (11:28 +0200)]
util/markdownlint.rb: Add two rule exceptions: MD023 and MD026

exclude_rule 'MD023' # Headers must start at the beginning of the line
exclude_rule 'MD026' # Trailing punctuation in header

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

3 years agoapps: remove NULL check imn release_engine since ENGINE_free also does it.
Pauli [Fri, 3 Jul 2020 00:11:33 +0000 (10:11 +1000)]
apps: remove NULL check imn release_engine since ENGINE_free also does it.

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

3 years agocoverity 1464983: null pointer dereference
Pauli [Sun, 28 Jun 2020 22:39:42 +0000 (08:39 +1000)]
coverity 1464983: null pointer dereference

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

3 years agocoverity 1464984: Null pointer dereferences
Pauli [Sun, 28 Jun 2020 22:33:35 +0000 (08:33 +1000)]
coverity 1464984: Null pointer dereferences

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

3 years agocmp: remove NULL check.
Pauli [Sun, 28 Jun 2020 22:29:10 +0000 (08:29 +1000)]
cmp: remove NULL check.

Instead appease coverity by marking 1464986 as a false positive.
Coverity is confused by the engine reference counting.

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

3 years agocoverity: CID 1464987: USE AFTER FREE
Pauli [Sun, 28 Jun 2020 22:17:25 +0000 (08:17 +1000)]
coverity: CID 1464987: USE AFTER FREE

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

3 years agorand: avoid caching RNG parameters.
Pauli [Thu, 2 Jul 2020 00:45:23 +0000 (10:45 +1000)]
rand: avoid caching RNG parameters.

The strength and max_length DRBG parameters were being cached in the EVP_RAND
layer.  This commit removes the caching.

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

3 years agoRefactor the EVP_RAND code to make locking issues less likely
Pauli [Wed, 1 Jul 2020 00:57:03 +0000 (10:57 +1000)]
Refactor the EVP_RAND code to make locking issues less likely

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

3 years agorand: fix recursive locking issue.
Pauli [Mon, 29 Jun 2020 23:36:47 +0000 (09:36 +1000)]
rand: fix recursive locking issue.

The calls to query the DRBG strength, state and maximum output size all used
nested locks.  This removes the nesting.

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

3 years agoFix typos and repeated words
Gustaf Neumann [Mon, 29 Jun 2020 19:13:07 +0000 (21:13 +0200)]
Fix typos and repeated words

CLA: trivial

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/12320)

3 years agoConfiguration and build: Fix solaris tags
Richard Levitte [Thu, 2 Jul 2020 16:48:16 +0000 (18:48 +0200)]
Configuration and build:  Fix solaris tags

The shared_target attrribute for Solaris built with gcc wasn't right
and shared libraries couldn't be properly built.

Fixes #12356

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/12360)

3 years agoutil/perl/OpenSSL/config.pm: Fix /armv[7-9].*-.*-linux2/
Richard Levitte [Wed, 1 Jul 2020 05:39:06 +0000 (07:39 +0200)]
util/perl/OpenSSL/config.pm: Fix /armv[7-9].*-.*-linux2/

This entry added the macro B_ENDIAN when it shouldn't have.

Fixes #12332

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

3 years agoNOTE.WIN: suggest the audetecting configuration variant as well
Richard Levitte [Wed, 1 Jul 2020 10:17:40 +0000 (12:17 +0200)]
NOTE.WIN: suggest the audetecting configuration variant as well

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

3 years agoutil/perl/OpenSSL/config.pm: move misplaced Windows and VMS entries
Richard Levitte [Wed, 1 Jul 2020 10:04:24 +0000 (12:04 +0200)]
util/perl/OpenSSL/config.pm: move misplaced Windows and VMS entries

OpenSSL::config::guess_system() is supposed to return system triplets.
However, for Windows and VMS, it returned the final OpenSSL config
target instead.  We move the entries for them to the table that
OpenSSL::config::map_guess() uses, so it can properly convert the
input triplet to an OpenSSL config target.

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

3 years agoFix a typo in the i2d_TYPE_fp documentation
Matt Caswell [Wed, 1 Jul 2020 08:30:53 +0000 (09:30 +0100)]
Fix a typo in the i2d_TYPE_fp documentation

Thanks to Michael Mueller on the openssl-users list for the suggested
improvement.

Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/12338)

3 years agoDon't run the cmp_cli tests if using FUZZING_BUILD_MODE
Matt Caswell [Wed, 1 Jul 2020 10:19:58 +0000 (11:19 +0100)]
Don't run the cmp_cli tests if using FUZZING_BUILD_MODE

[extended tests]

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/12275)

3 years agoIf an empty password is supplied still try to use it
Matt Caswell [Thu, 25 Jun 2020 15:10:54 +0000 (16:10 +0100)]
If an empty password is supplied still try to use it

If an empty password was supplied we ignored it and were trying to use
the fallback method to read the password instead (i.e. read from stdin).
However if that failed (which it always does if the cmp option -batch is
used) then we were reporting that we had successfully read the password
without actually setting one.

Instead, if an empty password is explicitly provided we should use it. If
no password is supplied explicitly and we have no fallback method then we
assume the empty password.

[extended tests]

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/12275)

3 years agoEnsure a string is properly terminated in http_client.c
Matt Caswell [Thu, 25 Jun 2020 11:21:07 +0000 (12:21 +0100)]
Ensure a string is properly terminated in http_client.c

In HTTP_new_bio(), if the host has a trailing '/' we took a copy of the
hostname but failed to terminate it properly.

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/12275)

3 years ago81-test_cmp_cli.t: Correct subroutine quote_spc_empty and its use
Dr. David von Oheimb [Tue, 23 Jun 2020 06:04:54 +0000 (08:04 +0200)]
81-test_cmp_cli.t: Correct subroutine quote_spc_empty and its use

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

3 years ago81-test_cmp_cli.t: Streamline {start,stop}_mock_server and improve port setting
Dr. David von Oheimb [Tue, 23 Jun 2020 06:03:59 +0000 (08:03 +0200)]
81-test_cmp_cli.t: Streamline {start,stop}_mock_server and improve port setting

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

3 years agotest/run_tests.pl: Add alias REPORT_FAILURES{,_PROGRESS} for VF and VFP
Dr. David von Oheimb [Sat, 27 Jun 2020 13:45:58 +0000 (15:45 +0200)]
test/run_tests.pl: Add alias REPORT_FAILURES{,_PROGRESS} for VF and VFP

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

3 years agotest/run_tests.pl: Add visual separator after failed test case for VFP and VFP modes
Dr. David von Oheimb [Wed, 24 Jun 2020 10:13:38 +0000 (12:13 +0200)]
test/run_tests.pl: Add visual separator after failed test case for VFP and VFP modes

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

3 years agotest/run_tests.pl: Enhance the semantics of HARNESS_VERBOSE_FAILURES (VF)
Dr. David von Oheimb [Wed, 24 Jun 2020 10:12:20 +0000 (12:12 +0200)]
test/run_tests.pl: Enhance the semantics of HARNESS_VERBOSE_FAILURES (VF)

Make the improved semantics of VFO replace the previous VF and remove VFO
Add warnings about overriding use of HARNESS_VERBOSE* variables

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

3 years agoConfigure: fix handling of build.info attributes with value
Richard Levitte [Wed, 1 Jul 2020 22:08:45 +0000 (00:08 +0200)]
Configure: fix handling of build.info attributes with value

This line wasn't properly handled:

    SCRIPTS{misc,linkname=tsget}=tsget.pl

It generated an attribute "linkname=tsget" with the value 1, instead of
what it should have, an attribute "linkname" with the value "tsget".

Fixes #12341

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

3 years agoFix up build issue when running cpp tests
Jon Spillett [Wed, 1 Jul 2020 04:47:15 +0000 (14:47 +1000)]
Fix up build issue when running cpp tests

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

3 years agodoc: Remove stray backtick
Jakub Wilk [Tue, 30 Jun 2020 20:50:17 +0000 (22:50 +0200)]
doc: Remove stray backtick

CLA: trivial

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

3 years agoConfigure: Check source and build dir equality a little more thoroughly
Richard Levitte [Wed, 1 Jul 2020 08:06:59 +0000 (10:06 +0200)]
Configure: Check source and build dir equality a little more thoroughly

'absolutedir' does a thorough job ensuring that we have a "real" path
to both source and build directory, unencumbered by symbolic links.
However, that isn't enough on case insensitive file systems on Unix
flavored platforms, where it's possible to stand in, for example,
/PATH/TO/Work/openssl, and then do this:

    perl ../../work/openssl/Configure

... and thereby having it look like the source directory and the build
directory aren't the same.

We solve this by having a closer look at the computed source and build
directories, and making sure they are exactly the same strings if they
are in fact the same directory.

This is especially important when making symbolic links based on this
directories, but may have other ramifications as well.

Fixes #12323

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

3 years ago[test/README.md] minor fix of examples missing the test target
Nicola Tuveri [Tue, 30 Jun 2020 12:56:14 +0000 (15:56 +0300)]
[test/README.md] minor fix of examples missing the test target

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12326)

3 years agoTravis: default to HARNESS_JOBS=4
Nicola Tuveri [Tue, 30 Jun 2020 12:55:12 +0000 (15:55 +0300)]
Travis: default to HARNESS_JOBS=4

We can run tests in parallel by setting the HARNESS_JOBS environment
variable.

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12326)

3 years agoRun tests in parallel
Nicola Tuveri [Tue, 30 Jun 2020 07:23:56 +0000 (10:23 +0300)]
Run tests in parallel

The environment variable `HARNESS_JOBS` can be used to control how many
jobs to run in parallel.  The default is still to run jobs sequentially.

This commit does not define custom `rules`, and different versions of
`TAP::Harness` come with different strategies regarding the default
`rules` that define which test recipes can be run in parallel.
In recent versions of Perl, unless specified otherwise any task can be
run in parallel.

Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/12326)

3 years agoFix memory leaks on OSSL_SERIALIZER_CTX_new_by_EVP_PKEY
Nicola Tuveri [Sun, 28 Jun 2020 14:07:59 +0000 (17:07 +0300)]
Fix memory leaks on OSSL_SERIALIZER_CTX_new_by_EVP_PKEY

Fixes #12303

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

3 years agoFree pre_proc_exts in SSL_free()
Miłosz Kaniewski [Tue, 30 Jun 2020 19:46:38 +0000 (21:46 +0200)]
Free pre_proc_exts in SSL_free()

Usually it will be freed in tls_early_post_process_client_hello().
However if a ClientHello callback will be used and will return
SSL_CLIENT_HELLO_RETRY then tls_early_post_process_client_hello()
may never come to the point where pre_proc_exts is freed.

Fixes #12194

CLA: trivial

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/12330)

3 years agodoc: remove reference to the predecessor of SHA-1.
Pauli [Tue, 30 Jun 2020 01:17:20 +0000 (11:17 +1000)]
doc: remove reference to the predecessor of SHA-1.

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

3 years agoDon't forget our provider ctx when resetting
Matt Caswell [Mon, 22 Jun 2020 10:18:56 +0000 (11:18 +0100)]
Don't forget our provider ctx when resetting

A number of the KDF reset functions were resetting a little too much

Fixes #12225

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

3 years agoX509v3_cache_extensions(): Improve coding style and doc, fix case 'sha1 == NULL'
Dr. David von Oheimb [Sat, 27 Jun 2020 14:16:12 +0000 (16:16 +0200)]
X509v3_cache_extensions(): Improve coding style and doc, fix case 'sha1 == NULL'

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

3 years agoAdd X509_self_signed(), extending and improving documenation and tests
Dr. David von Oheimb [Sat, 28 Dec 2019 11:33:12 +0000 (12:33 +0100)]
Add X509_self_signed(), extending and improving documenation and tests

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

3 years agoMove doc of X509{,_REQ,_CRL}_verify{,_ex}() from X509_sign.pod to new X509_verify.pod
Dr. David von Oheimb [Sat, 27 Jun 2020 15:37:34 +0000 (17:37 +0200)]
Move doc of X509{,_REQ,_CRL}_verify{,_ex}() from X509_sign.pod to new X509_verify.pod

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

3 years agoFix issue 1418 by moving check of KU_KEY_CERT_SIGN and weakening check_issued()
Dr. David von Oheimb [Tue, 24 Dec 2019 10:25:15 +0000 (11:25 +0100)]
Fix issue 1418 by moving check of KU_KEY_CERT_SIGN and weakening check_issued()

Move check that cert signing is allowed from x509v3_cache_extensions() to
where it belongs: internal_verify(), generalize it for proxy cert signing.
Correct and simplify check_issued(), now checking self-issued (not: self-signed).
Add test case to 25-test_verify.t that demonstrates successful fix

Fixes #1418

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

3 years agoOptimization and safety precaution in find_issuer() of x509_vfy.c:
Dr. David von Oheimb [Tue, 24 Dec 2019 09:36:24 +0000 (10:36 +0100)]
Optimization and safety precaution in find_issuer() of x509_vfy.c:
candidate issuer cert cannot be the same as the subject cert 'x'

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

3 years agoAdd four more verify test cases on the self-signed Ed25519 and self-issed X25519...
Dr. David von Oheimb [Mon, 23 Dec 2019 19:23:24 +0000 (20:23 +0100)]
Add four more verify test cases on the self-signed Ed25519 and self-issed X25519 certs

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

3 years agoMake x509 -force_pubkey test case with self-issued cert more realistic
Dr. David von Oheimb [Mon, 23 Dec 2019 19:15:49 +0000 (20:15 +0100)]
Make x509 -force_pubkey test case with self-issued cert more realistic
by adding CA basic constraints, CA key usage, and key IDs to the cert
and by add -partial_chain to the verify call that trusts this cert

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

3 years agoRefactor (without semantic changes) crypto/x509/{v3_purp.c,x509_vfy.c}
Dr. David von Oheimb [Mon, 23 Dec 2019 16:37:17 +0000 (17:37 +0100)]
Refactor (without semantic changes) crypto/x509/{v3_purp.c,x509_vfy.c}

This prepares some corrections and improves readability (coding style).
Among others, it adds the static function check_sig_alg_match() and
the internal functions x509_likely_issued() and x509_signing_allowed().

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

3 years agoImprove documentation, layout, and code comments regarding self-issued certs etc.
Dr. David von Oheimb [Mon, 23 Dec 2019 14:40:47 +0000 (15:40 +0100)]
Improve documentation, layout, and code comments regarding self-issued certs etc.

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

3 years agoFix a typo on the SSL_dup page
Matt Caswell [Thu, 25 Jun 2020 09:43:20 +0000 (10:43 +0100)]
Fix a typo on the SSL_dup page

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

(cherry picked from commit 0c3d0247a7b16cf10d6d869f34b40aa833b79fd5)

3 years agoFix CID-1464802
Shane Lontis [Tue, 23 Jun 2020 02:30:40 +0000 (12:30 +1000)]
Fix CID-1464802

Improper use of negative value (It just needs to pass zero instead of -1).

Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/12237)

3 years agoForce ssl/tls protocol flags to use stream sockets
Benny Baumann [Wed, 24 Jun 2020 19:54:05 +0000 (21:54 +0200)]
Force ssl/tls protocol flags to use stream sockets

Prior to this patch doing something like
  openssl s_client -dtls1 -tls1 ...
could cause s_client to speak TLS on a UDP socket
which does not normally make much sense.

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