Adding ALPN to session. 0-RTT requires matching the selected ALPN parameters against those in the session. Stash the ALPN value in the session in TLS 1.3, so we can recover it. BUG=76 Change-Id: I8668b287651ae4deb0bf540c0885a02d189adee0 Reviewed-on: https://boringssl-review.googlesource.com/13845 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: David Benjamin <davidben@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/tls13_server.c b/ssl/tls13_server.c index 0278b50..5c9e6db 100644 --- a/ssl/tls13_server.c +++ b/ssl/tls13_server.c
@@ -251,6 +251,17 @@ return ssl_hs_error; } + /* Store the initial negotiated ALPN in the session. */ + if (ssl->s3->alpn_selected != NULL) { + ssl->s3->new_session->early_alpn = + BUF_memdup(ssl->s3->alpn_selected, ssl->s3->alpn_selected_len); + if (ssl->s3->new_session->early_alpn == NULL) { + ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR); + return ssl_hs_error; + } + ssl->s3->new_session->early_alpn_len = ssl->s3->alpn_selected_len; + } + /* Incorporate the PSK into the running secret. */ if (ssl->s3->session_reused) { if (!tls13_advance_key_schedule(hs, ssl->s3->new_session->master_key,