Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(605)

Side by Side Diff: net/third_party/nss/patches/fallbackscsv.patch

Issue 142283002: Update net/third_party/nss to NSS_3_15_5_BETA2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fix applypatches.sh mistakes Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 diff -pu a/nss/lib/ssl/ssl3con.c b/nss/lib/ssl/ssl3con.c 1 diff -pu a/nss/lib/ssl/ssl3con.c b/nss/lib/ssl/ssl3con.c
2 --- a/nss/lib/ssl/ssl3con.c» 2014-01-03 19:44:44.807185186 -0800 2 --- a/nss/lib/ssl/ssl3con.c» 2014-01-17 18:46:51.999581198 -0800
3 +++ b/nss/lib/ssl/ssl3con.c» 2014-01-03 19:44:54.857349534 -0800 3 +++ b/nss/lib/ssl/ssl3con.c» 2014-01-17 18:47:05.509804656 -0800
4 @@ -3473,6 +3473,9 @@ ssl3_HandleAlert(sslSocket *ss, sslBuffe 4 @@ -3473,6 +3473,9 @@ ssl3_HandleAlert(sslSocket *ss, sslBuffe
5 case certificate_unknown: error = SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT; 5 case certificate_unknown: error = SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT;
6 break; 6 break;
7 case illegal_parameter: error = SSL_ERROR_ILLEGAL_PARAMETER_ALERT;break; 7 case illegal_parameter: error = SSL_ERROR_ILLEGAL_PARAMETER_ALERT;break;
8 + case inappropriate_fallback: 8 + case inappropriate_fallback:
9 + error = SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT; 9 + error = SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT;
10 + break; 10 + break;
11 11
12 /* All alerts below are TLS only. */ 12 /* All alerts below are TLS only. */
13 case unknown_ca: error = SSL_ERROR_UNKNOWN_CA_ALERT; break; 13 case unknown_ca: error = SSL_ERROR_UNKNOWN_CA_ALERT; break;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 + sizeof(ssl3CipherSuite)); 53 + sizeof(ssl3CipherSuite));
54 + if (rv != SECSuccess) { 54 + if (rv != SECSuccess) {
55 + if (sid->u.ssl3.lock) { PR_RWLock_Unlock(sid->u.ssl3.lock); } 55 + if (sid->u.ssl3.lock) { PR_RWLock_Unlock(sid->u.ssl3.lock); }
56 + return rv; /* err set by ssl3_AppendHandshake* */ 56 + return rv; /* err set by ssl3_AppendHandshake* */
57 + } 57 + }
58 + actual_count++; 58 + actual_count++;
59 + } 59 + }
60 for (i = 0; i < ssl_V3_SUITES_IMPLEMENTED; i++) { 60 for (i = 0; i < ssl_V3_SUITES_IMPLEMENTED; i++) {
61 ssl3CipherSuiteCfg *suite = &ss->cipherSuites[i]; 61 ssl3CipherSuiteCfg *suite = &ss->cipherSuites[i];
62 if (config_match(suite, ss->ssl3.policy, PR_TRUE, &ss->vrange)) { 62 if (config_match(suite, ss->ssl3.policy, PR_TRUE, &ss->vrange)) {
63 @@ -5416,6 +5437,7 @@ ssl3_SendClientHello(sslSocket *ss, PRBo 63 @@ -8084,6 +8105,19 @@ ssl3_HandleClientHello(sslSocket *ss, SS
64
65 » extLen = ssl3_AppendPaddingExtension(ss, paddingExtensionLen, maxBytes);
66 » if (extLen < 0) {
67 +» if (sid->u.ssl3.lock) { PR_RWLock_Unlock(sid->u.ssl3.lock); }
68 » return SECFailure;
69 » }
70 » maxBytes -= extLen;
71 @@ -8083,6 +8105,19 @@ ssl3_HandleClientHello(sslSocket *ss, SS
72 goto loser; /* malformed */ 64 goto loser; /* malformed */
73 } 65 }
74 66
75 + /* If the ClientHello version is less than our maximum version, check for a 67 + /* If the ClientHello version is less than our maximum version, check for a
76 + * TLS_FALLBACK_SCSV and reject the connection if found. */ 68 + * TLS_FALLBACK_SCSV and reject the connection if found. */
77 + if (ss->vrange.max > ss->clientHelloVersion) { 69 + if (ss->vrange.max > ss->clientHelloVersion) {
78 + for (i = 0; i + 1 < suites.len; i += 2) { 70 + for (i = 0; i + 1 < suites.len; i += 2) {
79 + PRUint16 suite_i = (suites.data[i] << 8) | suites.data[i + 1]; 71 + PRUint16 suite_i = (suites.data[i] << 8) | suites.data[i + 1];
80 + if (suite_i != TLS_FALLBACK_SCSV) 72 + if (suite_i != TLS_FALLBACK_SCSV)
81 + continue; 73 + continue;
82 + desc = inappropriate_fallback; 74 + desc = inappropriate_fallback;
83 + errCode = SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT; 75 + errCode = SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT;
84 + goto alert_loser; 76 + goto alert_loser;
85 + } 77 + }
86 + } 78 + }
87 + 79 +
88 /* grab the list of compression methods. */ 80 /* grab the list of compression methods. */
89 rv = ssl3_ConsumeHandshakeVariable(ss, &comps, 1, &b, &length); 81 rv = ssl3_ConsumeHandshakeVariable(ss, &comps, 1, &b, &length);
90 if (rv != SECSuccess) { 82 if (rv != SECSuccess) {
91 diff -pu a/nss/lib/ssl/ssl3prot.h b/nss/lib/ssl/ssl3prot.h 83 diff -pu a/nss/lib/ssl/ssl3prot.h b/nss/lib/ssl/ssl3prot.h
92 --- a/nss/lib/ssl/ssl3prot.h» 2014-01-03 19:39:28.442012014 -0800 84 --- a/nss/lib/ssl/ssl3prot.h» 2014-01-17 17:59:03.242109996 -0800
93 +++ b/nss/lib/ssl/ssl3prot.h» 2014-01-03 19:44:54.857349534 -0800 85 +++ b/nss/lib/ssl/ssl3prot.h» 2014-01-17 18:47:05.509804656 -0800
94 @@ -98,6 +98,7 @@ typedef enum { 86 @@ -98,6 +98,7 @@ typedef enum {
95 protocol_version = 70, 87 protocol_version = 70,
96 insufficient_security = 71, 88 insufficient_security = 71,
97 internal_error = 80, 89 internal_error = 80,
98 + inappropriate_fallback = 86, /* could also be sent for SSLv3 */ 90 + inappropriate_fallback = 86, /* could also be sent for SSLv3 */
99 user_canceled = 90, 91 user_canceled = 90,
100 no_renegotiation = 100, 92 no_renegotiation = 100,
101 93
102 diff -pu a/nss/lib/ssl/sslerr.h b/nss/lib/ssl/sslerr.h 94 diff -pu a/nss/lib/ssl/sslerr.h b/nss/lib/ssl/sslerr.h
103 --- a/nss/lib/ssl/sslerr.h» 2014-01-03 19:39:28.442012014 -0800 95 --- a/nss/lib/ssl/sslerr.h» 2014-01-17 17:59:03.242109996 -0800
104 +++ b/nss/lib/ssl/sslerr.h» 2014-01-03 19:44:54.877349862 -0800 96 +++ b/nss/lib/ssl/sslerr.h» 2014-01-17 18:47:05.509804656 -0800
105 @@ -196,6 +196,7 @@ SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM 97 @@ -196,6 +196,7 @@ SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM
106 SSL_ERROR_BAD_CHANNEL_ID_DATA = (SSL_ERROR_BASE + 129), 98 SSL_ERROR_BAD_CHANNEL_ID_DATA = (SSL_ERROR_BASE + 129),
107 SSL_ERROR_INVALID_CHANNEL_ID_KEY = (SSL_ERROR_BASE + 130), 99 SSL_ERROR_INVALID_CHANNEL_ID_KEY = (SSL_ERROR_BASE + 130),
108 SSL_ERROR_GET_CHANNEL_ID_FAILED = (SSL_ERROR_BASE + 131), 100 SSL_ERROR_GET_CHANNEL_ID_FAILED = (SSL_ERROR_BASE + 131),
109 +SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT = (SSL_ERROR_BASE + 132), 101 +SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT = (SSL_ERROR_BASE + 132),
110 102
111 SSL_ERROR_END_OF_LIST /* let the c compiler determine the value of this. */ 103 SSL_ERROR_END_OF_LIST /* let the c compiler determine the value of this. */
112 } SSLErrorCodes; 104 } SSLErrorCodes;
113 diff -pu a/nss/lib/ssl/SSLerrs.h b/nss/lib/ssl/SSLerrs.h 105 diff -pu a/nss/lib/ssl/SSLerrs.h b/nss/lib/ssl/SSLerrs.h
114 --- a/nss/lib/ssl/SSLerrs.h» 2014-01-03 19:39:28.442012014 -0800 106 --- a/nss/lib/ssl/SSLerrs.h» 2014-01-17 17:59:03.242109996 -0800
115 +++ b/nss/lib/ssl/SSLerrs.h» 2014-01-03 19:44:54.907350351 -0800 107 +++ b/nss/lib/ssl/SSLerrs.h» 2014-01-17 18:47:05.509804656 -0800
116 @@ -421,3 +421,8 @@ ER3(SSL_ERROR_INVALID_CHANNEL_ID_KEY, (S 108 @@ -421,3 +421,8 @@ ER3(SSL_ERROR_INVALID_CHANNEL_ID_KEY, (S
117 109
118 ER3(SSL_ERROR_GET_CHANNEL_ID_FAILED, (SSL_ERROR_BASE + 131), 110 ER3(SSL_ERROR_GET_CHANNEL_ID_FAILED, (SSL_ERROR_BASE + 131),
119 "The application could not get a TLS Channel ID.") 111 "The application could not get a TLS Channel ID.")
120 + 112 +
121 +ER3(SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT, (SSL_ERROR_BASE + 132), 113 +ER3(SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT, (SSL_ERROR_BASE + 132),
122 +"The connection was using a lesser TLS version as a result of a previous" 114 +"The connection was using a lesser TLS version as a result of a previous"
123 +" handshake failure, but the server indicated that it should not have been" 115 +" handshake failure, but the server indicated that it should not have been"
124 +" needed.") 116 +" needed.")
125 diff -pu a/nss/lib/ssl/ssl.h b/nss/lib/ssl/ssl.h 117 diff -pu a/nss/lib/ssl/ssl.h b/nss/lib/ssl/ssl.h
126 --- a/nss/lib/ssl/ssl.h»2014-01-03 19:44:44.807185186 -0800 118 --- a/nss/lib/ssl/ssl.h»2014-01-17 18:46:51.999581198 -0800
127 +++ b/nss/lib/ssl/ssl.h»2014-01-03 19:44:54.907350351 -0800 119 +++ b/nss/lib/ssl/ssl.h»2014-01-17 18:48:54.971613341 -0800
128 @@ -163,6 +163,8 @@ SSL_IMPORT PRFileDesc *DTLS_ImportFD(PRF 120 @@ -183,6 +183,8 @@ SSL_IMPORT PRFileDesc *DTLS_ImportFD(PRF
129 #define SSL_ENABLE_OCSP_STAPLING 24 /* Request OCSP stapling (client) */ 121
130 /* Request Signed Certificate Timestamps via TLS extension (client) */ 122 /* Request Signed Certificate Timestamps via TLS extension (client) */
131 #define SSL_ENABLE_SIGNED_CERT_TIMESTAMPS 25 123 #define SSL_ENABLE_SIGNED_CERT_TIMESTAMPS 27
132 +#define SSL_ENABLE_FALLBACK_SCSV 26 /* Send fallback SCSV in 124 +#define SSL_ENABLE_FALLBACK_SCSV 28 /* Send fallback SCSV in
133 + * handshakes. */ 125 + * handshakes. */
134 126
135 #ifdef SSL_DEPRECATED_FUNCTION 127 #ifdef SSL_DEPRECATED_FUNCTION
136 /* Old deprecated function names */ 128 /* Old deprecated function names */
137 diff -pu a/nss/lib/ssl/sslimpl.h b/nss/lib/ssl/sslimpl.h 129 diff -pu a/nss/lib/ssl/sslimpl.h b/nss/lib/ssl/sslimpl.h
138 --- a/nss/lib/ssl/sslimpl.h» 2014-01-03 19:44:44.807185186 -0800 130 --- a/nss/lib/ssl/sslimpl.h» 2014-01-17 18:46:51.999581198 -0800
139 +++ b/nss/lib/ssl/sslimpl.h» 2014-01-03 19:44:54.907350351 -0800 131 +++ b/nss/lib/ssl/sslimpl.h» 2014-01-17 18:51:17.963962287 -0800
140 @@ -336,6 +336,7 @@ typedef struct sslOptionsStr { 132 @@ -338,6 +338,7 @@ typedef struct sslOptionsStr {
141 unsigned int cbcRandomIV : 1; /* 24 */ 133 unsigned int enableNPN : 1; /* 26 */
142 unsigned int enableOCSPStapling» : 1; /* 25 */ 134 unsigned int enableALPN : 1; /* 27 */
143 unsigned int enableSignedCertTimestamps : 1; /* 26 */ 135 unsigned int enableSignedCertTimestamps : 1; /* 28 */
144 + unsigned int enableFallbackSCSV» : 1; /* 27 */ 136 + unsigned int enableFallbackSCSV : 1; /* 29 */
145 } sslOptions; 137 } sslOptions;
146 138
147 typedef enum { sslHandshakingUndetermined = 0, 139 typedef enum { sslHandshakingUndetermined = 0,
148 diff -pu a/nss/lib/ssl/sslproto.h b/nss/lib/ssl/sslproto.h 140 diff -pu a/nss/lib/ssl/sslproto.h b/nss/lib/ssl/sslproto.h
149 --- a/nss/lib/ssl/sslproto.h» 2014-01-03 19:43:07.025586219 -0800 141 --- a/nss/lib/ssl/sslproto.h» 2014-01-17 18:10:16.793281867 -0800
150 +++ b/nss/lib/ssl/sslproto.h» 2014-01-03 19:44:54.907350351 -0800 142 +++ b/nss/lib/ssl/sslproto.h» 2014-01-17 18:47:05.509804656 -0800
151 @@ -172,6 +172,11 @@ 143 @@ -172,6 +172,11 @@
152 */ 144 */
153 #define TLS_EMPTY_RENEGOTIATION_INFO_SCSV 0x00FF 145 #define TLS_EMPTY_RENEGOTIATION_INFO_SCSV 0x00FF
154 146
155 +/* TLS_FALLBACK_SCSV is a signaling cipher suite value that indicates that a 147 +/* TLS_FALLBACK_SCSV is a signaling cipher suite value that indicates that a
156 + * handshake is the result of TLS version fallback. This value is not IANA 148 + * handshake is the result of TLS version fallback. This value is not IANA
157 + * assigned. */ 149 + * assigned. */
158 +#define TLS_FALLBACK_SCSV 0x5600 150 +#define TLS_FALLBACK_SCSV 0x5600
159 + 151 +
160 /* Cipher Suite Values starting with 0xC000 are defined in informational 152 /* Cipher Suite Values starting with 0xC000 are defined in informational
161 * RFCs. 153 * RFCs.
162 */ 154 */
163 diff -pu a/nss/lib/ssl/sslsock.c b/nss/lib/ssl/sslsock.c 155 diff -pu a/nss/lib/ssl/sslsock.c b/nss/lib/ssl/sslsock.c
164 --- a/nss/lib/ssl/sslsock.c» 2014-01-03 19:44:44.807185186 -0800 156 --- a/nss/lib/ssl/sslsock.c» 2014-01-17 18:46:52.009581364 -0800
165 +++ b/nss/lib/ssl/sslsock.c» 2014-01-03 19:44:54.907350351 -0800 157 +++ b/nss/lib/ssl/sslsock.c» 2014-01-17 18:59:17.931852364 -0800
166 @@ -86,7 +86,8 @@ static sslOptions ssl_defaults = { 158 @@ -88,7 +88,8 @@ static sslOptions ssl_defaults = {
167 PR_FALSE, /* enableFalseStart */
168 PR_TRUE, /* cbcRandomIV */
169 PR_FALSE, /* enableOCSPStapling */ 159 PR_FALSE, /* enableOCSPStapling */
160 PR_TRUE, /* enableNPN */
161 PR_FALSE, /* enableALPN */
170 - PR_FALSE /* enableSignedCertTimestamps */ 162 - PR_FALSE /* enableSignedCertTimestamps */
171 + PR_FALSE, /* enableSignedCertTimestamps */ 163 + PR_FALSE, /* enableSignedCertTimestamps */
172 + PR_FALSE /* enableFallbackSCSV */ 164 + PR_FALSE /* enableFallbackSCSV */
173 }; 165 };
174 166
175 /* 167 /*
176 @@ -782,6 +783,10 @@ SSL_OptionSet(PRFileDesc *fd, PRInt32 wh 168 @@ -792,6 +793,10 @@ SSL_OptionSet(PRFileDesc *fd, PRInt32 wh
177 ss->opt.enableSignedCertTimestamps = on; 169 » ss->opt.enableSignedCertTimestamps = on;
178 break; 170 » break;
179 171
180 + case SSL_ENABLE_FALLBACK_SCSV: 172 + case SSL_ENABLE_FALLBACK_SCSV:
181 + ss->opt.enableFallbackSCSV = on; 173 + ss->opt.enableFallbackSCSV = on;
182 + break; 174 + break;
183 + 175 +
184 default: 176 default:
185 PORT_SetError(SEC_ERROR_INVALID_ARGS); 177 PORT_SetError(SEC_ERROR_INVALID_ARGS);
186 rv = SECFailure; 178 rv = SECFailure;
187 @@ -855,6 +860,7 @@ SSL_OptionGet(PRFileDesc *fd, PRInt32 wh 179 @@ -867,6 +872,7 @@ SSL_OptionGet(PRFileDesc *fd, PRInt32 wh
188 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS: 180 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS:
189 on = ss->opt.enableSignedCertTimestamps; 181 » on = ss->opt.enableSignedCertTimestamps;
190 break; 182 » break;
191 + case SSL_ENABLE_FALLBACK_SCSV: on = ss->opt.enableFallbackSCSV; break; 183 + case SSL_ENABLE_FALLBACK_SCSV: on = ss->opt.enableFallbackSCSV; break;
192 184
193 default: 185 default:
194 PORT_SetError(SEC_ERROR_INVALID_ARGS); 186 PORT_SetError(SEC_ERROR_INVALID_ARGS);
195 @@ -919,6 +925,9 @@ SSL_OptionGetDefault(PRInt32 which, PRBo 187 @@ -933,6 +939,9 @@ SSL_OptionGetDefault(PRInt32 which, PRBo
196 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS: 188 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS:
197 on = ssl_defaults.enableSignedCertTimestamps; 189 » on = ssl_defaults.enableSignedCertTimestamps;
198 break; 190 » break;
199 + case SSL_ENABLE_FALLBACK_SCSV: 191 + case SSL_ENABLE_FALLBACK_SCSV:
200 + on = ssl_defaults.enableFallbackSCSV; 192 +» on = ssl_defaults.enableFallbackSCSV;
201 + break; 193 +» break;
202 194
203 default: 195 default:
204 PORT_SetError(SEC_ERROR_INVALID_ARGS); 196 PORT_SetError(SEC_ERROR_INVALID_ARGS);
205 @@ -1090,6 +1099,10 @@ SSL_OptionSetDefault(PRInt32 which, PRBo 197 @@ -1112,6 +1121,10 @@ SSL_OptionSetDefault(PRInt32 which, PRBo
206 ssl_defaults.enableSignedCertTimestamps = on; 198 » ssl_defaults.enableSignedCertTimestamps = on;
207 break; 199 » break;
208 200
209 + case SSL_ENABLE_FALLBACK_SCSV: 201 + case SSL_ENABLE_FALLBACK_SCSV:
210 + ssl_defaults.enableFallbackSCSV = on; 202 + ssl_defaults.enableFallbackSCSV = on;
211 + break; 203 + break;
212 + 204 +
213 default: 205 default:
214 PORT_SetError(SEC_ERROR_INVALID_ARGS); 206 PORT_SetError(SEC_ERROR_INVALID_ARGS);
215 return SECFailure; 207 return SECFailure;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698