openssl.git
4 years agoHandle inability to create AFALG socket
Matt Caswell [Wed, 1 Jun 2016 22:15:12 +0000 (23:15 +0100)]
Handle inability to create AFALG socket

Some Linux platforms have a suitably recent kernel to support AFALG, but
apparently you still can't actually create an afalg socket. This extends
the afalg_chk_platform() function to additionally check whether we can
create an AFALG socket. We also amend the afalgtest to not report a
failure to load the engine as a test failure. A failure to load is almost
certainly due to platform environmental issues, and not an OpenSSL problem.

RT 4434

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoPort DTLS version negotiation tests
Emilia Kasper [Fri, 3 Jun 2016 15:49:04 +0000 (17:49 +0200)]
Port DTLS version negotiation tests

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoClean up following new SNI tests
Emilia Kasper [Thu, 9 Jun 2016 22:39:22 +0000 (00:39 +0200)]
Clean up following new SNI tests

- Only send SNI in SNI tests. This allows us to test handshakes without
  the SNI extension as well.
- Move all handshake-specific machinery to handshake_helper.c
- Use enum types to represent the enum everywhere
  (Resorting to plain ints can end in sign mismatch when the enum is
  represented by an unsigned type.)

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoRT3809: basicConstraints is critical
Rich Salz [Mon, 13 Jun 2016 02:21:54 +0000 (22:21 -0400)]
RT3809: basicConstraints is critical

This is really a security bugfix, not enhancement any more.
Everyone knows critical extensions.

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
4 years agobn/bn_add.c: favour counted loops over ifs and breaks.
Andy Polyakov [Sun, 12 Jun 2016 10:34:46 +0000 (12:34 +0200)]
bn/bn_add.c: favour counted loops over ifs and breaks.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agodoc/crypto/OPENSSL_ia32cap.pod update.
Andy Polyakov [Sun, 12 Jun 2016 10:31:40 +0000 (12:31 +0200)]
doc/crypto/OPENSSL_ia32cap.pod update.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoDon't skip leading zeroes in PSK keys.
Dr. Stephen Henson [Wed, 8 Jun 2016 18:01:42 +0000 (19:01 +0100)]
Don't skip leading zeroes in PSK keys.

Don't use BN_hex2bn() for PSK key conversion as the conversion to
BN and back removes leading zeroes, use OPENSSL_hexstr2buf() instead.

RT#4554

Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoRT2759: Don't read TTY when already at EOF.
John Denker [Fri, 10 Jun 2016 18:46:07 +0000 (14:46 -0400)]
RT2759: Don't read TTY when already at EOF.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoAvoid memory leaks if options repeated.
Rich Salz [Fri, 10 Jun 2016 15:40:32 +0000 (11:40 -0400)]
Avoid memory leaks if options repeated.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoRT3053: Check for NULL before dereferencing
Phillip Hellewell [Sun, 12 Jun 2016 00:04:21 +0000 (20:04 -0400)]
RT3053: Check for NULL before dereferencing

Reviewed-by: Tim Hudson <tjh@openssl.org>
4 years agoEnsure that the EVP_MD_meth_new docs properly match the declared functions;
TJ Saunders [Fri, 10 Jun 2016 20:10:51 +0000 (13:10 -0700)]
Ensure that the EVP_MD_meth_new docs properly match the declared functions;
it looks like these names have shifted a little over time.

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

4 years agoAvoid creating illegal pointers
Kurt Roeckx [Mon, 6 Jun 2016 20:50:25 +0000 (22:50 +0200)]
Avoid creating illegal pointers

Found by tis-interpreter

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

4 years agoinclude stdlib for malloc() and free()
Kurt Roeckx [Sun, 5 Jun 2016 18:51:04 +0000 (20:51 +0200)]
include stdlib for malloc() and free()

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

4 years agoDon't compare a just free()d pointer
Kurt Roeckx [Sun, 5 Jun 2016 18:48:08 +0000 (20:48 +0200)]
Don't compare a just free()d pointer

Found by tis-interpreter

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

4 years agoSpecify array sizes
Kurt Roeckx [Sun, 5 Jun 2016 12:13:33 +0000 (14:13 +0200)]
Specify array sizes

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

4 years agoAvoid creating an illegal pointer.
Kurt Roeckx [Sat, 4 Jun 2016 17:52:28 +0000 (19:52 +0200)]
Avoid creating an illegal pointer.

Found by tis-interpreter

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

4 years agoAvoid creating an illegal pointer
Kurt Roeckx [Sat, 4 Jun 2016 14:25:39 +0000 (16:25 +0200)]
Avoid creating an illegal pointer

Found by tis-interpreter

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

4 years agoFix an error path leak in int X509_ATTRIBUTE_set1_data()
Matt Caswell [Fri, 10 Jun 2016 14:30:41 +0000 (15:30 +0100)]
Fix an error path leak in int X509_ATTRIBUTE_set1_data()

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoFix an error path leak in do_ext_nconf()
Matt Caswell [Fri, 10 Jun 2016 14:30:09 +0000 (15:30 +0100)]
Fix an error path leak in do_ext_nconf()

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoFix seg fault in TS_RESP_verify_response()
Matt Caswell [Fri, 10 Jun 2016 13:25:15 +0000 (14:25 +0100)]
Fix seg fault in TS_RESP_verify_response()

The TS_RESP_verify_response() function is used for verifying the response
from a TSA. You can set the provided TS_VERIFY_CTX with different flags
depending on what aspects of the response you wish to verify.

A seg fault will occur if you supply the TS_VFY_SIGNER or TS_VFY_TSA_NAME
flags without also specifying TS_VFY_SIGNATURE.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoFix no-dtls* builds
Matt Caswell [Fri, 10 Jun 2016 09:49:48 +0000 (10:49 +0100)]
Fix no-dtls* builds

Most of the no-dtls* builds were failing due to one test which had an
incorrect "skip" condition.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoExpand SSL_CTX_set_default_verify_paths() documentation
Matt Caswell [Thu, 9 Jun 2016 13:48:40 +0000 (14:48 +0100)]
Expand SSL_CTX_set_default_verify_paths() documentation

Add some information about the location of the default directory and the
default file.

RT#1051

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoGH1183: Fix -unix and -connect, etc., override
Rich Salz [Wed, 8 Jun 2016 16:22:14 +0000 (12:22 -0400)]
GH1183: Fix -unix and -connect, etc., override

If a user specifies -unix, -6, etc., then the program tries to
use the last one specified.  This is confusing code and leads to
scripting errors.  Instead, allow only one type.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoOmit corpora from tarball.
Ben Laurie [Fri, 10 Jun 2016 11:07:32 +0000 (12:07 +0100)]
Omit corpora from tarball.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoMake corpora binary.
Ben Laurie [Thu, 12 May 2016 09:29:13 +0000 (10:29 +0100)]
Make corpora binary.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoAdd fuzz corpora.
Ben Laurie [Sat, 7 May 2016 17:51:08 +0000 (18:51 +0100)]
Add fuzz corpora.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoRT3720 Increment session miss counter properly
Laszlo Kovacs [Fri, 20 Feb 2015 19:35:57 +0000 (14:35 -0500)]
RT3720 Increment session miss counter properly

Reviewed-by: Kurt Roeckx <kurt@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoRT 4242: reject invalid EC point coordinates
Emilia Kasper [Fri, 3 Jun 2016 12:42:04 +0000 (14:42 +0200)]
RT 4242: reject invalid EC point coordinates

We already test in EC_POINT_oct2point that points are on the curve. To
be on the safe side, move this check to
EC_POINT_set_affine_coordinates_* so as to also check point coordinates
received through some other method.

We do not check projective coordinates, though, as
- it's unlikely that applications would be receiving this primarily
  internal representation from untrusted sources, and
- it's possible that the projective setters are used in a setting where
  performance matters.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoMake a2i_ipadd an internal function
Rich Salz [Sun, 5 Jun 2016 19:51:35 +0000 (15:51 -0400)]
Make a2i_ipadd an internal function

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoMore API docs; small changes.
Rich Salz [Thu, 9 Jun 2016 21:02:59 +0000 (17:02 -0400)]
More API docs; small changes.

Also fix typo noted on GitHub.
Suppport typedef and #define to find-doc-nits

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoClean up "generic" intro pod files.
Rich Salz [Thu, 9 Jun 2016 20:39:19 +0000 (16:39 -0400)]
Clean up "generic" intro pod files.

Files like dh.pod, etc., mostly duplicated the API-specific pod files.
Removed the duplicated content; that often mean the whole file could
be removed.  Some of the content about internals got moved into README
files in the source tree.  Some content (e.g., err.pod) got moved
into other pod pages.

Annotate generic pages, remove dup NAME

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoWrite X509_dup, PEM_read, etc.
Rich Salz [Thu, 9 Jun 2016 12:34:17 +0000 (08:34 -0400)]
Write X509_dup, PEM_read, etc.

Partially document the ASN1 template stuff, and its use for i2d/d2i
and PEM I/O.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoDocs: install generic manpages to man section 7
Richard Levitte [Thu, 9 Jun 2016 15:22:26 +0000 (17:22 +0200)]
Docs: install generic manpages to man section 7

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agohmac/hmac.c: fix sizeof typo in hmac_ctx_cleanup.
Andy Polyakov [Wed, 8 Jun 2016 18:38:12 +0000 (20:38 +0200)]
hmac/hmac.c: fix sizeof typo in hmac_ctx_cleanup.

Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoFix session ticket and SNI
Todd Short [Thu, 12 May 2016 22:16:52 +0000 (18:16 -0400)]
Fix session ticket and SNI

When session tickets are used, it's possible that SNI might swtich the
SSL_CTX on an SSL. Normally, this is not a problem, because the
initial_ctx/session_ctx are used for all session ticket/id processes.

However, when the SNI callback occurs, it's possible that the callback
may update the options in the SSL from the SSL_CTX, and this could
cause SSL_OP_NO_TICKET to be set. If this occurs, then two bad things
can happen:

1. The session ticket TLSEXT may not be written when the ticket expected
flag is set. The state machine transistions to writing the ticket, and
the client responds with an error as its not expecting a ticket.
2. When creating the session ticket, if the ticket key cb returns 0
the crypto/hmac contexts are not initialized, and the code crashes when
trying to encrypt the session ticket.

To fix 1, if the ticket TLSEXT is not written out, clear the expected
ticket flag.
To fix 2, consider a return of 0 from the ticket key cb a recoverable
error, and write a 0 length ticket and continue. The client-side code
can explicitly handle this case.

Fix these two cases, and add unit test code to validate ticket behavior.

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

4 years agoFixes to get -ansi working
Jeffrey Walton [Wed, 8 Jun 2016 19:10:50 +0000 (20:10 +0100)]
Fixes to get -ansi working

Various fixes to get the following to compile:

./config no-asm -ansi -D_DEFAULT_SOURCE

RT4479
RT4480

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoAdd some accessor API's
Rich Salz [Wed, 8 Jun 2016 15:37:06 +0000 (11:37 -0400)]
Add some accessor API's

GH1098: Add X509_get_pathlen() (and a test)
GH1097:  Add SSL_is_dtls() function.

Documented.

Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agocrypto/x509/x509_vpm.c: Simplify int_x509_param_set1()
Kurt Cancemi [Thu, 26 May 2016 20:38:31 +0000 (16:38 -0400)]
crypto/x509/x509_vpm.c: Simplify int_x509_param_set1()

This change also avoids calling strlen twice when srclen is 0

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoAlways use session_ctx when removing a session
Todd Short [Thu, 26 May 2016 17:49:36 +0000 (13:49 -0400)]
Always use session_ctx when removing a session

Sessions are stored on the session_ctx, which doesn't change after
SSL_set_SSL_CTX().

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoFix some typos in pod files
FdaSilvaYY [Tue, 7 Jun 2016 21:03:15 +0000 (23:03 +0200)]
Fix some typos in pod files

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

4 years agoIgnore tsget.pl and c_rehash.pl, as well as other compiler generated files
Richard Levitte [Wed, 8 Jun 2016 12:08:53 +0000 (14:08 +0200)]
Ignore tsget.pl and c_rehash.pl, as well as other compiler generated files

Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoAdd empty record tests
Matt Caswell [Wed, 1 Jun 2016 16:44:19 +0000 (17:44 +0100)]
Add empty record tests

The previous commit changed how we handle out-of-context empty records.
This commit adds some tests for the various scenarios. There are three
tests:
1: Check that if we inject an out-of-context empty record then we fail
2: Check that if we inject an in-context empty record then we succeed
3: Check that if we inject too many in-context empty records then we fail.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoReject out of context empty records
Matt Caswell [Wed, 1 Jun 2016 15:31:11 +0000 (16:31 +0100)]
Reject out of context empty records

Previously if we received an empty record we just threw it away and
ignored it. Really though if we get an empty record of a different content
type to what we are expecting then that should be an error, i.e. we should
reject out of context empty records. This commit makes the necessary changes
to achieve that.

RT#4395

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoFix pipelining bug
Matt Caswell [Wed, 1 Jun 2016 15:25:31 +0000 (16:25 +0100)]
Fix pipelining bug

The number of read pipelines should be reset in the event of reuse of an
SSL object.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoAdd a BN_mod_word test()
Matt Caswell [Tue, 31 May 2016 10:38:52 +0000 (11:38 +0100)]
Add a BN_mod_word test()

The previous commit fixed a bug with BN_mod_word() which would have been
caught if we had a test for it. This commit adds one.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoFix BN_mod_word bug
Matt Caswell [Tue, 31 May 2016 10:28:14 +0000 (11:28 +0100)]
Fix BN_mod_word bug

On systems where we do not have BN_ULLONG (e.g. typically 64 bit systems)
then BN_mod_word() can return incorrect results if the supplied modulus is
too big.

RT#4501

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoUnify d2i/i2d documentation.
Rich Salz [Tue, 7 Jun 2016 19:49:08 +0000 (15:49 -0400)]
Unify d2i/i2d documentation.

Make d2i_X509 a generic d2i/i2d manpage.
Pull common stuff out of other d2i/i2d docs.
Update find-doc-nits to know about "generic" manpages.
Cleanup some overlap.
Fix up a bunch of other references.

Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoNit about pod filenames
Rich Salz [Tue, 7 Jun 2016 17:08:20 +0000 (13:08 -0400)]
Nit about pod filenames

The asdf.pod filename must have asdf in its NAME section.
also check for names existing as a different filename (via Levitte)

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
4 years agoFix potential access of null pointer (pp)
Rob Percival [Tue, 7 Jun 2016 16:01:44 +0000 (17:01 +0100)]
Fix potential access of null pointer (pp)

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

4 years agoAdd an SSL get/set test
Matt Caswell [Tue, 7 Jun 2016 15:35:38 +0000 (16:35 +0100)]
Add an SSL get/set test

We just do the getters/setter for tlsext_status_type. This could be extended
for others in the future.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoAdd documentation for the newly added SSL_get_tlsext_status_type()
Matt Caswell [Tue, 7 Jun 2016 13:33:07 +0000 (14:33 +0100)]
Add documentation for the newly added SSL_get_tlsext_status_type()

And also for SSL_CTX_get_tlsext_status_type()

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoAdd SSL_CTX_get_tlsext_status_type()
Matt Caswell [Tue, 7 Jun 2016 14:14:14 +0000 (15:14 +0100)]
Add SSL_CTX_get_tlsext_status_type()

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoReturn the value of tlsext_status_type in the return not arg
Matt Caswell [Tue, 7 Jun 2016 14:13:40 +0000 (15:13 +0100)]
Return the value of tlsext_status_type in the return not arg

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoAdd SSL_get_tlsext_status_type() method
Alessandro Ghedini [Tue, 10 May 2016 23:48:49 +0000 (00:48 +0100)]
Add SSL_get_tlsext_status_type() method

The tlsext_status_type field in SSL is used by e.g. OpenResty to determine
if the client requested the certificate status, but SSL is now opaque.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoFix some GitHub issues.
Rich Salz [Tue, 7 Jun 2016 14:54:42 +0000 (10:54 -0400)]
Fix some GitHub issues.

GH1180: Local variable sometimes unused
GH1181: Missing close paren.

Thanks to <wipedout@yandex.ru> for reporting these.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoSet flag BN_FLG_CONSTTIME earlier
Cesar Pereida [Tue, 7 Jun 2016 13:02:01 +0000 (16:02 +0300)]
Set flag BN_FLG_CONSTTIME earlier

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoRemove kq and set BN_FLG_CONSTTIME in k for BN_mod_inverse
Cesar Pereida [Tue, 7 Jun 2016 08:32:23 +0000 (11:32 +0300)]
Remove kq and set BN_FLG_CONSTTIME in k for BN_mod_inverse

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoAdd script to find undocumented API
Rich Salz [Wed, 1 Jun 2016 17:10:24 +0000 (13:10 -0400)]
Add script to find undocumented API

Also tweaks to find-doc-nits, including name/synopsis checking.
Ironically, it also reports on duplicated doc names :)

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoDocument the issue with threads and dlopen()
Matt Caswell [Tue, 7 Jun 2016 12:24:01 +0000 (13:24 +0100)]
Document the issue with threads and dlopen()

If using threads and OpenSSL is loaded via dlopen(), and subsequently
closed again via dlclose() *before* the threads are destroyed, then
OpenSSL will not free up the per thread resources. We need to document
this restriction, and provide some guidance on what to do about it.

I did some testing and discovered/verified a few of things (at least
this is the behaviour on Linux):

- Using OpenSSL via dlopen in a mutli-threaded app does leak memory if
threads are destroyed after dlcose() is called.
- In a single threaded environment, or if threads are destroyed prior to
dlclose() being called, then no memory is leaked
- Using the RTLD_NODELETE flag to dlopen solves the above problem
- Interestingly the OpenSSL atexit() handler gets called when dlclose()
is called rather than at application exit (I was worred that it might crash
if there was an atexit() handler for a function that has been unloaded)
- RTLD_NODELETE is a non-standard flag - but it does seem to be fairly
widely supported. As far as I could determine (via google), at least Linux,
Solaris, OpenBSD, FreeBSD, HP-UX all seem to support it.

I also tested on Windows (using LoadLibrary instead of dlopen and
FreeLibrary instead of dlclose) and experienced similar behaviour, except
that (AFAIK) there is no equivalent of RTLD_NODELETE on Windows.

GitHub Issue #653

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoMore doc nits
Rich Salz [Mon, 6 Jun 2016 04:43:05 +0000 (00:43 -0400)]
More doc nits

Update script to look for period or POD markup in NAME section, and
fix them.

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoNOTES.WIN: use secure urls
Viktor Szakats [Sun, 5 Jun 2016 21:43:16 +0000 (23:43 +0200)]
NOTES.WIN: use secure urls
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1175)

4 years agotests: fix the shutting up of the shell
Richard Levitte [Mon, 6 Jun 2016 13:01:50 +0000 (15:01 +0200)]
tests: fix the shutting up of the shell

If we're going to redirect STDERR and STDOUT, it's better to do it by
the book.  This fix is a straight copy of examples in the perlfunc
manual.

Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoFix the directory target generation
Richard Levitte [Sun, 5 Jun 2016 20:12:04 +0000 (22:12 +0200)]
Fix the directory target generation

The directories for the final products were never registered, it was
plain luck that intermediary files were in the same place and
registered the directory anyway.

Also, scripts are generated directly from source (binaries go through
intermadiary object files), so we need to explicitely make sure to
avoid registering the source directory unless it's an in source
build.

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoDeprecate the flags that switch off constant time
Matt Caswell [Thu, 26 May 2016 09:55:11 +0000 (10:55 +0100)]
Deprecate the flags that switch off constant time

The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and
DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch
off the constant time implementation for RSA, DSA and DH have been made
no-ops and deprecated.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoSimplify dsa_ossl.c
Matt Caswell [Thu, 26 May 2016 09:06:27 +0000 (10:06 +0100)]
Simplify dsa_ossl.c

The dsa_ossl.c file defined a couple of multi-line macros, but then only
used each one once. The macros just serve to complicate the code and make
it more difficult to understand what is really going on. Hence they are
removed.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoFix DSA, preserve BN_FLG_CONSTTIME
Cesar Pereida [Mon, 23 May 2016 09:45:25 +0000 (12:45 +0300)]
Fix DSA, preserve BN_FLG_CONSTTIME

Operations in the DSA signing algorithm should run in constant time in
order to avoid side channel attacks. A flaw in the OpenSSL DSA
implementation means that a non-constant time codepath is followed for
certain operations. This has been demonstrated through a cache-timing
attack to be sufficient for an attacker to recover the private DSA key.

CVE-2016-2178

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agos390x assembly pack: improve portability.
Andy Polyakov [Mon, 30 May 2016 20:16:31 +0000 (22:16 +0200)]
s390x assembly pack: improve portability.

Some of the instructions used in latest additions are extension
ones. There is no real reason to limit ourselves to specific
processors, so [re-]adhere to base instruction set.

RT#4548

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agotests: Shut the shell up unless verbose
Richard Levitte [Sun, 5 Jun 2016 21:01:24 +0000 (23:01 +0200)]
tests: Shut the shell up unless verbose

In rare cases, the shell we run test programs in may have complaints.
Shut those up unless testing verbosely.

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
4 years agoRemove extra include's in synopsis.
Rich Salz [Fri, 3 Jun 2016 20:19:49 +0000 (16:19 -0400)]
Remove extra include's in synopsis.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoConfigure: complete the changed fuzz option checks
Richard Levitte [Sun, 5 Jun 2016 08:59:31 +0000 (10:59 +0200)]
Configure: complete the changed fuzz option checks

Reviewed-by: Andy Polyakov <appro@openssl.org>
4 years agoSilence misleading test_abort stderr output
Viktor Dukhovni [Sun, 5 Jun 2016 15:13:34 +0000 (11:13 -0400)]
Silence misleading test_abort stderr output

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoConstify X509V3_EXT_*_conf*
FdaSilvaYY [Sat, 14 May 2016 21:09:34 +0000 (23:09 +0200)]
Constify X509V3_EXT_*_conf*

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

4 years agoConstify ASN1_generate_nconf
FdaSilvaYY [Sat, 14 May 2016 21:18:49 +0000 (23:18 +0200)]
Constify ASN1_generate_nconf

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

4 years agoConstify ASN1_generate_v3
FdaSilvaYY [Sat, 14 May 2016 20:23:55 +0000 (22:23 +0200)]
Constify ASN1_generate_v3

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

4 years agoConstify s2i_ASN1_IA5STRING
FdaSilvaYY [Sat, 14 May 2016 21:03:22 +0000 (23:03 +0200)]
Constify s2i_ASN1_IA5STRING

Return directly NULL after ASN1_STRING_set, as it already has set an error code.

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

4 years agoConstify s2i_ASN1_INTEGER
FdaSilvaYY [Sat, 14 May 2016 06:59:16 +0000 (08:59 +0200)]
Constify s2i_ASN1_INTEGER

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

4 years agoConstify X509_OBJECT_get_type & X509_OBJECT_get0_X509
FdaSilvaYY [Sat, 14 May 2016 06:58:28 +0000 (08:58 +0200)]
Constify X509_OBJECT_get_type & X509_OBJECT_get0_X509

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

4 years agoClean away the last unixmake vestiges
Richard Levitte [Sat, 4 Jun 2016 18:35:58 +0000 (20:35 +0200)]
Clean away the last unixmake vestiges

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoFix re-used function code
Rich Salz [Sat, 4 Jun 2016 16:28:08 +0000 (12:28 -0400)]
Fix re-used function code

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoIgnore buildtest artifacts.
Rich Salz [Sat, 4 Jun 2016 12:23:11 +0000 (08:23 -0400)]
Ignore buildtest artifacts.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoAdd developer targets for each subdirectory we have something to build in
Richard Levitte [Sat, 2 Apr 2016 20:26:38 +0000 (22:26 +0200)]
Add developer targets for each subdirectory we have something to build in

Previous build scheme allowed building just the stuff in one
subdirectory, like this:

    make -C crypto/aes

Because the unified only has a top-level Makefile, this is not
possible with it.  This change adds a replacement where each directory
we have something to build in becomes a target in its own right,
allowing building something like this:

    make crypto/aes

The exception is the directory test, because we already have such a
target.

Reviewed-by: Stephen Henson <steve@openssl.org>
4 years agoSpecifiy size of arrays
Kurt Roeckx [Fri, 27 May 2016 19:10:05 +0000 (21:10 +0200)]
Specifiy size of arrays

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

4 years agoCheck for overflows in EOC.
Dr. Stephen Henson [Sat, 4 Jun 2016 11:48:00 +0000 (12:48 +0100)]
Check for overflows in EOC.

RT#4474 (partial)

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoAdd support for fuzzing with AFL
Kurt Roeckx [Sat, 7 May 2016 20:09:13 +0000 (22:09 +0200)]
Add support for fuzzing with AFL

Reviewed-by: Ben Laurie <ben@links.org>
MR: #2740

4 years agoRT3895: Remove fprintf's from SSL library.
Rich Salz [Sat, 4 Jun 2016 02:45:47 +0000 (22:45 -0400)]
RT3895: Remove fprintf's from SSL library.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoMore utils cleanup.
Rich Salz [Fri, 3 Jun 2016 18:49:20 +0000 (14:49 -0400)]
More utils cleanup.

Remove some unused files.
Rename doc-nit-check to be consistent.
Add check for multiple #include in synopsis.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoMake 25-test_gen.t and 25-test_req.t into one
Richard Levitte [Fri, 3 Jun 2016 23:05:06 +0000 (01:05 +0200)]
Make 25-test_gen.t and 25-test_req.t into one

Since one generates files that the other depends on, there's no
real reason to keep them separate.  Since they were both different
aspects of 'openssl req', the merge ends up in 25-test_req.t.

This also makes cleanup easier.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoHave some more test recipes clean up after themselves
Richard Levitte [Fri, 3 Jun 2016 22:50:17 +0000 (00:50 +0200)]
Have some more test recipes clean up after themselves

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoWindows build: Remove .manifest files in test/ as well
Richard Levitte [Fri, 3 Jun 2016 22:48:13 +0000 (00:48 +0200)]
Windows build: Remove .manifest files in test/ as well

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoChange inclusion of sys/types.h to stdlib.h in include/openssl/ebcdic.h
Richard Levitte [Fri, 3 Jun 2016 18:28:39 +0000 (20:28 +0200)]
Change inclusion of sys/types.h to stdlib.h in include/openssl/ebcdic.h

Needed to get size_t on Windows

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoAdd inclusion of stdlib.h in include/openssl/mdc2.h
Richard Levitte [Fri, 3 Jun 2016 13:04:22 +0000 (15:04 +0200)]
Add inclusion of stdlib.h in include/openssl/mdc2.h

Needed to get size_t

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoAdd inclusion of openssl/x509.h in include/openssl/tls1.h
Richard Levitte [Fri, 3 Jun 2016 13:05:03 +0000 (15:05 +0200)]
Add inclusion of openssl/x509.h in include/openssl/tls1.h

Needed to get the needed declarations for STACK_OF(X509)

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoGenerate simple build test files
Richard Levitte [Fri, 3 Jun 2016 13:02:10 +0000 (15:02 +0200)]
Generate simple build test files

Generate small test programs to check that external programs can be
built with our stuff at a very basic level.

For now, they check that each of our header files can be included
individually without compile failure.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoFix documentation error in x509 app certopt flag
Matt Caswell [Fri, 3 Jun 2016 20:49:01 +0000 (21:49 +0100)]
Fix documentation error in x509 app certopt flag

According to the x509 man page in the section discussing -certopt it says
that the ca_default option is the same as that used by the ca utility and
(amongst other things) has the effect of suppressing printing of the
signature - but in fact it doesn't. This error seems to have been present
since the documentation was written back in 2001. It never had this effect.

The default config file sets the certopt value to ca_default. The ca utility
takes that and THEN adds additional options to suppress printing of the
signature. So the ca utility DOES suppress printing of the signature - but
it is not as a result of using the ca_default option.

GitHub Issue #247

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoBIO_printf() can fail to print the last character
Matt Caswell [Fri, 3 Jun 2016 14:53:54 +0000 (15:53 +0100)]
BIO_printf() can fail to print the last character

If the string to print is exactly 2048 character long (excluding the NULL
terminator) then BIO_printf will chop off the last byte. This is because
it has filled its static buffer but hasn't yet allocated a dynamic buffer.
In cases where we don't have a dynamic buffer we need to truncate but that
is not the case for BIO_printf(). We need to check whether we are able to
have a dynamic buffer buffer deciding to truncate.

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agocryptodev_asym, zapparams: use OPENSSL_* allocation routines, handle errors
Jonas Maebe [Sun, 8 Dec 2013 16:24:18 +0000 (17:24 +0100)]
cryptodev_asym, zapparams: use OPENSSL_* allocation routines, handle errors

zapparams modification based on tip from Matt Caswell

RT#3198

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
4 years agoHandle a memory allocation failure in ssl3_init_finished_mac()
Matt Caswell [Fri, 3 Jun 2016 10:59:19 +0000 (11:59 +0100)]
Handle a memory allocation failure in ssl3_init_finished_mac()

The ssl3_init_finished_mac() function can fail, in which case we need to
propagate the error up through the stack.

RT#3198

Reviewed-by: Rich Salz <rsalz@openssl.org>
4 years agoUpdate INSTALL instructions
Matt Caswell [Thu, 2 Jun 2016 19:18:33 +0000 (20:18 +0100)]
Update INSTALL instructions

Fill out the INSTALL instructions with more information on Configure
arguments, environment variables and Makefile targets.

Reviewed-by: Richard Levitte <levitte@openssl.org>
4 years agoAdded define for STATUS_SUCCESS
Mat [Thu, 2 Jun 2016 21:38:56 +0000 (23:38 +0200)]
Added define for STATUS_SUCCESS

Use STATUS_SUCCESS instead of 0.
Renamed USE_BCRYPT to RAND_WINDOWS_USE_BCRYPT to avoid possible collisions with other defines.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1142)

4 years agoAdds casts for 64-bit
Mat [Sun, 29 May 2016 18:44:27 +0000 (20:44 +0200)]
Adds casts for 64-bit

Adds missing casts for 64-bit.
Removed zero initialization of hProvider. hProvider is an "out" parameter of CryptAcquireContextW.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1142)