From 9796392fbe8d7cb0540176de2ad602610f066b61 Mon Sep 17 00:00:00 2001
From: Todd Short <tshort@akamai.com>
Date: Fri, 30 Aug 2019 09:09:42 -0400
Subject: [PATCH 11/43] QUIC: Add client early traffic secret storage

---
 ssl/ssl_local.h | 1 +
 ssl/ssl_quic.c  | 2 +-
 ssl/tls13_enc.c | 2 ++
 3 files changed, 4 insertions(+), 1 deletion(-)

--- a/ssl/ssl_local.h
+++ b/ssl/ssl_local.h
@@ -1493,6 +1493,7 @@ struct ssl_st {
     unsigned char server_app_traffic_secret[EVP_MAX_MD_SIZE];
     unsigned char client_hand_traffic_secret[EVP_MAX_MD_SIZE];
     unsigned char server_hand_traffic_secret[EVP_MAX_MD_SIZE];
+    unsigned char client_early_traffic_secret[EVP_MAX_MD_SIZE];
     unsigned char exporter_master_secret[EVP_MAX_MD_SIZE];
     unsigned char early_exporter_master_secret[EVP_MAX_MD_SIZE];
     EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */
--- a/ssl/ssl_quic.c
+++ b/ssl/ssl_quic.c
@@ -207,7 +207,7 @@ int quic_set_encryption_secrets(SSL *ssl
     /* secrets from the POV of the client */
     switch (level) {
     case ssl_encryption_early_data:
-        c2s_secret = ssl->early_secret;
+        c2s_secret = ssl->client_early_traffic_secret;
         break;
     case ssl_encryption_handshake:
         c2s_secret = ssl->client_hand_traffic_secret;
--- a/ssl/tls13_enc.c
+++ b/ssl/tls13_enc.c
@@ -728,6 +728,8 @@ int tls13_change_cipher_state(SSL *s, in
         memcpy(s->client_hand_traffic_secret, secret, hashlen);
     else if (label == server_handshake_traffic)
         memcpy(s->server_hand_traffic_secret, secret, hashlen);
+    else if (label == client_early_traffic)
+        memcpy(s->client_early_traffic_secret, secret, hashlen);
 #endif
 
     if (!ssl_log_secret(s, log_label, secret, hashlen)) {
