archaic-openssl.git
7 years agoAdd a POC demonstrating DTLS Finished message injection dtls-finished-injection
Matt Caswell [Wed, 29 Jun 2016 09:23:28 +0000 (10:23 +0100)]
Add a POC demonstrating DTLS Finished message injection

This simulates an attack where a MITM can inject its own Finished message
into a DTLS handshake. In this POC OpenSSL is acting as the server. The peer
is assumed to be a non OpenSSL client that will tolerate very small MTUs
such that the Finished message will be fragmented (OpenSSL itself will never
do this). The attack could work equally well where OpenSSL is the client
and some other DTLS implementation is the server - although I have not
attempted to show this in the POC.

The attack described here is a "near miss" from a security point of view.
It does not appear to be exploitable in a real scenario because of the
issues described at the end below.

The MITM requires the following capabilities:
- The ability to manipulate the MTU that the client selects such that it is
  small enough for the client to fragment Finished messages. I have
  simulated this in the POC by making a hack in the previous commit to
  OpenSSL itself. This would not be required if we were using a real third
  party DTLS implementation that tolerated very small MTUs.
- The ability to selectively drop and modify records sent from the client
- The ability to inject its own records and send them to the server

The MITM forces the client to select a small MTU such that the client will
fragment the Finished message. Ideally for the attacker the first fragment
will contain all but the last byte of the Finished message, with the second
fragment containing the final byte.

During the handshake and prior to the client sending the CCS the MITM
injects a plaintext Finished message fragment to the server containing all
but the final byte of the Finished message. The message sequence number
should be the one expected to be used for the real Finished message.

OpenSSL will recognise that the received fragment is for the future and will
buffer it for later use.

After the client sends the CCS it then sends its own Finished message in
two fragments. The MITM causes the first of these fragments to be dropped.
OpenSSL will then receive the second of the fragments and reassemble the
complete Finished message consisting of the MITM fragment and the final byte
from the real client.

The advantage to the attacker in injecting a Finished message is that this
provides the capability to modify other handshake messages (e.g. the
ClientHello) undetected. A difficulty for the attacker is knowing in advance
what impact any of those changes might have on the final byte of the
handshake hash that is going to be sent in the "real" Finished message. In
the worst case for the attacker this means that only 1 in 256 of such
injection attempts will succeeed.

In practice the MITM would need to be able to perform the same attack
against both the client and the server. If the attack is only performed
against the server (say) then the server will not detect the modified
handshake, but the client will and will abort the connection. Fortunately,
although OpenSSL is vulnerable to Finished message injection, it is not
vulnerable if *both* client and server are OpenSSL. The reason is that
OpenSSL has a hard "floor" for a minimum MTU size that it will never go
below. This minimum means that a Finished message will never be sent in a
fragmented form and therefore the MITM does not have one of its
pre-requisites. Therefore this could only be exploited if using OpenSSL and
some other DTLS peer that had its own and separate Finished message
injection flaw.

The POC just injects dummy Finished data and therefore the connection never
succeeds and errors with a "digest check failed" error. This error message
is sufficient to show that the injected Finished message was received and
processed by the OpenSSL server - which it should not do. It should be
possible to improve the POC further to actually get it to succeed 1 in 256
times - but I have not attempted that.

7 years agoSimulate a peer that will tolerate very small MTUs
Matt Caswell [Wed, 29 Jun 2016 09:20:07 +0000 (10:20 +0100)]
Simulate a peer that will tolerate very small MTUs

OpenSSL has a hard coded "floor" for the smallest MTU it will tolerate.
It will not generate messages for a smaller MTU than this, although it
will receive them. Other libraries may have a lower floor (or no floor at
all). This change simulates such a peer using a very small MTU.

This change is not necessary for OpenSSL to be vulnerable to the
attack in the next commit. However it is only vulnerable if talking to a
peer that will tolerate small MTUs. This change just simulates that, i.e.
it is necessary for the POC not the attack.

7 years agoFix int create_ssl_ctx_pair() bug
Matt Caswell [Wed, 29 Jun 2016 09:18:20 +0000 (10:18 +0100)]
Fix int create_ssl_ctx_pair() bug

The test function int create_ssl_ctx_pair() is supposed to use the supplied
SSL_METHODs for creating the server and client SSL_CTX objects. Instead it
ignores them and uses hard coded values.

7 years agoAdd a test for fragmented alerts
Matt Caswell [Tue, 21 Jun 2016 15:33:52 +0000 (16:33 +0100)]
Add a test for fragmented alerts

The previous commit fixed a problem where fragmented alerts would cause an
infinite loop. This commit adds a test for these fragmented alerts.

Reviewed-by: Andy Polyakov <appro@openssl.org>
7 years agoEnsure read records are marked as read
Matt Caswell [Tue, 21 Jun 2016 14:25:53 +0000 (15:25 +0100)]
Ensure read records are marked as read

In some situations (such as when we receive a fragment of an alert)
we try to get the next packet but did not mark the current one as read,
meaning that we got the same record back again - leading to an infinite
loop.

Found using the BoringSSL test suite.

Reviewed-by: Andy Polyakov <appro@openssl.org>
7 years agoRT4586: Remove RSA_memory_lock; unused, not needed
Rich Salz [Fri, 24 Jun 2016 13:49:51 +0000 (09:49 -0400)]
RT4586: Remove RSA_memory_lock; unused, not needed

Reviewed-by: Ben Laurie <ben@openssl.org>
7 years agoFix one more instance of incorrect OPENSSL_API_COMPAT value
Matt Caswell [Mon, 27 Jun 2016 10:51:50 +0000 (11:51 +0100)]
Fix one more instance of incorrect OPENSSL_API_COMPAT value

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoFix some OPENSSL_API_COMPAT values
Matt Caswell [Mon, 27 Jun 2016 10:28:29 +0000 (11:28 +0100)]
Fix some OPENSSL_API_COMPAT values

There are 3 OPENSSL_API_COMPAT values that are incorrect in the header
files, and one inconsistency between the header and the .c

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoClarify use of |$end0| in stitched x86-64 AES-GCM code.
Brian Smith [Wed, 2 Mar 2016 06:16:26 +0000 (20:16 -1000)]
Clarify use of |$end0| in stitched x86-64 AES-GCM code.

There was some uncertainty about what the code is doing with |$end0|
and whether it was necessary for |$len| to be a multiple of 16 or 96.
Hopefully these added comments make it clear that the code is correct
except for the caveat regarding low memory addresses.

Change-Id: Iea546a59dc7aeb400f50ac5d2d7b9cb88ace9027
Reviewed-on: https://boringssl-review.googlesource.com/7194
Reviewed-by: Adam Langley <agl@google.com>
Signed-off-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoConfigurations/10-main.conf: fix PA-RISC commentary.
Andy Polyakov [Sun, 26 Jun 2016 17:08:51 +0000 (19:08 +0200)]
Configurations/10-main.conf: fix PA-RISC commentary.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoevp/evp_enc.c: refine partial buffer overlap detection.
Andy Polyakov [Mon, 20 Jun 2016 09:11:25 +0000 (11:11 +0200)]
evp/evp_enc.c: refine partial buffer overlap detection.

Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoevp/evp_enc.c: check for partially[!] overlapping buffers
Andy Polyakov [Fri, 17 Jun 2016 11:55:01 +0000 (13:55 +0200)]
evp/evp_enc.c: check for partially[!] overlapping buffers
in EVP_EncryptUpdate and EVP_DecryptUpdate. It is argued that in
general case it's impossible to provide guarantee that partially[!]
overlapping buffers can be tolerated.

Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoRT2680: Public EC key is shown as private
Rich Salz [Sun, 26 Jun 2016 18:34:00 +0000 (14:34 -0400)]
RT2680: Public EC key is shown as private

Re-implemented as suggested by Steve Henson.
Also change ECParameters_print the same way.

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
7 years agoRT2964: Fix it via doc
Rich Salz [Sun, 26 Jun 2016 13:24:49 +0000 (09:24 -0400)]
RT2964: Fix it via doc

OBJ_nid2obj() and friends should be treated as const.

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
7 years agoRevert "RT2964: Fix it via doc"
Rich Salz [Sun, 26 Jun 2016 02:08:21 +0000 (22:08 -0400)]
Revert "RT2964: Fix it via doc"

This reverts commit 82f31fe4dd0dac30229fa8684229b49d2bcef404.

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
7 years agoRT2964: Fix it via doc
Rich Salz [Sat, 25 Jun 2016 18:51:53 +0000 (14:51 -0400)]
RT2964: Fix it via doc

OBJ_nid2obj() and friends should be treated as const.

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
7 years agoHandle BN_mod_word failures.
David Benjamin [Fri, 24 Jun 2016 15:07:52 +0000 (11:07 -0400)]
Handle BN_mod_word failures.

As of 37258dadaa9e36db4b96a3aa54aa6c67136160cc and the corresponding upstream
change, BN_mod_word may fail, like BN_div_word. Handle this properly. Thanks to
Brian Smith for pointing this out. See BoringSSL's
44bedc348d9491e63c7ed1438db100a4b8a830be.

Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #1251

7 years agoFix BN_is_prime* calls.
David Benjamin [Fri, 24 Jun 2016 15:05:48 +0000 (11:05 -0400)]
Fix BN_is_prime* calls.

This function returns a tri-state -1 on error. See BoringSSL's
53409ee3d7595ed37da472bc73b010cd2c8a5ffd.

Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #1251

7 years agoAdd x509 and crl corpora
Kurt Roeckx [Tue, 21 Jun 2016 19:38:06 +0000 (21:38 +0200)]
Add x509 and crl corpora

Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #1229

7 years agoAdd X509 and CRL fuzzer
Kurt Roeckx [Sat, 18 Jun 2016 13:56:49 +0000 (15:56 +0200)]
Add X509 and CRL fuzzer

Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #1229

7 years agoAdd -ciphers flag to enc command
Rich Salz [Fri, 24 Jun 2016 20:38:08 +0000 (16:38 -0400)]
Add -ciphers flag to enc command

Don't print the full list of ciphers as part of the -help output.

Reviewed-by: Andy Polyakov <appro@openssl.org>
7 years agoperlasm/x86_64-xlate.pl: address errors and warnings in elderly perls.
Andy Polyakov [Thu, 23 Jun 2016 13:49:20 +0000 (15:49 +0200)]
perlasm/x86_64-xlate.pl: address errors and warnings in elderly perls.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years ago./config: minor cleanup.
Andy Polyakov [Thu, 23 Jun 2016 14:04:37 +0000 (16:04 +0200)]
./config: minor cleanup.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years ago./config: detect x32-only environment.
Andy Polyakov [Thu, 23 Jun 2016 13:52:02 +0000 (15:52 +0200)]
./config: detect x32-only environment.

RT#4583

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoTeach EVP_PKEY_HMAC keys how to EVP_PKEY_cmp()
Nathaniel McCallum [Mon, 20 Jun 2016 07:47:11 +0000 (03:47 -0400)]
Teach EVP_PKEY_HMAC keys how to EVP_PKEY_cmp()

Fixes openssl/openssl#1236

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

7 years agoAvoid signed overflow
Kurt Roeckx [Thu, 23 Jun 2016 07:37:51 +0000 (09:37 +0200)]
Avoid signed overflow

Found by afl

Reviewed-by: Rich Salz <rsalz@openssl.org>
MR: #3013

7 years agoDeal with API changes.
Ben Laurie [Fri, 24 Jun 2016 12:34:51 +0000 (13:34 +0100)]
Deal with API changes.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoEnsure HMAC key gets cleansed after use
Matt Caswell [Fri, 24 Jun 2016 09:31:08 +0000 (10:31 +0100)]
Ensure HMAC key gets cleansed after use

aesni_cbc_hmac_sha256_ctrl() and aesni_cbc_hmac_sha1_ctrl() cleanse the
HMAC key after use, but static int rc4_hmac_md5_ctrl() doesn't.

Fixes an OCAP Audit issue.

Reviewed-by: Andy Polyakov <appro@openssl.org>
7 years agoAdd some documentation for missing HMAC functions
Matt Caswell [Mon, 20 Jun 2016 08:28:25 +0000 (09:28 +0100)]
Add some documentation for missing HMAC functions

This includes the newly added HMAC_CTX_get_md().

Reviewed-by: Tim Hudson <tjh@openssl.org>
7 years agoAdd a getter to obtain the HMAC_CTX md
Matt Caswell [Mon, 20 Jun 2016 08:08:10 +0000 (09:08 +0100)]
Add a getter to obtain the HMAC_CTX md

As a result of opaque HMAC_CTX apps need a getter for the HMAC_CTX md.

GitHub Issue #1152

Reviewed-by: Tim Hudson <tjh@openssl.org>
7 years agoFix ASN1_STRING_to_UTF8 could not convert NumericString
Matt Caswell [Thu, 23 Jun 2016 18:54:06 +0000 (19:54 +0100)]
Fix ASN1_STRING_to_UTF8 could not convert NumericString

tag2nbyte had -1 at 18th position, but underlying ASN1_mbstring_copy
supports NumericString. tag2nbyte is also used in do_print_ex which will
not be broken by setting 1 at 18th position of tag2nbyte

Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoMake x25519_compute_key() return a boolean
huangqinjin [Thu, 23 Jun 2016 15:51:08 +0000 (23:51 +0800)]
Make x25519_compute_key() return a boolean

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoMake ossl_ecdh_compute_key() return a boolean
huangqinjin [Fri, 17 Jun 2016 12:55:15 +0000 (20:55 +0800)]
Make ossl_ecdh_compute_key() return a boolean

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoutils/mkdir-p: check if dir exists also after mkdir failed
Sebastian Andrzej Siewior [Fri, 10 Jun 2016 18:04:51 +0000 (20:04 +0200)]
utils/mkdir-p: check if dir exists also after mkdir failed

with "make install -j8" it happens very often that two or more make
instances are creating the same directory in parallel. As a result one
instace creates the directory and second mkdir fails because the
directory exists already (but it did not while testing for it earlier).

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1204)

7 years agoRT2867: des_ede3_cfb1 ignored "size in bits" flag
Rich Salz [Thu, 23 Jun 2016 14:03:50 +0000 (10:03 -0400)]
RT2867: des_ede3_cfb1 ignored "size in bits" flag

Code and tests by Steve.

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoDrop extraneous printf argument in mkcert.sh
Viktor Dukhovni [Thu, 23 Jun 2016 13:28:34 +0000 (23:28 +1000)]
Drop extraneous printf argument in mkcert.sh

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoUpdate fuzz corpora
Kurt Roeckx [Wed, 15 Jun 2016 18:27:04 +0000 (20:27 +0200)]
Update fuzz corpora

Reviewed-by: Rich Salz <rsalz@openssl.org>
MR: #2986

7 years agoAdd checks on sk_TYPE_push() returned result
FdaSilvaYY [Fri, 3 Jun 2016 22:15:19 +0000 (00:15 +0200)]
Add checks on sk_TYPE_push() returned result

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoRework error handling from asn1_do_lock method.
FdaSilvaYY [Sun, 29 May 2016 12:32:23 +0000 (14:32 +0200)]
Rework error handling from asn1_do_lock method.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoFix generation of expired CA certificate.
Dr. Stephen Henson [Wed, 22 Jun 2016 17:09:42 +0000 (18:09 +0100)]
Fix generation of expired CA certificate.

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoOpenSSL::Test: Fix directory calculations in __cwd()
Richard Levitte [Wed, 22 Jun 2016 11:39:46 +0000 (13:39 +0200)]
OpenSSL::Test: Fix directory calculations in __cwd()

The previous fix contained a mistake, where any absolute path in
%directories would be cleared away instead of just being left alone.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agorand/randfile.c: make it non-ASCII-savvy.
Andy Polyakov [Tue, 21 Jun 2016 13:28:23 +0000 (15:28 +0200)]
rand/randfile.c: make it non-ASCII-savvy.

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoMove OS-specific fopen quirks to o_fopen.c.
Andy Polyakov [Tue, 21 Jun 2016 13:26:18 +0000 (15:26 +0200)]
Move OS-specific fopen quirks to o_fopen.c.

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agocrypto/cryptlib.c: omit OPENSSL_ia32cap_loc().
Andy Polyakov [Fri, 17 Jun 2016 14:09:38 +0000 (16:09 +0200)]
crypto/cryptlib.c: omit OPENSSL_ia32cap_loc().

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoSpelling... and more spelling
FdaSilvaYY [Sun, 19 Jun 2016 17:39:01 +0000 (19:39 +0200)]
Spelling... and more spelling

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

7 years agosegmentation fault with 'openssl s_client -prexit -keymatexport'
mmiyashita [Tue, 21 Jun 2016 18:01:30 +0000 (11:01 -0700)]
segmentation fault with 'openssl s_client -prexit -keymatexport'

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

7 years agoAvoid creating an illegal pointer.
Kurt Roeckx [Sat, 18 Jun 2016 17:50:11 +0000 (19:50 +0200)]
Avoid creating an illegal pointer.

Found by tis-interpreter

Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #1230

7 years agoMake RSA key exchange code actually constant-time.
David Benjamin [Thu, 16 Jun 2016 18:15:19 +0000 (14:15 -0400)]
Make RSA key exchange code actually constant-time.

Using RSA_PKCS1_PADDING with RSA_private_decrypt is inherently unsafe.
The API requires writing output on success and touching the error queue
on error. Thus, although the padding check itself is constant-time as of
294d1e36c2495ff00e697c9ff622856d3114f14f, and the logic after the
decryption in the SSL code is constant-time as of
adb46dbc6dd7347750df2468c93e8c34bcb93a4b, the API boundary in the middle
still leaks whether the padding check succeeded, giving us our
much-loved Bleichenbacher padding oracle.

Instead, PKCS#1 padding must be handled by the caller which uses
RSA_NO_PADDING, in timing-sensitive code integrated with the
Bleichenbacher mitigation. Removing PKCS#1 padding in constant time is
actually much simpler when the expected length is a constant (and if
it's not a constant, avoiding a padding oracle seems unlikely), so just
do it inline.

Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #1222

7 years agobuf2hexstr: properly deal with empty string
Kurt Roeckx [Sun, 19 Jun 2016 12:16:16 +0000 (14:16 +0200)]
buf2hexstr: properly deal with empty string

It wrote before the start of the string

found by afl

Reviewed-by: Richard Levitte <levitte@openssl.org>
MR: #2994

7 years agoFix typo
Petr Vaněk [Tue, 21 Jun 2016 11:30:54 +0000 (13:30 +0200)]
Fix typo

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

7 years agoAppveyor: test install as well, via a fake deploy_script
Richard Levitte [Thu, 2 Jun 2016 15:37:26 +0000 (17:37 +0200)]
Appveyor: test install as well, via a fake deploy_script

Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoTravis: When testing install, install docs as well
Richard Levitte [Thu, 2 Jun 2016 15:37:03 +0000 (17:37 +0200)]
Travis: When testing install, install docs as well

Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoOpenSSL::Test: Fix directory calculations in __cwd()
Richard Levitte [Mon, 20 Jun 2016 12:03:12 +0000 (14:03 +0200)]
OpenSSL::Test: Fix directory calculations in __cwd()

We recalculate the location of the directories we keep track of.
However, we did so after having moved to the new directory already, so
the data we did the calculations from were possibly not quite correct.

This change moves the calculations to happen before moving to the new
directory.

This issue is sporadic, and possibly dependent on the platform.

Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoMore doc cleanup
Rich Salz [Tue, 21 Jun 2016 11:03:34 +0000 (07:03 -0400)]
More doc cleanup

Add missing entries to NAME section
Add SYNOPSIS lines, remove old NAME entries
Update find-doc-nits; better regexp's for parsing SYNOPSIS sections.
Rename a couple of files to have an API name.
Remove RSA_private_decrypt; it was duplicate content
Update for recent doc additions

Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoAvoid using latest clang since repo not available
Rich Salz [Mon, 20 Jun 2016 14:06:25 +0000 (10:06 -0400)]
Avoid using latest clang since repo not available

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoMake arm-xlate.pl set use strict.
David Benjamin [Mon, 20 Jun 2016 19:05:06 +0000 (15:05 -0400)]
Make arm-xlate.pl set use strict.

It was already nearly clean. Just one undeclared variable.

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

7 years agoAdd verification of proxy certs to 25-test_verify.t
Richard Levitte [Sun, 19 Jun 2016 08:56:37 +0000 (10:56 +0200)]
Add verification of proxy certs to 25-test_verify.t

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoCreate some proxy certificates
Richard Levitte [Sun, 19 Jun 2016 08:56:23 +0000 (10:56 +0200)]
Create some proxy certificates

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoMake it possible to generate proxy certs with test/certs/mkcert.sh
Richard Levitte [Sun, 19 Jun 2016 08:56:09 +0000 (10:56 +0200)]
Make it possible to generate proxy certs with test/certs/mkcert.sh

This extends 'req' to take more than one DN component, and to take
them as full DN components and not just CN values.  All other commands
are changed to pass "CN = $cn" instead of just a CN value.

This adds 'genpc', which differs from the other 'gen*' commands by not
calling 'req', and expect the result from 'req' to come through stdin.

Finally, test/certs/setup.sh gets the commands needed to generate a
few proxy certificates.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agomake update
Richard Levitte [Sun, 19 Jun 2016 08:55:59 +0000 (10:55 +0200)]
make update

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoAllow proxy certs to be present when verifying a chain
Richard Levitte [Sun, 19 Jun 2016 08:55:43 +0000 (10:55 +0200)]
Allow proxy certs to be present when verifying a chain

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoFix proxy certificate pathlength verification
Richard Levitte [Sun, 19 Jun 2016 08:55:29 +0000 (10:55 +0200)]
Fix proxy certificate pathlength verification

While travelling up the certificate chain, the internal
proxy_path_length must be updated with the pCPathLengthConstraint
value, or verification will not work properly.  This corresponds to
RFC 3820, 4.1.4 (a).

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoCheck that the subject name in a proxy cert complies to RFC 3820
Richard Levitte [Sun, 19 Jun 2016 08:55:16 +0000 (10:55 +0200)]
Check that the subject name in a proxy cert complies to RFC 3820

The subject name MUST be the same as the issuer name, with a single CN
entry added.

RT#1852

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoRT3925: Remove trailing semi from macro
Dr. Matthias St. Pierre [Mon, 20 Jun 2016 17:39:28 +0000 (13:39 -0400)]
RT3925: Remove trailing semi from macro

Reviewed-by: Andy Polyakov <appro@openssl.org>
7 years agoapps/req.c: Increment the right variable when parsing '+'
Richard Levitte [Mon, 20 Jun 2016 18:07:13 +0000 (20:07 +0200)]
apps/req.c: Increment the right variable when parsing '+'

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoRemove pointless free loop in X509_TRUST_cleanup()
Kurt Cancemi [Fri, 10 Jun 2016 01:57:36 +0000 (21:57 -0400)]
Remove pointless free loop in X509_TRUST_cleanup()

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

7 years agoRemove pointless free loop in X509_PURPOSE_cleanup()
Kurt Cancemi [Wed, 8 Jun 2016 23:15:38 +0000 (19:15 -0400)]
Remove pointless free loop in X509_PURPOSE_cleanup()

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

7 years agodoc and comment fixes
huangqinjin [Sun, 19 Jun 2016 16:17:51 +0000 (00:17 +0800)]
doc and comment fixes

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

7 years agocrypto/evp/e_aes_cbc_hmac_sha256.c: Remove spurious memset
Kurt Cancemi [Sat, 28 May 2016 11:05:15 +0000 (07:05 -0400)]
crypto/evp/e_aes_cbc_hmac_sha256.c: Remove spurious memset

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

7 years agoRT3136: Remove space after issuer/subject
Jiri Horky [Sun, 12 Jun 2016 18:02:20 +0000 (14:02 -0400)]
RT3136: Remove space after issuer/subject

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoMake DSA_SIG and ECDSA_SIG getters const.
Emilia Kasper [Thu, 9 Jun 2016 21:09:48 +0000 (23:09 +0200)]
Make DSA_SIG and ECDSA_SIG getters const.

Reorder arguments to follow convention.

Also allow r/s to be NULL in DSA_SIG_get0, similarly to ECDSA_SIG_get0.

This complements GH1193 which adds non-const setters.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agorand/randfile.c: remove obsolete commentary.
Andy Polyakov [Mon, 20 Jun 2016 11:22:46 +0000 (13:22 +0200)]
rand/randfile.c: remove obsolete commentary.

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoTests should check validation status directly
Rob Percival [Tue, 7 Jun 2016 16:56:02 +0000 (17:56 +0100)]
Tests should check validation status directly

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoTest SCT lists
Rob Percival [Tue, 7 Jun 2016 16:38:14 +0000 (17:38 +0100)]
Test SCT lists

This encompasses what was previously tested.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
7 years agoaes/asm/bsaes-armv7.pl: omit redundant stores in XTS subroutines.
Andy Polyakov [Sat, 18 Jun 2016 13:49:57 +0000 (15:49 +0200)]
aes/asm/bsaes-armv7.pl: omit redundant stores in XTS subroutines.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoaes/asm/bsaes-armv7.pl: fix XTS decrypt test failure.
Andy Polyakov [Sat, 18 Jun 2016 13:37:25 +0000 (15:37 +0200)]
aes/asm/bsaes-armv7.pl: fix XTS decrypt test failure.

RT#4578

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoChange the RAND_file_name documentation accordingly
Richard Levitte [Mon, 20 Jun 2016 06:11:50 +0000 (08:11 +0200)]
Change the RAND_file_name documentation accordingly

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
7 years agoChange default directory for the .rnd file on Windows and VMS
Richard Levitte [Mon, 20 Jun 2016 05:56:32 +0000 (07:56 +0200)]
Change default directory for the .rnd file on Windows and VMS

The previous change for Windows wasn't quite right.  Corrected to use
%HOME%, %USERPROFILE% and %SYSTEMPROFILE%, in that order.

Also adding the default home for VMS, SYS$LOGIN:

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
7 years agoAdd a comment after some #endif at end of apps source code.
FdaSilvaYY [Fri, 10 Jun 2016 20:37:32 +0000 (22:37 +0200)]
Add a comment after some #endif at end of apps source code.

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

7 years agoUseless header include of openssl/rand.h
FdaSilvaYY [Sat, 4 Jun 2016 22:35:42 +0000 (00:35 +0200)]
Useless header include of openssl/rand.h

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

7 years agoUseless includes
FdaSilvaYY [Fri, 25 Mar 2016 19:04:12 +0000 (20:04 +0100)]
Useless includes

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

7 years agoMissing NULL check on OBJ_dup result in x509_name_canon
FdaSilvaYY [Fri, 3 Jun 2016 22:14:52 +0000 (00:14 +0200)]
Missing NULL check on OBJ_dup result in x509_name_canon

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

7 years agoFix an MSVC warning.
FdaSilvaYY [Tue, 10 May 2016 20:20:23 +0000 (22:20 +0200)]
Fix an MSVC warning.

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

7 years agoUse a STACK_OF(OPENSSL_CSTRING) for const char * stacks
Matt Caswell [Wed, 15 Jun 2016 15:25:21 +0000 (16:25 +0100)]
Use a STACK_OF(OPENSSL_CSTRING) for const char * stacks

Better than losing the const qualifier.

RT4378

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoOpenBSD has intypes.h
Matt Caswell [Wed, 15 Jun 2016 15:06:44 +0000 (16:06 +0100)]
OpenBSD has intypes.h

Update e_os2.h so that inttypes.h is included.

RT4378

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoReplace 4 casts with 1
Matt Caswell [Wed, 15 Jun 2016 14:59:46 +0000 (15:59 +0100)]
Replace 4 casts with 1

Changing the type of the |str| variable in asn1pars enables us to remove
4 casts with just 1. This silences an OpenBSD warning along the way.

RT4378

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoImprove const correctness for stacks of EVP_MD
Matt Caswell [Wed, 15 Jun 2016 14:32:38 +0000 (15:32 +0100)]
Improve const correctness for stacks of EVP_MD

EVP_MDs are always const, so stacks of them should be too. This silences
a warning about type punning on OpenBSD.

RT4378

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoconstify SRP
Matt Caswell [Wed, 15 Jun 2016 14:17:50 +0000 (15:17 +0100)]
constify SRP

Add const qualifiers to lots of SRP stuff. This started out as an effort
to silence some "type-punning" warnings on OpenBSD...but the fix was to
have proper const correctness in SRP.

RT4378

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoAvoid type punning warnings in b_addr.c
Matt Caswell [Wed, 15 Jun 2016 10:50:09 +0000 (11:50 +0100)]
Avoid type punning warnings in b_addr.c

RT4378

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoChange default directory for storing the .rnd file on Windows
Matt Caswell [Wed, 15 Jun 2016 15:14:30 +0000 (11:14 -0400)]
Change default directory for storing the .rnd file on Windows

Previously we would try %RANDFILE%, then %HOME% and finally "C:".
Unfortunately this often ends up being "C:" which the user may not
have write permission for.

Now we try %RANDFILE% first, and then the same set of environment vars
as GetTempFile() uses, i.e. %TMP%, then %TEMP%, %USERPROFILE% and
%SYSTEMROOT%. If all else fails we fall back to %HOME% and only then "C:".

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoHarmonise the different build files
Richard Levitte [Thu, 16 Jun 2016 22:23:43 +0000 (00:23 +0200)]
Harmonise the different build files

- User targets are now the same and generally do the same things
- configdata.pm depends on exactly the same files on all platforms
- VMS production of shared libraries is simplified
- VMS automatic dependency files get the extension .D rather than .MMS

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoFix GCC build; make update; fix number re-use
Rich Salz [Thu, 16 Jun 2016 18:49:37 +0000 (14:49 -0400)]
Fix GCC build; make update; fix number re-use

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoSpelling fixes
FdaSilvaYY [Tue, 14 Jun 2016 21:02:16 +0000 (23:02 +0200)]
Spelling fixes

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

7 years agono-ripemd is an alias for no-rmd160
Matt Caswell [Thu, 16 Jun 2016 10:45:24 +0000 (11:45 +0100)]
no-ripemd is an alias for no-rmd160

mkdef.pl was failing to understand no-ripemd. This is a deprecated option
which should act as an alias for no-rmd160.

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoFix build break.
Rich Salz [Thu, 16 Jun 2016 16:58:57 +0000 (12:58 -0400)]
Fix build break.

Aggregate local initializers are rarely portable (:

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoAdd EVP_PKEY_get0_hmac() function
Nathaniel McCallum [Wed, 15 Jun 2016 18:02:04 +0000 (14:02 -0400)]
Add EVP_PKEY_get0_hmac() function

Before the addition of this function, it was impossible to read the
symmetric key from an EVP_PKEY_HMAC type EVP_PKEY.

Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1217)

7 years agoRevert "RT4526: Call TerminateProcess, not ExitProcess"
Matt Caswell [Thu, 16 Jun 2016 14:59:42 +0000 (15:59 +0100)]
Revert "RT4526: Call TerminateProcess, not ExitProcess"

This reverts commit 9c1a9ccf65d0ea1912675d3a622fa8e51b524b9e.

TerminateProcess is asynchronous, so the code as written in the above
commit is not correct. It is also probably not needed in the speed
case. Reverting in order to figure out the correct solution.

Reviewed-by: Rich Salz <rsalz@openssl.org>
7 years agoSkip the TLSProxy tests if environmental problems are an issue
Matt Caswell [Tue, 14 Jun 2016 13:35:26 +0000 (14:35 +0100)]
Skip the TLSProxy tests if environmental problems are an issue

On some platforms we can't startup the TLSProxy due to environmental
problems (e.g. network set up on the build machine). These aren't OpenSSL
problems so we shouldn't treat them as test failures. Just visibly
indicate that we are skipping the test.

We only skip the first time we attempt to start up the proxy. If that works
then everything else should do...if not we should probably investigate and
so report as a failure.

This also removes test_networking...there is a danger that this turns into
a test of user's environmental set up rather than OpenSSL.

Reviewed-by: Richard Levitte <levitte@openssl.org>
7 years agoFix the build and tests following constification of DH, DSA, RSA
Matt Caswell [Thu, 16 Jun 2016 09:07:32 +0000 (10:07 +0100)]
Fix the build and tests following constification of DH, DSA, RSA

Misc fixes following the constification of the DH, DSA and RSA
getters.

Reviewed-by: Stephen Henson <steve@openssl.org>
7 years agoChange the return type of EVP_EncodeUpdate
Matt Caswell [Mon, 25 Apr 2016 12:56:44 +0000 (13:56 +0100)]
Change the return type of EVP_EncodeUpdate

Previously EVP_EncodeUpdate returned a void. However there are a couple
of error conditions that can occur. Therefore the return type has been
changed to an int, with 0 indicating error and 1 indicating success.

Reviewed-by: Rich Salz <rsalz@openssl.org>