Index: net/third_party/nss/ssl/ssl3ext.c |
diff --git a/net/third_party/nss/ssl/ssl3ext.c b/net/third_party/nss/ssl/ssl3ext.c |
index 04157701e9028e670098fa47469960ffc05513c9..8142c3a7664a2ef10ac3b1968133f5cd659abbb8 100644 |
--- a/net/third_party/nss/ssl/ssl3ext.c |
+++ b/net/third_party/nss/ssl/ssl3ext.c |
@@ -812,6 +812,15 @@ ssl3_ClientSendChannelIDXtn(sslSocket * ss, PRBool append, |
return 0; |
} |
+ if (ss->ssl3.hs.isResuming && |
+ ss->sec.ci.sid->u.ssl3.lastHandshakeHash.len == 0) { |
+ /* We can't do ChannelID on a connection if we're resuming and didn't |
+ * do ChannelID on the original connection: without ChannelID on the |
+ * original connection we didn't record the handshake hashes needed for |
+ * the signature. */ |
+ return 0; |
+ } |
+ |
if (append) { |
SECStatus rv; |
rv = ssl3_AppendHandshakeNumber(ss, ssl_channel_id_xtn, 2); |