oweals/openssl.git
9 years agoAdd PACKET_copy_all
Emilia Kasper [Thu, 1 Oct 2015 11:54:11 +0000 (13:54 +0200)]
Add PACKET_copy_all

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agossl_sess.c: grab a copy of the session ID
Emilia Kasper [Thu, 1 Oct 2015 11:00:39 +0000 (13:00 +0200)]
ssl_sess.c: grab a copy of the session ID

The user callback takes a non-const pointer, so don't pass PACKET data
to it directly; rather, grab a local copy.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoPACKETize and clean up ssl_bytes_to_cipher_list.
Emilia Kasper [Thu, 1 Oct 2015 10:53:08 +0000 (12:53 +0200)]
PACKETize and clean up ssl_bytes_to_cipher_list.

Fix alerts.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agossl3_get_client_hello: rearrange logic
Emilia Kasper [Wed, 30 Sep 2015 13:33:12 +0000 (15:33 +0200)]
ssl3_get_client_hello: rearrange logic

Move all packet parsing to the beginning of the method. This limits the
SSLv2 compatibility soup to the parsing, and makes the rest of the
processing uniform.

This is also needed for simpler EMS support: EMS servers need to do an
early scan for EMS to make resumption decisions. This'll be easier when
the entire ClientHello is parsed in the beginning.

As a side effect,
1) PACKETize ssl_get_prev_session and tls1_process_ticket; and
2) Delete dead code for SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agomake depend
Richard Levitte [Sun, 4 Oct 2015 19:16:28 +0000 (21:16 +0200)]
make depend

Reviewed-by: Ben Laurie <ben@openssl.org>
9 years agoFix make depend for things being built in subdirectories
Richard Levitte [Sun, 4 Oct 2015 19:12:03 +0000 (21:12 +0200)]
Fix make depend for things being built in subdirectories

Some makedepend mechanisms remove all directory information in the
target, so a dependency can looks like this:

ssl3_record.o: record/ssl3_record.c

However, that doesn't quite suit us, our Makefile has us build
record/ssl3_record.o rather than ssl3_record.o.

To clear this up, a change to util/clean-depend.pl takes care of this
case by looking up the original file in the dependencies and restoring
the directory information from it.

Reviewed-by: Ben Laurie <ben@openssl.org>
9 years agoHarmonize pointer printing and size_t-fy casts.
Andy Polyakov [Wed, 30 Sep 2015 08:36:21 +0000 (10:36 +0200)]
Harmonize pointer printing and size_t-fy casts.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agobio/bss_log.c: harmonize format string to silence -Wformat.
Andy Polyakov [Wed, 30 Sep 2015 08:28:14 +0000 (10:28 +0200)]
bio/bss_log.c: harmonize format string to silence -Wformat.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoAddress Windows warnings in apps/.
Andy Polyakov [Wed, 30 Sep 2015 08:27:19 +0000 (10:27 +0200)]
Address Windows warnings in apps/.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoExplicitly cast INVALID_SOCKET to (int) to address warnings on Windows.
Andy Polyakov [Wed, 30 Sep 2015 08:15:03 +0000 (10:15 +0200)]
Explicitly cast INVALID_SOCKET to (int) to address warnings on Windows.

Even though SOCKET is effectively declared as (void *) on Windows, it's
not actually a pointer, but an index within per-process table of
kernel objects. The table size is actually limited and its upper limit
is far below upper limit for signed 32-bit integer. This is what makes
cast in question possible.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoFree up ASN.1 structures at top level only.
Dr. Stephen Henson [Sat, 3 Oct 2015 16:15:15 +0000 (17:15 +0100)]
Free up ASN.1 structures at top level only.

When a decoding error in ASN.1 occurs only free up the partial structure
at the top level. This simplifies embedded handling and fixes freeing
up of structures when presented with malformed input.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoFix more d2i cases to properly update the input pointer
Kurt Roeckx [Tue, 29 Sep 2015 17:59:48 +0000 (19:59 +0200)]
Fix more d2i cases to properly update the input pointer

Thanks to David Benjamin <davidben@google.com> for pointing them out.

Reviewed-by: Steve Henson <steve@openssl.org>
MR #1198

9 years agoRemove BIO_s_file_internal macro.
Rich Salz [Wed, 30 Sep 2015 18:32:49 +0000 (14:32 -0400)]
Remove BIO_s_file_internal macro.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoRevert "Custom cipher constants"
Matt Caswell [Thu, 1 Oct 2015 12:51:31 +0000 (13:51 +0100)]
Revert "Custom cipher constants"

This reverts commit 3aabc1dd1c969e60bdea8f827d6645ff04c56b67.

Reviewed-by: Stephen Henson <steve@openssl.org>
9 years agoCustom cipher constants
Dmitry Belyavskiy [Wed, 30 Sep 2015 19:42:57 +0000 (22:42 +0300)]
Custom cipher constants

Add some custom ctrls for Engine specific use.

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoRemove the hard coded -DOPENSSL_NO_DEPRECATED from DEPFLAG
Richard Levitte [Wed, 30 Sep 2015 13:44:53 +0000 (15:44 +0200)]
Remove the hard coded -DOPENSSL_NO_DEPRECATED from DEPFLAG

Any time you configure with enable-deprecated, make depend would
scream bloody murder.  This change has it quiet down a bit.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoChange the DEFAULT ciphersuites to exclude DES, RC4 and RC2
Matt Caswell [Tue, 29 Sep 2015 10:14:35 +0000 (11:14 +0100)]
Change the DEFAULT ciphersuites to exclude DES, RC4 and RC2

This patch updates the "DEFAULT" cipherstring to be
"ALL:!COMPLEMENTOFDEFAULT:!eNULL". COMPLEMENTOFDEFAULT is now defined
internally by a flag on each ciphersuite indicating whether it should be
excluded from DEFAULT or not. This gives us control at an individual
ciphersuite level as to exactly what is in DEFAULT and what is not.

Finally all DES, RC4 and RC2 ciphersuites are added to COMPLEMENTOFDEFAULT
and hence removed from DEFAULT.

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agobn/asm/armv4-mont.pl: boost NEON performance.
Andy Polyakov [Fri, 25 Sep 2015 11:43:00 +0000 (13:43 +0200)]
bn/asm/armv4-mont.pl: boost NEON performance.

Close difference gap on Cortex-A9, which resulted in further improvement
even on other processors.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoMake update / libeay.num fix
Rich Salz [Mon, 28 Sep 2015 21:00:00 +0000 (17:00 -0400)]
Make update / libeay.num fix

Looks like someone forgot to do a "make update" since crypto/ts/Makefile
keeps changing.  So include that.

Second is that the declare_dh_bn macro fools the libeay.num script.
The declarations are only needed in one file (dh_rfc5114) so remove
them from the header and put the "raw" declarations directly into that
file.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoFix libeay.num
Matt Caswell [Wed, 30 Sep 2015 13:09:26 +0000 (14:09 +0100)]
Fix libeay.num

Removed duplicated ordinals from libeay.num

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoAdd a test for duplicated ordinals
Matt Caswell [Wed, 30 Sep 2015 13:06:14 +0000 (14:06 +0100)]
Add a test for duplicated ordinals

Occaisionally we have had problems where there are duplicated ordinals in
libeay.num or ssleay.num. This adds a test for this issue.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoDisplay brief help if no options for list.
Ben Laurie [Wed, 30 Sep 2015 11:17:52 +0000 (12:17 +0100)]
Display brief help if no options for list.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoAdd GOST12 cms/smime capabilities
Matt Caswell [Tue, 29 Sep 2015 15:43:27 +0000 (16:43 +0100)]
Add GOST12 cms/smime capabilities

Add additional NID references in the CMS/SMIME capabilities code to cater
for GOST12.

Patch supplied by Dmitry Belyavsky <beldmit@gmail.com>

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoFix no-stdio build
David Woodhouse [Fri, 11 Sep 2015 18:56:32 +0000 (14:56 -0400)]
Fix no-stdio build

Much related/similar work also done by
Ivan Nestlerode <ivan.nestlerode@sonos.com>

   +Replace FILE BIO's with dummy ops that fail.
   +Include <stdio.h> for sscanf() even with no-stdio (since the declaration
    is there). We rely on sscanf() to parse the OPENSSL_ia32cap environment
    variable, since it can be larger than a 'long'. And we don't rely on the
    availability of strtoull().
   +Remove OPENSSL_stderr(); not used.
   +Make OPENSSL_showfatal() do nothing (currently without stdio there's
    nothing we can do).
   +Remove file-based functionality from ssl/. The function
    prototypes were already gone, but not the functions themselves.
   +Remove unviable conf functionality via SYS_UEFI
   +Add fallback definition of BUFSIZ.
   +Remove functions taking FILE * from header files.
   +Add missing DECLARE_PEM_write_fp_const
   +Disable X509_LOOKUP_hash_dir(). X509_LOOKUP_file() was already compiled out,
    so remove its prototype.
   +Use OPENSSL_showfatal() in CRYPTO_destroy_dynlockid().
   +Eliminate SRP_VBASE_init() and supporting functions. Users will need to
    build the verifier manually instead.
   +Eliminate compiler warning for unused do_pk8pkey_fp().
   +Disable TEST_ENG_OPENSSL_PKEY.
   +Disable GOST engine as is uses [f]printf all over the place.
   +Eliminate compiler warning for unused send_fp_chars().

Signed-off-by: Rich Salz <rsalz@akamai.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoengine/e_capi.c: fix various warnings.
Andy Polyakov [Mon, 28 Sep 2015 14:07:53 +0000 (16:07 +0200)]
engine/e_capi.c: fix various warnings.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoFix -Wshadow warnings in mingw builds.
Andy Polyakov [Mon, 28 Sep 2015 14:05:32 +0000 (16:05 +0200)]
Fix -Wshadow warnings in mingw builds.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoFix pedantic warnings in mingw builds.
Andy Polyakov [Mon, 28 Sep 2015 14:00:08 +0000 (16:00 +0200)]
Fix pedantic warnings in mingw builds.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoFix prototypes in e_ossttest.c.
Andy Polyakov [Mon, 28 Sep 2015 13:56:34 +0000 (15:56 +0200)]
Fix prototypes in e_ossttest.c.

Problem was exposed in mingw64 build, or in other words on P64 platform.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoasn1t.h: silence -Wmissing-prototype in Windows builds.
Andy Polyakov [Mon, 28 Sep 2015 13:51:20 +0000 (15:51 +0200)]
asn1t.h: silence -Wmissing-prototype in Windows builds.

On Windows OPENSSL_EXPORT_VAR_AS_FUNCTION is defined and in a sense
this modification simply harmonizes it with "VAR_AS_VAR".

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoRationalize .gitignore and harmonize pair of Makefiles.
Andy Polyakov [Mon, 28 Sep 2015 13:46:09 +0000 (15:46 +0200)]
Rationalize .gitignore and harmonize pair of Makefiles.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoRT3948: Some structs have confusing names.
Nicholas Cooper [Mon, 28 Sep 2015 19:57:46 +0000 (15:57 -0400)]
RT3948: Some structs have confusing names.

Signed-off-by: Rich Salz <rsalz@akamai.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoPrint debug info for extended master secret extension
Alessandro Ghedini [Thu, 17 Sep 2015 11:33:40 +0000 (13:33 +0200)]
Print debug info for extended master secret extension

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoRT4053: Typo in error message
Michal Bozon [Mon, 28 Sep 2015 16:59:27 +0000 (12:59 -0400)]
RT4053: Typo in error message

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoRemove obsolete b64 demo's
Rich Salz [Fri, 25 Sep 2015 15:35:08 +0000 (11:35 -0400)]
Remove obsolete b64 demo's

Reviewed-by: Emilia Käsper <emilia@openssl.org>
9 years agoPACKET: simplify ServerHello parsing
Emilia Kasper [Fri, 18 Sep 2015 12:09:37 +0000 (14:09 +0200)]
PACKET: simplify ServerHello parsing

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoEmpty NewSessionTicket: test session resumption
Emilia Kasper [Wed, 16 Sep 2015 15:47:55 +0000 (17:47 +0200)]
Empty NewSessionTicket: test session resumption

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoEmpty session ticket: add a test
Emilia Kasper [Tue, 15 Sep 2015 10:06:12 +0000 (12:06 +0200)]
Empty session ticket: add a test

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoRT2772: accept empty SessionTicket
Emilia Kasper [Thu, 10 Sep 2015 14:32:51 +0000 (16:32 +0200)]
RT2772: accept empty SessionTicket

RFC 5077 section 3.3 says:
If the server determines that it does not want to include a
ticket after it has included the SessionTicket extension in the
ServerHello, then it sends a zero-length ticket in the
NewSessionTicket handshake message.

Previously the client would fail upon attempting to allocate a
zero-length buffer. Now, we have the client ignore the empty ticket and
keep the existing session.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoUpdate year in Windows builds.
Andy Polyakov [Sun, 27 Sep 2015 07:23:08 +0000 (09:23 +0200)]
Update year in Windows builds.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoHarmonize util/mkrc.pl with header move.
Andy Polyakov [Sat, 26 Sep 2015 18:20:38 +0000 (20:20 +0200)]
Harmonize util/mkrc.pl with header move.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoSRP memory leak fix
Dr. Stephen Henson [Sun, 20 Sep 2015 12:59:49 +0000 (13:59 +0100)]
SRP memory leak fix

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agoSilence Wconditional-uninitialized
Emilia Kasper [Wed, 23 Sep 2015 17:57:42 +0000 (19:57 +0200)]
Silence Wconditional-uninitialized

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoFixing typo in PROBLEMS
Jack Danger Canty [Wed, 23 Sep 2015 18:38:05 +0000 (11:38 -0700)]
Fixing typo in PROBLEMS

Signed-off-by: Rich Salz <rsalz@akamai.com>
Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoSkylake performance results.
Andy Polyakov [Fri, 25 Sep 2015 12:00:46 +0000 (14:00 +0200)]
Skylake performance results.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoGH408 follow-on: update buflen
Alessandro Ghedini [Fri, 25 Sep 2015 17:51:27 +0000 (13:51 -0400)]
GH408 follow-on: update buflen

Some builds break, as documented in:
  https://github.com/openssl/openssl/pull/408#issuecomment-142971427
This fixes it.

Signed-off-by: Rich Salz <rsalz@akamai.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoFix typo in previous commit.
Rich Salz [Fri, 25 Sep 2015 15:44:52 +0000 (11:44 -0400)]
Fix typo in previous commit.

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoChange --debug to -d for compat with old releases.
Rich Salz [Fri, 25 Sep 2015 15:38:43 +0000 (11:38 -0400)]
Change --debug to -d for compat with old releases.

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoRemove obsolete OCSP demo
Rich Salz [Fri, 25 Sep 2015 15:32:45 +0000 (11:32 -0400)]
Remove obsolete OCSP demo

Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
9 years agoChange ossltest engine to manually allocate cipher_data
Matt Caswell [Tue, 22 Sep 2015 07:54:43 +0000 (08:54 +0100)]
Change ossltest engine to manually allocate cipher_data

The ossltest engine wraps the built-in implementation of aes128-cbc.
Normally in an engine the cipher_data structure is automatically allocated
by the EVP layer. However this relies on the engine specifying up front
the size of that cipher_data structure. In the case of ossltest this value
isn't available at compile time. This change makes the ossltest engine
allocate its own cipher_data structure instead of leaving it to the EVP
layer.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoProperly format linux-arm64ilp32 target config
Alessandro Ghedini [Fri, 25 Sep 2015 13:11:43 +0000 (15:11 +0200)]
Properly format linux-arm64ilp32 target config

Otherwise the ./config script fails with errors like:

> Operating system: x86_64-whatever-linux2
> This system (linux-x86_64) is not supported. See file INSTALL for details.

The failure was introduced by a93d3e0.

RT#4062

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoFix the OCSP test on Windows
Matt Caswell [Tue, 22 Sep 2015 15:02:50 +0000 (16:02 +0100)]
Fix the OCSP test on Windows

The windows test uses the pseudo file "nul" to indicate no file for the
-CApath option. This does not work on all versions of Windows. Instead use
the new -no-CApath option.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoDocument -no-CApath and -no-CAfile
Matt Caswell [Tue, 22 Sep 2015 18:43:59 +0000 (19:43 +0100)]
Document -no-CApath and -no-CAfile

Add documentation to all the appropriate apps for the new -no-CApath and
-no-CAfile options.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoAdd support for -no-CApath and -no-CAfile options
Matt Caswell [Tue, 22 Sep 2015 15:00:52 +0000 (16:00 +0100)]
Add support for -no-CApath and -no-CAfile options

For those command line options that take the verification options
-CApath and -CAfile, if those options are absent then the default path or
file is used instead. It is not currently possible to specify *no* path or
file at all. This change adds the options -no-CApath and -no-CAfile to
specify that the default locations should not be used to all relevant
applications.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoDocument the default CA path functions
Matt Caswell [Tue, 22 Sep 2015 16:05:17 +0000 (17:05 +0100)]
Document the default CA path functions

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoAdd ability to set default CA path and file locations individually
Matt Caswell [Tue, 22 Sep 2015 15:50:32 +0000 (16:50 +0100)]
Add ability to set default CA path and file locations individually

Previously you could only set both the default path and file locations
together. This adds the ability to set one without the other.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoConfigurations: add linux-arm64ilp32 target.
Andy Polyakov [Wed, 23 Sep 2015 14:43:55 +0000 (16:43 +0200)]
Configurations: add linux-arm64ilp32 target.

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoAllow ILP32 compilation in AArch64 assembly pack.
Andy Polyakov [Mon, 21 Sep 2015 14:44:37 +0000 (16:44 +0200)]
Allow ILP32 compilation in AArch64 assembly pack.

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoARMv4 assembly pack: implement support for Thumb2.
Andy Polyakov [Wed, 23 Sep 2015 16:41:27 +0000 (18:41 +0200)]
ARMv4 assembly pack: implement support for Thumb2.

As some of ARM processors, more specifically Cortex-Mx series, are
Thumb2-only, we need to support Thumb2-only builds even in assembly.

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agofix compilation on Solaris
Vladimir Kotal [Mon, 21 Sep 2015 19:07:28 +0000 (21:07 +0200)]
fix compilation on Solaris

Signed-off-by: Rich Salz <rsalz@akamai.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoRestore the old interactive prompt.
Rich Salz [Mon, 7 Sep 2015 13:42:05 +0000 (09:42 -0400)]
Restore the old interactive prompt.

Reviewed-by: Tim Hudson <tjh@openssl.org>
9 years agoSanity check cookie_len
Matt Caswell [Wed, 23 Sep 2015 11:57:34 +0000 (12:57 +0100)]
Sanity check cookie_len

Add a sanity check that the cookie_len returned by app_gen_cookie_cb is
valid.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoClarify DTLSv1_listen documentation
Matt Caswell [Wed, 23 Sep 2015 11:40:09 +0000 (12:40 +0100)]
Clarify DTLSv1_listen documentation

Clarify that user code is required to allocate sufficient space for the
addressing scheme in use in the call to DTLSv1_listen.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoFix s_server DTLSv1_listen issues
Matt Caswell [Wed, 23 Sep 2015 09:02:18 +0000 (10:02 +0100)]
Fix s_server DTLSv1_listen issues

Use sockaddr_storage not sockaddr for the client IP address to allow for
IPv6.
Also fixed a section of code which was conditional on OPENSSL_NO_DTLS1
which should not have been.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoAdd DTLSv1_listen documentation
Matt Caswell [Fri, 10 Apr 2015 13:05:19 +0000 (14:05 +0100)]
Add DTLSv1_listen documentation

Adds a new man page to cover the DTLSv1_listen() function.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoAdd -listen documentation
Matt Caswell [Fri, 10 Apr 2015 12:10:05 +0000 (13:10 +0100)]
Add -listen documentation

This commit adds documentation for the new -listen option to s_server. Along
the way it also adds documentation for -dtls, -dtls1 and -dtls1_2 which was
missing.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoAdd support for DTLSv1_listen in s_server
Matt Caswell [Thu, 9 Apr 2015 09:01:05 +0000 (10:01 +0100)]
Add support for DTLSv1_listen in s_server

DTLSv1_listen is a commonly used function within DTLS solutions for
listening for new incoming connections. This commit adds support to s_server
for using it.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoRemove remaining old listen code
Matt Caswell [Thu, 9 Apr 2015 22:31:35 +0000 (23:31 +0100)]
Remove remaining old listen code

The old implementation of DTLSv1_listen which has now been replaced still
had a few vestiges scattered throughout the code. This commit removes them.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoDTLSv1_listen rewrite
Matt Caswell [Mon, 14 Sep 2015 21:49:35 +0000 (22:49 +0100)]
DTLSv1_listen rewrite

The existing implementation of DTLSv1_listen() is fundamentally flawed. This
function is used in DTLS solutions to listen for new incoming connections
from DTLS clients. A client will send an initial ClientHello. The server
will respond with a HelloVerifyRequest containing a unique cookie. The
client the responds with a second ClientHello - which this time contains the
cookie.

Once the cookie has been verified then DTLSv1_listen() returns to user code,
which is typically expected to continue the handshake with a call to (for
example) SSL_accept().

Whilst listening for incoming ClientHellos, the underlying BIO is usually in
an unconnected state. Therefore ClientHellos can come in from *any* peer.
The arrival of the first ClientHello without the cookie, and the second one
with it, could be interspersed with other intervening messages from
different clients.

The whole purpose of this mechanism is as a defence against DoS attacks. The
idea is to avoid allocating state on the server until the client has
verified that it is capable of receiving messages at the address it claims
to come from. However the existing DTLSv1_listen() implementation completely
fails to do this. It attempts to super-impose itself on the standard state
machine and reuses all of this code. However the standard state machine
expects to operate in a stateful manner with a single client, and this can
cause various problems.

A second more minor issue is that the return codes from this function are
quite confused, with no distinction made between fatal and non-fatal errors.
Most user code treats all errors as non-fatal, and simply retries the call
to DTLSv1_listen().

This commit completely rewrites the implementation of DTLSv1_listen() and
provides a stand alone implementation that does not rely on the existing
state machine. It also provides more consistent return codes.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoAdd BIO_CTRL_DGRAM_SET_PEEK_MODE
Matt Caswell [Mon, 14 Sep 2015 21:36:04 +0000 (22:36 +0100)]
Add BIO_CTRL_DGRAM_SET_PEEK_MODE

Add the ability to peek at a message from the DTLS read BIO. This is needed
for the DTLSv1_listen rewrite.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoFix the rehash test on Windows
Matt Caswell [Tue, 22 Sep 2015 14:16:29 +0000 (15:16 +0100)]
Fix the rehash test on Windows

The openssl rehash command is not available on some platforms including
Windows. This change skips the associated tests if rehash is not available.

Reviewed-by: Richard Levitte <levitte@openssl.org>
9 years agomake update
Dr. Stephen Henson [Tue, 22 Sep 2015 16:09:11 +0000 (17:09 +0100)]
make update

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoheader includes
Dr. Stephen Henson [Tue, 22 Sep 2015 14:23:05 +0000 (15:23 +0100)]
header includes

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoDocument X509_get0_subject_key_id()
Dr. Stephen Henson [Tue, 22 Sep 2015 17:51:47 +0000 (18:51 +0100)]
Document X509_get0_subject_key_id()

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoNew function X509_get0_subject_key_id()
Dr. Stephen Henson [Tue, 22 Sep 2015 14:19:32 +0000 (15:19 +0100)]
New function X509_get0_subject_key_id()

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoMake X509 opaque
Dr. Stephen Henson [Tue, 22 Sep 2015 13:00:13 +0000 (14:00 +0100)]
Make X509 opaque

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoAvoid structure access in crypto/ts
Dr. Stephen Henson [Tue, 22 Sep 2015 17:37:57 +0000 (18:37 +0100)]
Avoid structure access in crypto/ts

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoPACKET: simplify
Emilia Kasper [Thu, 17 Sep 2015 19:28:07 +0000 (21:28 +0200)]
PACKET: simplify

Get rid of the third field that is no longer needed.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoRemove ssl_put_cipher_by_char
Emilia Kasper [Fri, 18 Sep 2015 13:00:37 +0000 (15:00 +0200)]
Remove ssl_put_cipher_by_char

Since SSLv3, a CipherSuite is always 2 bytes. The only place where we
need 3-byte ciphers is SSLv2-compatible ClientHello processing.

So, remove the ssl_put_cipher_by_char indirection.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoDocument BUF_strnlen
Emilia Kasper [Thu, 17 Sep 2015 11:55:09 +0000 (13:55 +0200)]
Document BUF_strnlen

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoBUF_strdup and friends: update docs
Emilia Kasper [Thu, 17 Sep 2015 11:50:34 +0000 (13:50 +0200)]
BUF_strdup and friends: update docs

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoBUF_strndup: tidy
Emilia Kasper [Thu, 17 Sep 2015 11:27:05 +0000 (13:27 +0200)]
BUF_strndup: tidy

Fix comment, add another overflow check, tidy style

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoMake BUF_strndup() read-safe on arbitrary inputs
Alessandro Ghedini [Wed, 16 Sep 2015 15:54:05 +0000 (17:54 +0200)]
Make BUF_strndup() read-safe on arbitrary inputs

BUF_strndup was calling strlen through BUF_strlcpy, and ended up reading
past the input if the input was not a C string.

Make it explicitly part of BUF_strndup's contract to never read more
than |siz| input bytes. This augments the standard strndup contract to
be safer.

The commit also adds a check for siz overflow and some brief documentation
for BUF_strndup().

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoGH398: Add mingw cross-compile, etc.
Rich Salz [Mon, 21 Sep 2015 23:54:36 +0000 (19:54 -0400)]
GH398: Add mingw cross-compile, etc.

For all release branches.  It adds travis build support. If you don't
have a config file it uses the default (because we enabled travis for the
project), which uses ruby/rake/rakefiles, and you get confusing "build
still failing" messages.

Reviewed-by: Andy Polyakov <appro@openssl.org>
9 years agoFix path in comments
Dr. Stephen Henson [Tue, 22 Sep 2015 15:47:09 +0000 (16:47 +0100)]
Fix path in comments

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agomake depend
Dr. Stephen Henson [Tue, 22 Sep 2015 15:37:07 +0000 (16:37 +0100)]
make depend

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoMove certificate request and CRL routines to x509 dir.
Dr. Stephen Henson [Tue, 22 Sep 2015 15:20:09 +0000 (16:20 +0100)]
Move certificate request and CRL routines to x509 dir.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoMove functions.
Dr. Stephen Henson [Tue, 22 Sep 2015 15:05:33 +0000 (16:05 +0100)]
Move functions.

Move various functions tagged onto t_x509.c to more appropriate places.

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoUpdate SEE ALSO sections.
Dr. Stephen Henson [Mon, 21 Sep 2015 20:25:52 +0000 (21:25 +0100)]
Update SEE ALSO sections.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoDocument signature accessors.
Dr. Stephen Henson [Mon, 21 Sep 2015 12:03:42 +0000 (13:03 +0100)]
Document signature accessors.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoExtension parsing and encoding docs.
Dr. Stephen Henson [Fri, 4 Jul 2014 22:03:17 +0000 (23:03 +0100)]
Extension parsing and encoding docs.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoDocument i2d_re_X509_REQ_tbs() and i2d_re_X509_CRL_tbs().
Dr. Stephen Henson [Fri, 18 Sep 2015 19:51:02 +0000 (20:51 +0100)]
Document i2d_re_X509_REQ_tbs() and i2d_re_X509_CRL_tbs().

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoDocument X509_REVOKED functions.
Dr. Stephen Henson [Wed, 9 Sep 2015 21:07:24 +0000 (22:07 +0100)]
Document X509_REVOKED functions.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoDocument X509 sign and verify functions.
Dr. Stephen Henson [Mon, 7 Sep 2015 13:27:58 +0000 (14:27 +0100)]
Document X509 sign and verify functions.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoDocument X509 public key functions.
Dr. Stephen Henson [Mon, 7 Sep 2015 12:41:20 +0000 (13:41 +0100)]
Document X509 public key functions.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoDocument X509 name get and set functions.
Dr. Stephen Henson [Sun, 6 Sep 2015 12:43:23 +0000 (13:43 +0100)]
Document X509 name get and set functions.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoDocument X509 version functions.
Dr. Stephen Henson [Sun, 6 Sep 2015 11:48:22 +0000 (12:48 +0100)]
Document X509 version functions.

Reviewed-by: Matt Caswell <matt@openssl.org>
9 years agoUse accessors in X509_REQ_print().
Dr. Stephen Henson [Fri, 18 Sep 2015 01:54:59 +0000 (02:54 +0100)]
Use accessors in X509_REQ_print().

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoUse accessor functions in X509_CRL_print().
Dr. Stephen Henson [Fri, 18 Sep 2015 01:38:49 +0000 (02:38 +0100)]
Use accessor functions in X509_CRL_print().

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoNew accessor X509_REQ_get_X509_PUBKEY()
Dr. Stephen Henson [Fri, 18 Sep 2015 02:06:55 +0000 (03:06 +0100)]
New accessor X509_REQ_get_X509_PUBKEY()

Reviewed-by: Rich Salz <rsalz@openssl.org>
9 years agoAdditional X509_CRL accessors.
Dr. Stephen Henson [Fri, 18 Sep 2015 01:39:44 +0000 (02:39 +0100)]
Additional X509_CRL accessors.

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