Start using the key_share data to derive the PMS
authorMatt Caswell <matt@openssl.org>
Wed, 2 Nov 2016 15:03:56 +0000 (15:03 +0000)
committerMatt Caswell <matt@openssl.org>
Wed, 16 Nov 2016 10:09:46 +0000 (10:09 +0000)
commit0f1e51ea115beef8a5fdd80d5a6c13ee289f980a
tree65060f458f52188507f0a9748ea8004bf5e50763
parentc87386a2cd586368a61d86ede03319f910d050f4
Start using the key_share data to derive the PMS

The previous commits put in place the logic to exchange key_share data. We
now need to do something with that information. In <= TLSv1.2 the equivalent
of the key_share extension is the ServerKeyExchange and ClientKeyExchange
messages. With key_share those two messages are no longer necessary.

The commit removes the SKE and CKE messages from the TLSv1.3 state machine.
TLSv1.3 is completely different to TLSv1.2 in the messages that it sends
and the transitions that are allowed. Therefore, rather than extend the
existing <=TLS1.2 state transition functions, we create a whole new set for
TLSv1.3. Intially these are still based on the TLSv1.2 ones, but over time
they will be amended.

The new TLSv1.3 transitions remove SKE and CKE completely. There's also some
cleanup for some stuff which is not relevant to TLSv1.3 and is easy to
remove, e.g. the DTLS support (we're not doing DTLSv1.3 yet) and NPN.

I also disable EXTMS for TLSv1.3. Using it was causing some added
complexity, so rather than fix it I removed it, since eventually it will not
be needed anyway.

Reviewed-by: Rich Salz <rsalz@openssl.org>
13 files changed:
include/openssl/ssl.h
ssl/s3_lib.c
ssl/ssl_err.c
ssl/ssl_locl.h
ssl/statem/statem_clnt.c
ssl/statem/statem_srvr.c
ssl/t1_enc.c
ssl/t1_lib.c
test/recipes/70-test_sslsessiontick.t
test/recipes/70-test_tlsextms.t
test/recipes/80-test_ssl_new.t
test/ssl-tests/08-npn.conf
test/ssl-tests/08-npn.conf.in