oweals/openssl.git
8 years agoUnified - adapt the generation of chacha assembler to use GENERATE
Richard Levitte [Mon, 7 Mar 2016 14:46:17 +0000 (15:46 +0100)]
Unified - adapt the generation of chacha assembler to use GENERATE

This gets rid of the BEGINRAW..ENDRAW sections in crypto/chacha/build.info.

This also moves the assembler generating perl scripts to take the
output file name as last command line argument, where necessary.

Reviewed-by: Andy Polyakov <appro@openssl.org>
8 years agoBecause crypto/build.info demands CFLAGS_Q, descrip.mms.tmpl must deliver
Richard Levitte [Mon, 7 Mar 2016 18:48:17 +0000 (19:48 +0100)]
Because crypto/build.info demands CFLAGS_Q, descrip.mms.tmpl must deliver

Reviewed-by: Andy Polyakov <appro@openssl.org>
8 years agoUnified - adapt the generation of cpuid, uplink and buildinf to use GENERATE
Richard Levitte [Mon, 7 Mar 2016 14:00:45 +0000 (15:00 +0100)]
Unified - adapt the generation of cpuid, uplink and buildinf to use GENERATE

This gets rid of the BEGINRAW..ENDRAW sections in crypto/build.info.

This also moves the assembler generating perl scripts to take the
output file name as last command line argument, where necessary.

Reviewed-by: Andy Polyakov <appro@openssl.org>
8 years agoUnified - adapt the generation of aes assembler to use GENERATE
Richard Levitte [Mon, 7 Mar 2016 14:07:35 +0000 (15:07 +0100)]
Unified - adapt the generation of aes assembler to use GENERATE

This gets rid of the BEGINRAW..ENDRAW sections in crypto/aes/build.info.

This also moves the assembler generating perl scripts to take the
output file name as last command line argument, where necessary.

Reviewed-by: Andy Polyakov <appro@openssl.org>
8 years agoUnified - adapt the generation of blowfish assembler to use GENERATE
Richard Levitte [Mon, 7 Mar 2016 14:13:01 +0000 (15:13 +0100)]
Unified - adapt the generation of blowfish assembler to use GENERATE

This gets rid of the BEGINRAW..ENDRAW sections in crypto/bf/build.info.

This also moves the assembler generating perl scripts to take the
output file name as last command line argument, where necessary.

Reviewed-by: Andy Polyakov <appro@openssl.org>
8 years agoConvert the dynlocks in e_chil to the new Thread API locks
Richard Levitte [Wed, 9 Mar 2016 09:51:30 +0000 (10:51 +0100)]
Convert the dynlocks in e_chil to the new Thread API locks

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoRemove another lock from e_chil
Matt Caswell [Wed, 9 Mar 2016 01:07:26 +0000 (01:07 +0000)]
Remove another lock from e_chil

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoAlways call ENGINE_cleanup() in de-init
Matt Caswell [Wed, 9 Mar 2016 00:53:38 +0000 (00:53 +0000)]
Always call ENGINE_cleanup() in de-init

Even if we haven't loaded an engine, we might have set up the
global_engine_lock, so we should still clean up.

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoMove chil engine to the new thread api
Matt Caswell [Tue, 8 Mar 2016 21:50:46 +0000 (21:50 +0000)]
Move chil engine to the new thread api

Move the chil engine to use the new thread API. As I don't have access to
the hardware I can't test this :-(. I think its ok...

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoMove engine library over to using the new thread API
Matt Caswell [Tue, 8 Mar 2016 16:44:34 +0000 (16:44 +0000)]
Move engine library over to using the new thread API

Remove usage of CRYPTO_LOCK_ENGINE

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoerr_lcl.h is gone, don't pretend it's there
Richard Levitte [Wed, 9 Mar 2016 07:38:11 +0000 (08:38 +0100)]
err_lcl.h is gone, don't pretend it's there

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
8 years agoAdd missing semi
Richard Levitte [Wed, 9 Mar 2016 07:32:20 +0000 (08:32 +0100)]
Add missing semi

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
8 years agoCounter mixed signedness with a cast
Richard Levitte [Wed, 9 Mar 2016 07:18:54 +0000 (08:18 +0100)]
Counter mixed signedness with a cast

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
8 years agoFix names of the #define used for platform specific code
Andrea Grandi [Tue, 8 Mar 2016 04:51:04 +0000 (04:51 +0000)]
Fix names of the #define used for platform specific code

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoAdd empty line after local variables
Andrea Grandi [Mon, 7 Mar 2016 11:20:01 +0000 (11:20 +0000)]
Add empty line after local variables

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoFix error with wait set of fds for the select()
Andrea Grandi [Thu, 3 Mar 2016 07:09:00 +0000 (07:09 +0000)]
Fix error with wait set of fds for the select()

It also makes the call to select blocking to reduce CPU usage

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoUse correct function ID in error path
Alessandro Ghedini [Tue, 8 Mar 2016 23:12:53 +0000 (23:12 +0000)]
Use correct function ID in error path

This fixes "make update".

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoMove variable declaration to the start of the function
Alessandro Ghedini [Tue, 8 Mar 2016 21:58:17 +0000 (21:58 +0000)]
Move variable declaration to the start of the function

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoEnsure CRYPTO_mem_leaks is the last thing we do
Matt Caswell [Wed, 9 Mar 2016 00:03:50 +0000 (00:03 +0000)]
Ensure CRYPTO_mem_leaks is the last thing we do

CRYPTO_mem_leaks de-inits the library, so we must not do anything
interesting after we've used it!

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoFix memory leak in ssltest
Matt Caswell [Tue, 8 Mar 2016 20:59:50 +0000 (20:59 +0000)]
Fix memory leak in ssltest

The new Rand usage of Thread API exposed a bug in ssltest. ssltest "cheats"
and uses internal headers to directly call functions that normally you
wouldn't be able to do. This means that auto-init doesn't happen, and
therefore auto-deinit doesn't happen either, meaning that the new rand locks
don't get cleaned up properly.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert rand code to new threading API
Matt Caswell [Tue, 8 Mar 2016 11:40:05 +0000 (11:40 +0000)]
Convert rand code to new threading API

Replace the CRYPTO_LOCK_RAND and CRYPTO_LOCK_RAND2 locks with new thread
API style locks.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoAdapt unix Makefile template to 'no-makedepend'
Richard Levitte [Wed, 9 Mar 2016 00:17:27 +0000 (01:17 +0100)]
Adapt unix Makefile template to 'no-makedepend'

This change is a bit more complex, as it involves several recipe
variants.

Also, remove the $(CROSS_COMPILE) prefix for the makedepend program.
When we use the program "makedepend", this doesn't serve anything,
and when we use the compiler, this value isn't even used.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoAdapt descrip.mms.tmpl to 'no-makedepend'
Richard Levitte [Wed, 9 Mar 2016 00:16:10 +0000 (01:16 +0100)]
Adapt descrip.mms.tmpl to 'no-makedepend'

VMS doesn't have "makedepend" anyway, so this is just a matter of using
the right qualifiers when 'makedepend' is enabled.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoAdd the configure option 'no-makedepend'
Richard Levitte [Wed, 9 Mar 2016 00:14:29 +0000 (01:14 +0100)]
Add the configure option 'no-makedepend'

If no makedepend program or equaly capable compiler is present,
'makedepend' gets disabled automatically.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoFix SSL_CIPHER_get_auth_nid return
Todd Short [Tue, 8 Mar 2016 19:27:23 +0000 (14:27 -0500)]
Fix SSL_CIPHER_get_auth_nid return

Copy/paste error between SSL_CIPHER_get_kx_nid() and
SSL_CIPHER_get_auth_nid(), wrong table was referenced

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoFix a typo in dynamic_load()
Richard Levitte [Wed, 9 Mar 2016 00:39:00 +0000 (01:39 +0100)]
Fix a typo in dynamic_load()

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoConvert RSA blinding to new multi-threading API
Alessandro Ghedini [Tue, 8 Mar 2016 22:37:01 +0000 (22:37 +0000)]
Convert RSA blinding to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_SSL_* to new multi-threading API
Alessandro Ghedini [Mon, 29 Feb 2016 17:26:07 +0000 (17:26 +0000)]
Convert CRYPTO_LOCK_SSL_* to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoRemove the transfer of lock hooks from bind_engine
Richard Levitte [Tue, 8 Mar 2016 23:07:10 +0000 (00:07 +0100)]
Remove the transfer of lock hooks from bind_engine

With the new threads API, this is no longer needed.

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoEngine API repair - memory management hooks
Richard Levitte [Sun, 6 Mar 2016 01:54:40 +0000 (02:54 +0100)]
Engine API repair - memory management hooks

The Engine API lost the setting of memory management hooks in
bind_engine.  Here's putting that back.

EX_DATA and ERR functions need the same treatment.

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoRedo the Unix source code generator
Richard Levitte [Tue, 8 Mar 2016 18:19:53 +0000 (19:19 +0100)]
Redo the Unix source code generator

For assembler, we want the final target to be foo.s (lowercase s).
However, the build.info may have lines like this (note upper case S):

    GENERATE[foo.S]=foo.pl

This indicates that foo.s (lowercase s) is still to be produced, but
that producing it will take an extra step via $(CC) -E.  Therefore,
the following variants (simplified for display) can be generated:

    GENERATE[foo.S]=foo.pl  =>  foo.s: foo.pl
                                 $(PERL) $foo.pl $@.S; \
                                 $(CC) $(CFLAGS) -E -P $@.S > $@ && \
                                 rm -f $@.S

    GENERATE[foo.s]=foo.pl  =>  foo.s: foo.pl
                                 $(PERL) $foo.pl $@

    GENERATE[foo.S]=foo.m4  =>  foo.s: foo.m4
                                 m4 -B 8192 $foo.m4 > $@.S; \
                                 $(CC) $(CFLAGS) -E -P $@.S > $@ && \
                                 rm -f $@.S

    GENERATE[foo.s]=foo.m4  =>  foo.s: foo.m4
                                 m4 -B 8192 $foo.m4 > $@

Reviewed-by: Andy Polyakov <appro@openssl.org>
8 years agoFix error in ssltest
Matt Caswell [Tue, 8 Mar 2016 21:13:05 +0000 (21:13 +0000)]
Fix error in ssltest

Compiling ssltest with some compilers using --strict-warnings results in
complaints about an unused result.

Reviewed-by: Kurt Roeckx <kurt@openssl.org>
8 years agoAdapt e_capi to the DSA_SIG_get0() API
Richard Levitte [Tue, 8 Mar 2016 22:12:14 +0000 (23:12 +0100)]
Adapt e_capi to the DSA_SIG_get0() API

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert mem_dbg and mem_sec to the new Thread API
Matt Caswell [Tue, 8 Mar 2016 15:44:05 +0000 (15:44 +0000)]
Convert mem_dbg and mem_sec to the new Thread API

Use new Thread API style locks, and thread local storage for mem_dbg

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoOpenSSLDie --> OPENSSL_die
Rich Salz [Sat, 13 Feb 2016 19:20:43 +0000 (14:20 -0500)]
OpenSSLDie --> OPENSSL_die

Also removed a bunch of unused define's from e_os.h

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoRemove the -n tar flag from osx dist creation
Richard Levitte [Tue, 8 Mar 2016 12:12:29 +0000 (13:12 +0100)]
Remove the -n tar flag from osx dist creation

With the unified build scheme, tar MUST recurse, or the tarball will
be empty.

Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
8 years agoRemove some old ms/* files
Rich Salz [Tue, 8 Mar 2016 19:02:54 +0000 (14:02 -0500)]
Remove some old ms/* files

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoInclude e_os.h from ec_lcl.h
Richard Levitte [Tue, 8 Mar 2016 18:55:40 +0000 (19:55 +0100)]
Include e_os.h from ec_lcl.h

The EC code recently started using REF_PRINT_COUNT and REF_ASSERT_ISNT.
Those are defined in e_os.h.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoFix cert leaks in s_server
FdaSilvaYY [Mon, 7 Mar 2016 20:00:02 +0000 (21:00 +0100)]
Fix cert leaks in s_server

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoReuse strndup(), simplify code
Dmitry-Me [Tue, 8 Mar 2016 07:00:15 +0000 (10:00 +0300)]
Reuse strndup(), simplify code

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agomake update
Dr. Stephen Henson [Tue, 8 Mar 2016 17:02:49 +0000 (17:02 +0000)]
make update

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoMake DSA_SIG opaque.
Dr. Stephen Henson [Fri, 4 Mar 2016 02:39:50 +0000 (02:39 +0000)]
Make DSA_SIG opaque.

This adds a new accessor function DSA_SIG_get0.
The customisation of DSA_SIG structure initialisation has been removed this
means that the 'r' and 's' components are automatically allocated when
DSA_SIG_new() is called. Update documentation.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoFix travis builds
Richard Levitte [Tue, 8 Mar 2016 16:27:15 +0000 (17:27 +0100)]
Fix travis builds

Travis doesn't seem to know about 'expr'

Reviewed-by: Emilia Käsper <emilia@openssl.org>
8 years agomake update
Alessandro Ghedini [Sat, 5 Mar 2016 20:53:32 +0000 (20:53 +0000)]
make update

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_X509_* to new multi-threading API
Alessandro Ghedini [Tue, 1 Mar 2016 18:06:15 +0000 (18:06 +0000)]
Convert CRYPTO_LOCK_X509_* to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_UI to new multi-threading API
Alessandro Ghedini [Mon, 29 Feb 2016 17:12:25 +0000 (17:12 +0000)]
Convert CRYPTO_LOCK_UI to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_EC_* to new multi-threading API
Alessandro Ghedini [Mon, 29 Feb 2016 16:57:11 +0000 (16:57 +0000)]
Convert CRYPTO_LOCK_EC_* to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_EVP_PKEY to new multi-threading API
Alessandro Ghedini [Fri, 26 Feb 2016 12:21:15 +0000 (12:21 +0000)]
Convert CRYPTO_LOCK_EVP_PKEY to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_BIO to new multi-threading API
Alessandro Ghedini [Fri, 26 Feb 2016 11:51:31 +0000 (11:51 +0000)]
Convert CRYPTO_LOCK_BIO to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoOnly enable ccache if it's available
Richard Levitte [Mon, 7 Mar 2016 10:22:00 +0000 (11:22 +0100)]
Only enable ccache if it's available

Reviewed-by: Emilia Käsper <emilia@openssl.org>
8 years agoUse ccache for the unified builds
Richard Levitte [Sun, 6 Mar 2016 23:33:35 +0000 (00:33 +0100)]
Use ccache for the unified builds

This may speed up our builds considerably

Reviewed-by: Emilia Käsper <emilia@openssl.org>
8 years agoFor unified builds, make a separate build directory and build there
Richard Levitte [Sun, 6 Mar 2016 22:34:49 +0000 (23:34 +0100)]
For unified builds, make a separate build directory and build there

Reviewed-by: Emilia Käsper <emilia@openssl.org>
8 years agoSPARCv9 assembly pack: unify build rules and argument handling.
Andy Polyakov [Tue, 8 Mar 2016 08:46:19 +0000 (09:46 +0100)]
SPARCv9 assembly pack: unify build rules and argument handling.

Make all scripts produce .S, make interpretation of $(CFLAGS)
pre-processor's responsibility, start accepting $(PERLASM_SCHEME).
[$(PERLASM_SCHEME) is redundant in this case, because there are
no deviataions between Solaris and Linux assemblers. This is
purely to unify .pl->.S handling across all targets.]

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoFix build; ssltest
Rich Salz [Tue, 8 Mar 2016 14:38:30 +0000 (09:38 -0500)]
Fix build; ssltest

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoTweak some more information in INSTALL
Richard Levitte [Tue, 8 Mar 2016 12:53:07 +0000 (13:53 +0100)]
Tweak some more information in INSTALL

The summary on how to add configs and how Makefile et al wasn't quite
correct any more.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoGH787: Fix ALPN
Todd Short [Sat, 5 Mar 2016 13:47:55 +0000 (08:47 -0500)]
GH787: Fix ALPN

* Perform ALPN after the SNI callback; the SSL_CTX may change due to
  that processing
* Add flags to indicate that we actually sent ALPN, to properly error
  out if unexpectedly received.
* clean up ssl3_free() no need to explicitly clear when doing memset
* document ALPN functions

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoAdd an SSL_has_pending() function
Matt Caswell [Fri, 12 Feb 2016 12:03:58 +0000 (12:03 +0000)]
Add an SSL_has_pending() function

This is similar to SSL_pending() but just returns a 1 if there is data
pending in the internal OpenSSL buffers or 0 otherwise (as opposed to
SSL_pending() which returns the number of bytes available). Unlike
SSL_pending() this will work even if "read_ahead" is set (which is the
case if you are using read pipelining, or if you are doing DTLS). A 1
return value means that we have unprocessed data. It does *not* necessarily
indicate that there will be application data returned from a call to
SSL_read(). The unprocessed data may not be application data or there
could be errors when we attempt to parse the records.

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoAdd an ability to set the SSL read buffer size
Matt Caswell [Wed, 13 Jan 2016 14:20:25 +0000 (14:20 +0000)]
Add an ability to set the SSL read buffer size

This capability is required for read pipelining. We will only read in as
many records as will fit in the read buffer (and the network can provide
in one go). The bigger the buffer the more records we can process in
parallel.

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoAdd cipher query functions
Todd Short [Sat, 5 Mar 2016 14:47:46 +0000 (09:47 -0500)]
Add cipher query functions

Add functions to determine authentication, key-exchange, FIPS and AEAD.

Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert ERR_STRING_DATA to new multi-threading API
Alessandro Ghedini [Sat, 5 Mar 2016 21:31:43 +0000 (21:31 +0000)]
Convert ERR_STRING_DATA to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert ERR_STATE to new multi-threading API
Alessandro Ghedini [Wed, 2 Mar 2016 17:36:17 +0000 (17:36 +0000)]
Convert ERR_STATE to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_EX_DATA to new multi-threading API
Alessandro Ghedini [Sat, 5 Mar 2016 21:54:02 +0000 (21:54 +0000)]
Convert CRYPTO_LOCK_EX_DATA to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_DSO to new multi-threading API
Alessandro Ghedini [Fri, 4 Mar 2016 16:04:37 +0000 (16:04 +0000)]
Convert CRYPTO_LOCK_DSO to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_{DH,DSA,RSA} to new multi-threading API
Alessandro Ghedini [Fri, 4 Mar 2016 15:43:46 +0000 (15:43 +0000)]
Convert CRYPTO_LOCK_{DH,DSA,RSA} to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoConvert CRYPTO_LOCK_GET*BYNAME to new multi-threading API
Alessandro Ghedini [Fri, 4 Mar 2016 15:24:26 +0000 (15:24 +0000)]
Convert CRYPTO_LOCK_GET*BYNAME to new multi-threading API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoGH815: The ChaCha20/Poly1305 codepoints are official
Benjamin Kaduk [Tue, 8 Mar 2016 00:00:03 +0000 (18:00 -0600)]
GH815: The ChaCha20/Poly1305 codepoints are official

CCA8, CCA9, CCAA, CCAB, CCAC, CCAD, and CCAE are now present in
https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml
so remove the "as per draft-ietf-tls-chacha20-poly1305-03" note
accordingly.

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoGH787: Fix ALPN
Todd Short [Sat, 5 Mar 2016 13:47:55 +0000 (08:47 -0500)]
GH787: Fix ALPN

* Perform ALPN after the SNI callback; the SSL_CTX may change due to
  that processing
* Add flags to indicate that we actually sent ALPN, to properly error
  out if unexpectedly received.
* clean up ssl3_free() no need to explicitly clear when doing memset
* document ALPN functions

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
8 years agoMake mk1mf recognise the --classic flag
Richard Levitte [Tue, 8 Mar 2016 13:07:40 +0000 (14:07 +0100)]
Make mk1mf recognise the --classic flag

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoFix configurations such as 'dist' and tar building
Richard Levitte [Tue, 8 Mar 2016 10:49:26 +0000 (11:49 +0100)]
Fix configurations such as 'dist' and tar building

For config targets such as 'dist', which doesn't have a BASE template,
we still need to have a default build scheme.

Additionally, the unified Makefile template's target 'tar' wasn't
quite as flexible as the unixmake one.

Finally, .travis-create-release.sh can be somewhat simplified now that
it builds with the unified build scheme.

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoWe've switch to unified build scheme by default, reflect it in travis
Richard Levitte [Tue, 8 Mar 2016 11:06:44 +0000 (12:06 +0100)]
We've switch to unified build scheme by default, reflect it in travis

We want to preserve a couple of classic builds still, the quickest is
to change all --unified to --classic

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoFix engine/asm/e_padlock-x86.pl for newer semantics
Richard Levitte [Tue, 8 Mar 2016 01:31:51 +0000 (02:31 +0100)]
Fix engine/asm/e_padlock-x86.pl for newer semantics

Reviewed-by: Andy Polyakov <appro@openssl.org>
8 years agoChange the INSTALL documentation for unified builds
Richard Levitte [Mon, 7 Mar 2016 23:04:27 +0000 (00:04 +0100)]
Change the INSTALL documentation for unified builds

Because of the unified scheme, building on different platforms is very
similar.  We currently have Unix and OpenVMS on the unified scheme,
which means that a separate INSTALL.VMS is no longer needed.

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoMake unified builds the default on Unix
Richard Levitte [Mon, 7 Mar 2016 19:43:07 +0000 (20:43 +0100)]
Make unified builds the default on Unix

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoAdd the Configure option --classic, to fall back on classic build schemes
Richard Levitte [Mon, 7 Mar 2016 19:41:39 +0000 (20:41 +0100)]
Add the Configure option --classic, to fall back on classic build schemes

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoRevert "unified build scheme: Try to nudge users to try the "unified" build"
Richard Levitte [Mon, 7 Mar 2016 19:18:59 +0000 (20:18 +0100)]
Revert "unified build scheme: Try to nudge users to try the "unified" build"

This reverts commit 242ffb05a2e4aa3fc7ffc131037e077b7e242189.

Reviewed-by: Matt Caswell <matt@openssl.org>
8 years agoFix building without multiblock support
Matt Caswell [Mon, 7 Mar 2016 23:26:32 +0000 (23:26 +0000)]
Fix building without multiblock support

Not all platforms support multiblock. Building without it fails prior to
this fix.

RT#4396

Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoDon't free NCONF obtained values
Viktor Dukhovni [Mon, 7 Mar 2016 01:01:20 +0000 (20:01 -0500)]
Don't free NCONF obtained values

Bug reported by Michel Sales.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoRemove kinv/r fields from DSA structure.
Dr. Stephen Henson [Mon, 7 Mar 2016 17:31:00 +0000 (17:31 +0000)]
Remove kinv/r fields from DSA structure.

The kinv/r fields in the DSA structure are not used by OpenSSL internally
and should not be used in general.

Reviewed-by: Rich Salz <rsalz@openssl.org>
8 years agoGH812: Fix for no-ui build on Windows
Mat [Mon, 7 Mar 2016 21:59:13 +0000 (22:59 +0100)]
GH812: Fix for no-ui build on Windows

Add UI to known algorithms in mkdef.pl

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
8 years agoAppVeyor: Only use the latest VS version
Kurt Roeckx [Mon, 7 Mar 2016 21:40:56 +0000 (22:40 +0100)]
AppVeyor: Only use the latest VS version

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

8 years agoRename the numpipes argument to ssl3_enc/tls1_enc
Matt Caswell [Mon, 7 Mar 2016 12:17:42 +0000 (12:17 +0000)]
Rename the numpipes argument to ssl3_enc/tls1_enc

The numpipes argument to ssl3_enc/tls1_enc is actually the number of
records passed in the array. To make this clearer rename the argument to
|n_recs|.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoRename a function
Matt Caswell [Mon, 7 Mar 2016 12:11:42 +0000 (12:11 +0000)]
Rename a function

Rename the have_whole_app_data_record_waiting() function to include the
ssl3_record prefix...and make it a bit shorter.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoRefactor dasync cipher implementations to improve code reuse
Matt Caswell [Mon, 7 Mar 2016 12:03:48 +0000 (12:03 +0000)]
Refactor dasync cipher implementations to improve code reuse

Move out most of the boiler plate code that is common between aes128-cbc
and aes128-cbc-hmac-sha1 into helper functions to improve code reuse.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoMove the _hidden_* static variables in dasync to be constructed in bind
Matt Caswell [Mon, 7 Mar 2016 11:08:02 +0000 (11:08 +0000)]
Move the _hidden_* static variables in dasync to be constructed in bind

The _hidden_* variables were being created on-the-fly. It is better to
create them once up front during bind to avoid any potential race
conditions.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoFix typo in SSL_pending docs
Matt Caswell [Mon, 7 Mar 2016 10:31:48 +0000 (10:31 +0000)]
Fix typo in SSL_pending docs

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoRename EVP_CIPHER_CTX_cipher_data to EVP_CIPHER_CTX_get_cipher_data
Matt Caswell [Mon, 7 Mar 2016 10:17:27 +0000 (10:17 +0000)]
Rename EVP_CIPHER_CTX_cipher_data to EVP_CIPHER_CTX_get_cipher_data

We had the function EVP_CIPHER_CTX_cipher_data which is newly added for
1.1.0. As we now also need an EVP_CIPHER_CTX_set_cipher_data it makes
more sense for the former to be called EVP_CIPHER_CTX_get_cipher_data.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoFix s_server/s_client handling of the split_send_frag argument
Matt Caswell [Mon, 7 Mar 2016 10:06:42 +0000 (10:06 +0000)]
Fix s_server/s_client handling of the split_send_frag argument

Ensure that a value of 0 is correctly handled for the split_send_frag
argument.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoAdd documentation for the EVP_CIPHER_CTX_cipher_data functions
Matt Caswell [Tue, 16 Feb 2016 14:00:55 +0000 (14:00 +0000)]
Add documentation for the EVP_CIPHER_CTX_cipher_data functions

The new pipeline code added a new function
EVP_CIPHER_CTX_set_cipher_data(). Add documentation for this and the
existing EVP_CIPHER_CTX_cipher_data() function.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoRemove the wrec record layer field
Matt Caswell [Tue, 16 Feb 2016 12:10:53 +0000 (12:10 +0000)]
Remove the wrec record layer field

We used to use the wrec field in the record layer for keeping track of the
current record that we are writing out. As part of the pipelining changes
this has been moved to stack allocated variables to do the same thing,
therefore the field is no longer needed.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoUpdate a comment
Matt Caswell [Tue, 16 Feb 2016 11:58:24 +0000 (11:58 +0000)]
Update a comment

Update a comment that was out of date due to the pipelining changes

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoAdd documentation for new s_server/s_client options
Matt Caswell [Tue, 16 Feb 2016 11:13:33 +0000 (11:13 +0000)]
Add documentation for new s_server/s_client options

Document the new split_send_frag, max_pipelines and read_buf options.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoAdd documentation for SSL_has_pending()
Matt Caswell [Tue, 16 Feb 2016 10:36:18 +0000 (10:36 +0000)]
Add documentation for SSL_has_pending()

A previous commit added the SSL_has_pending() function which provides a
method for knowing whether OpenSSL has buffered, but as yet unprocessed
record data.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoAdd pipelining documentation
Matt Caswell [Mon, 15 Feb 2016 15:45:18 +0000 (15:45 +0000)]
Add pipelining documentation

Add some documentation for all of the SSL/SSL_CTX functions/ctrls for
conrolling read and write pipelining.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoFix erroneous fall thgrough in switch statement
Matt Caswell [Mon, 15 Feb 2016 15:43:28 +0000 (15:43 +0000)]
Fix erroneous fall thgrough in switch statement

Fix an erroenous fall through when setting the max_pipelines value.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoEnsure s_client and s_server work when read_ahead is set
Matt Caswell [Fri, 12 Feb 2016 13:33:45 +0000 (13:33 +0000)]
Ensure s_client and s_server work when read_ahead is set

Previously s_client and s_server relied on using SSL_pending() which does
not take into account read_ahead. For read pipelining to work, read_ahead
gets set automatically. Therefore s_client and s_server have been
converted to use SSL_has_pending() instead.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoAdd an SSL_has_pending() function
Matt Caswell [Fri, 12 Feb 2016 12:03:58 +0000 (12:03 +0000)]
Add an SSL_has_pending() function

This is similar to SSL_pending() but just returns a 1 if there is data
pending in the internal OpenSSL buffers or 0 otherwise (as opposed to
SSL_pending() which returns the number of bytes available). Unlike
SSL_pending() this will work even if "read_ahead" is set (which is the
case if you are using read pipelining, or if you are doing DTLS). A 1
return value means that we have unprocessed data. It does *not* necessarily
indicate that there will be application data returned from a call to
SSL_read(). The unprocessed data may not be application data or there
could be errors when we attempt to parse the records.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoAdd an ability to set the SSL read buffer size
Matt Caswell [Wed, 13 Jan 2016 14:20:25 +0000 (14:20 +0000)]
Add an ability to set the SSL read buffer size

This capability is required for read pipelining. We will only read in as
many records as will fit in the read buffer (and the network can provide
in one go). The bigger the buffer the more records we can process in
parallel.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoLazily initialise the compression buffer
Matt Caswell [Wed, 13 Jan 2016 11:44:04 +0000 (11:44 +0000)]
Lazily initialise the compression buffer

With read pipelining we use multiple SSL3_RECORD structures for reading.
There are SSL_MAX_PIPELINES (32) of them defined (typically not all of these
would be used). Each one has a 16k compression buffer allocated! This
results in a significant amount of memory being consumed which, most of the
time, is not needed.  This change swaps the allocation of the compression
buffer to be lazy so that it is only done immediately before it is actually
used.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoImplement read pipeline support in libssl
Matt Caswell [Tue, 12 Jan 2016 14:52:35 +0000 (14:52 +0000)]
Implement read pipeline support in libssl

Read pipelining is controlled in a slightly different way than with write
pipelining. While reading we are constrained by the number of records that
the peer (and the network) can provide to us in one go. The more records
we can get in one go the more opportunity we have to parallelise the
processing.

There are two parameters that affect this:
* The number of pipelines that we are willing to process in one go. This is
controlled by max_pipelines (as for write pipelining)
* The size of our read buffer. A subsequent commit will provide an API for
adjusting the size of the buffer.

Another requirement for this to work is that "read_ahead" must be set. The
read_ahead parameter will attempt to read as much data into our read buffer
as the network can provide. Without this set, data is read into the read
buffer on demand. Setting the max_pipelines parameter to a value greater
than 1 will automatically also turn read_ahead on.

Finally, the read pipelining as currently implemented will only parallelise
the processing of application data records. This would only make a
difference for renegotiation so is unlikely to have a significant impact.

Reviewed-by: Tim Hudson <tjh@openssl.org>
8 years agoAdd dummy pipeline support for aes128_cbc_hmac_sha1
Matt Caswell [Fri, 27 Nov 2015 12:02:25 +0000 (12:02 +0000)]
Add dummy pipeline support for aes128_cbc_hmac_sha1

Add dummy pipline support to dasync for the aes128_cbc_hmac_sha1 cipher.
This is treated as an AEAD cipher.

Reviewed-by: Tim Hudson <tjh@openssl.org>