Adding TLS 1.2 Support to Your TLS Library
TLS 1.2 was formally specified in 2008 after several years of debate. It represents a significant change to its predecessor TLS 1.1 — mostly in terms of increased security options and additional cipher suite choices. This chapter details the changes that you need to make to the TLS 1.0 implementation of the previous three chapters to make it compliant with TLS 1.2.
The next two sections detail the message-format level changes that TLS 1.2 introduced. I move quickly here, assuming a good familiarity with the material in the previous three chapters — if you don't remember what the PRF is or what messages are involved in the TLS handshake, you may want to jump back and briefly review at least Chapter 6. Alternatively, if you're more interested in what TLS 1.2 does, rather than how it does it, you can skip ahead to the section in the chapter on AEAD encryption.
Supporting TLS 1.2 When You Use RSA for the Key Exchange
This section covers changes sufficient enough to support TLS 1.2 in the most straightforward case: when RSA is used directly for key exchange. To do so, you would follow these basic steps.
- Obviously, you should change the version number declared in the header file from 3.1 to 3.3 as shown in Listing 9-1.
Listing 9-1: "tls.h" TLS 1.2 version declaration
#define TLS_VERSION_MAJOR 3 #define TLS_VERSION_MINOR 3
- After this, you need to make the code TLS 1.1 compliant. If you recall from Chapter 6, the most significant ...