openssl/crypto
Matt Caswell 32ec41539b Server side version negotiation rewrite
This commit changes the way that we do server side protocol version
negotiation. Previously we had a whole set of code that had an "up front"
state machine dedicated to the negotiating the protocol version. This adds
significant complexity to the state machine. Historically the justification
for doing this was the support of SSLv2 which works quite differently to
SSLv3+. However, we have now removed support for SSLv2 so there is little
reason to maintain this complexity.

The one slight difficulty is that, although we no longer support SSLv2, we
do still support an SSLv3+ ClientHello in an SSLv2 backward compatible
ClientHello format. This is generally only used by legacy clients. This
commit adds support within the SSLv3 code for these legacy format
ClientHellos.

Server side version negotiation now works in much the same was as DTLS,
i.e. we introduce the concept of TLS_ANY_VERSION. If s->version is set to
that then when a ClientHello is received it will work out the most
appropriate version to respond with. Also, SSLv23_method and
SSLv23_server_method have been replaced with TLS_method and
TLS_server_method respectively. The old SSLv23* names still exist as
macros pointing at the new name, although they are deprecated.

Subsequent commits will look at client side version negotiation, as well of
removal of the old s23* code.

Reviewed-by: Kurt Roeckx <kurt@openssl.org>
2015-05-16 09:19:56 +01:00
..
aes make depend 2015-05-14 17:38:31 +02:00
asn1 make depend 2015-05-14 17:38:31 +02:00
bf
bio make depend 2015-05-14 17:38:31 +02:00
bn make depend 2015-05-14 17:38:31 +02:00
buffer make depend 2015-05-14 17:38:31 +02:00
camellia
cast
cmac make depend 2015-05-14 17:38:31 +02:00
cms make depend 2015-05-14 17:38:31 +02:00
comp Make COMP_CTX and COMP_METHOD opaque 2015-05-12 10:24:48 -04:00
conf make depend 2015-05-14 17:38:31 +02:00
des make depend 2015-05-14 17:38:31 +02:00
dh make depend 2015-05-14 17:38:31 +02:00
dsa make depend 2015-05-14 17:38:31 +02:00
dso make depend 2015-05-14 17:38:31 +02:00
ec make depend 2015-05-14 17:38:31 +02:00
ecdh make depend 2015-05-14 17:38:31 +02:00
ecdsa Use safer sizeof variant in malloc 2015-05-04 15:00:13 -04:00
engine make depend 2015-05-14 17:38:31 +02:00
err make depend 2015-05-14 17:38:31 +02:00
evp make depend 2015-05-14 17:38:31 +02:00
hmac make depend 2015-05-14 17:38:31 +02:00
idea
include/internal Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
jpake memset, memcpy, sizeof consistency fixes 2015-05-05 22:18:59 -04:00
lhash make depend 2015-05-14 17:38:31 +02:00
md2 Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
md4 make depend 2015-05-14 17:38:31 +02:00
md5 make depend 2015-05-14 17:38:31 +02:00
mdc2 make depend 2015-05-14 17:38:31 +02:00
modes make depend 2015-05-14 17:38:31 +02:00
objects make depend 2015-05-14 17:38:31 +02:00
ocsp make depend 2015-05-14 17:38:31 +02:00
pem make depend 2015-05-14 17:38:31 +02:00
perlasm
pkcs7 make depend 2015-05-14 17:38:31 +02:00
pkcs12 make depend 2015-05-14 17:38:31 +02:00
pqueue make depend 2015-05-14 17:38:31 +02:00
rand make depend 2015-05-14 17:38:31 +02:00
rc2
rc4 make depend 2015-05-14 17:38:31 +02:00
rc5
ripemd make depend 2015-05-14 17:38:31 +02:00
rsa make depend 2015-05-14 17:38:31 +02:00
seed
sha make depend 2015-05-14 17:38:31 +02:00
srp make depend 2015-05-14 17:38:31 +02:00
stack make depend 2015-05-14 17:38:31 +02:00
store memset, memcpy, sizeof consistency fixes 2015-05-05 22:18:59 -04:00
threads Server side version negotiation rewrite 2015-05-16 09:19:56 +01:00
ts make depend 2015-05-14 17:38:31 +02:00
txt_db make depend 2015-05-14 17:38:31 +02:00
ui make depend 2015-05-14 17:38:31 +02:00
whrlpool
x509 make depend 2015-05-14 17:38:31 +02:00
x509v3 make depend 2015-05-14 17:38:31 +02:00
alphacpuid.pl
arm64cpuid.pl
arm_arch.h
armcap.c
armv4cpuid.pl
c64xpluscpuid.pl
cpt_err.c
cryptlib.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
crypto-lib.com Remove remaining Kerberos references 2015-05-13 15:08:10 +01:00
cversion.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
ebcdic.c
ex_data.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
fips_err.h
fips_ers.c
ia64cpuid.S
install-crypto.com Remove remaining Kerberos references 2015-05-13 15:08:10 +01:00
lock.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
LPdir_nyi.c
LPdir_unix.c memset, memcpy, sizeof consistency fixes 2015-05-05 22:18:59 -04:00
LPdir_vms.c memset, memcpy, sizeof consistency fixes 2015-05-05 22:18:59 -04:00
LPdir_win32.c
LPdir_win.c memset, memcpy, sizeof consistency fixes 2015-05-05 22:18:59 -04:00
LPdir_wince.c
Makefile make depend 2015-05-14 17:38:31 +02:00
mem_clr.c
mem_dbg.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
mem.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
o_dir_test.c Identify and move OpenSSL internal header files 2015-05-14 15:13:49 +02:00
o_dir.c Identify and move OpenSSL internal header files 2015-05-14 15:13:49 +02:00
o_fips.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
o_init.c
o_str.c Identify and move OpenSSL internal header files 2015-05-14 15:13:49 +02:00
o_time.c
opensslconf.h.in
pariscid.pl
ppc_arch.h
ppccap.c
ppccpuid.pl
s390xcap.c
s390xcpuid.S
sparc_arch.h
sparccpuid.S
sparcv9cap.c
thr_id.c Identify and move common internal libcrypto header files 2015-05-14 17:21:40 +02:00
uid.c
vms_rms.h
x86_64cpuid.pl
x86cpuid.pl