Matt Caswell [Thu, 8 Oct 2015 12:36:10 +0000 (13:36 +0100)]
Don't treat a bare OCTETSTRING as DigestInfo in int_rsa_verify
The function int_rsa_verify is an internal function used for verifying an
RSA signature. It takes an argument |dtype| which indicates the digest type
that was used. Dependant on that digest type the processing of the
signature data will vary. In particular if |dtype == NID_mdc2| and the
signature data is a bare OCTETSTRING then it is treated differently to the
default case where the signature data is treated as a DigestInfo (X509_SIG).
Due to a missing "else" keyword the logic actually correctly processes the
OCTETSTRING format signature first, and then attempts to continue and
process it as DigestInfo. This will invariably fail because we already know
that it is a bare OCTETSTRING.
This failure doesn't actualy make a real difference because it ends up at
the |err| label regardless and still returns a "success" result. This patch
just cleans things up to make it look a bit more sane.
RT#4076
Reviewed-by: Richard Levitte <levitte@openssl.org>
Richard Levitte [Thu, 8 Oct 2015 09:53:07 +0000 (11:53 +0200)]
When ENGINE_add finds that id or name is missing, actually return
Reviewed-by: Matt Caswell <matt@openssl.org>
Pascal Cuoq [Wed, 6 May 2015 08:15:28 +0000 (10:15 +0200)]
Don't check pointer we just freed, always set it to NULL.
Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
MR #1231
Pascal Cuoq [Tue, 5 May 2015 09:20:39 +0000 (11:20 +0200)]
Move BN_CTX_start() call so the error case can always call BN_CTX_end().
Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
MR #1231
Pascal Cuoq [Tue, 5 May 2015 09:20:39 +0000 (11:20 +0200)]
Move BN_CTX_start() call so the error case can always call BN_CTX_end().
Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
MR #1231
Pascal Cuoq [Wed, 6 May 2015 07:55:28 +0000 (09:55 +0200)]
Properly check return type of DH_compute_key()
It returns -1 on error, not 0.
Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
MR #1231
Pascal Cuoq [Wed, 6 May 2015 09:31:27 +0000 (11:31 +0200)]
Set flags to 0 before calling BN_with_flags()
BN_with_flags() will read the dest->flags to keep the BN_FLG_MALLOCED but
overwrites everything else.
Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Rich Salz <rsalz@openssl.org>
MR #1231
Matt Caswell [Wed, 7 Oct 2015 14:20:47 +0000 (15:20 +0100)]
Don't advance PACKET in ssl_check_for_safari
The function ssl_check_for_safari fingerprints the incoming extensions
to see whether it is one of the broken versions of safari. However it was
failing to reset the PACKET back to the same position it started in, hence
causing some extensions to be skipped incorrectly.
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Alessandro Ghedini [Tue, 6 Oct 2015 16:23:42 +0000 (12:23 -0400)]
Fix travis builds on master
-Allow mingw debug builds to fail on Travis CI
-Fix Travis email notifications config
-Rename a variable to avoid a bogus warning with old GCC
error: declaration of ``dup'' shadows a global declaration [-Werror=shadow]
-Disable pedantic ms-format warnings with mingw
-Properly define const DH parameters
-Restore --debug flag in Travis CI builds; -d would get incorrectly passed
to ./Configure in mingw debug builds.
Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Emilia Kasper [Tue, 6 Oct 2015 15:27:35 +0000 (17:27 +0200)]
SSLv2 compat ciphers: clarify comment
Reviewed-by: Matt Caswell <matt@openssl.org>
Dr. Stephen Henson [Tue, 6 Oct 2015 13:15:14 +0000 (14:15 +0100)]
Don't try and parse boolean type.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Andy Polyakov [Mon, 5 Oct 2015 13:23:37 +0000 (15:23 +0200)]
Address more Windows warnings illuminated by mingw.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Dmitry Belyavskiy [Sun, 4 Oct 2015 09:11:26 +0000 (12:11 +0300)]
New cipher and cipher modes standardized in Russia
This change introduces short names and NIDs for Russian GOST ciphers
according to GOST R 34.13-2015
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Alessandro Ghedini [Fri, 2 Oct 2015 11:43:29 +0000 (13:43 +0200)]
Validate ClientHello extension field length
RT#4069
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Emilia Kasper [Thu, 1 Oct 2015 11:54:11 +0000 (13:54 +0200)]
Add PACKET_copy_all
Reviewed-by: Matt Caswell <matt@openssl.org>
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>
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>
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>
Richard Levitte [Sun, 4 Oct 2015 19:16:28 +0000 (21:16 +0200)]
make depend
Reviewed-by: Ben Laurie <ben@openssl.org>
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>
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>
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>
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>
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>
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>
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
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Emilia Kasper [Fri, 18 Sep 2015 12:09:37 +0000 (14:09 +0200)]
PACKET: simplify ServerHello parsing
Reviewed-by: Tim Hudson <tjh@openssl.org>
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>
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>
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>
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>
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>
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>
Emilia Kasper [Wed, 23 Sep 2015 17:57:42 +0000 (19:57 +0200)]
Silence Wconditional-uninitialized
Reviewed-by: Matt Caswell <matt@openssl.org>
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>
Andy Polyakov [Fri, 25 Sep 2015 12:00:46 +0000 (14:00 +0200)]
Skylake performance results.
Reviewed-by: Matt Caswell <matt@openssl.org>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Dr. Stephen Henson [Tue, 22 Sep 2015 16:09:11 +0000 (17:09 +0100)]
make update
Reviewed-by: Rich Salz <rsalz@openssl.org>
Dr. Stephen Henson [Tue, 22 Sep 2015 14:23:05 +0000 (15:23 +0100)]
header includes
Reviewed-by: Rich Salz <rsalz@openssl.org>
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>
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>
Dr. Stephen Henson [Tue, 22 Sep 2015 13:00:13 +0000 (14:00 +0100)]
Make X509 opaque
Reviewed-by: Rich Salz <rsalz@openssl.org>
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>
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>
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>
Emilia Kasper [Thu, 17 Sep 2015 11:55:09 +0000 (13:55 +0200)]
Document BUF_strnlen
Reviewed-by: Matt Caswell <matt@openssl.org>
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>
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>
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>
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>
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>
Dr. Stephen Henson [Tue, 22 Sep 2015 15:37:07 +0000 (16:37 +0100)]
make depend
Reviewed-by: Rich Salz <rsalz@openssl.org>
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>