Move TLS CCS processing into the state machine
authorMatt Caswell <matt@openssl.org>
Mon, 11 May 2015 08:35:41 +0000 (09:35 +0100)
committerMatt Caswell <matt@openssl.org>
Mon, 3 Aug 2015 10:18:05 +0000 (11:18 +0100)
commit657da85eea3a5825b2dd25ff25b99ec206c48136
tree5ebbb703144f69c2f570b7cf66e8107b6897095b
parent9ceb2426b0a7972434a49a34e78bdcc6437e04ad
Move TLS CCS processing into the state machine

The handling of incoming CCS records is a little strange. Since CCS is not
a handshake message it is handled differently to normal handshake messages.
Unfortunately whilst technically it is not a handhshake message the reality
is that it must be processed in accordance with the state of the handshake.
Currently CCS records are processed entirely within the record layer. In
order to ensure that it is handled in accordance with the handshake state
a flag is used to indicate that it is an acceptable time to receive a CCS.

Previously this flag did not exist (see CVE-2014-0224), but the flag should
only really be considered a workaround for the problem that CCS is not
visible to the state machine.

Outgoing CCS messages are already handled within the state machine.

This patch makes CCS visible to the TLS state machine. A separate commit
will handle DTLS.

Reviewed-by: Tim Hudson <tjh@openssl.org>
12 files changed:
include/openssl/ssl.h
include/openssl/ssl3.h
ssl/d1_both.c
ssl/record/rec_layer_d1.c
ssl/record/rec_layer_s3.c
ssl/record/record.h
ssl/s3_both.c
ssl/s3_clnt.c
ssl/s3_lib.c
ssl/s3_srvr.c
ssl/ssl_err.c
ssl/ssl_locl.h