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

Side by Side Diff: net/third_party/nss/ssl/sslsock.c

Issue 64553002: Certificate Transparency TLS extension patch for NSS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address one more comment Created 7 years, 1 month 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
OLDNEW
1 /* 1 /*
2 * vtables (and methods that call through them) for the 4 types of 2 * vtables (and methods that call through them) for the 4 types of
3 * SSLSockets supported. Only one type is still supported. 3 * SSLSockets supported. Only one type is still supported.
4 * Various other functions. 4 * Various other functions.
5 * 5 *
6 * This Source Code Form is subject to the terms of the Mozilla Public 6 * This Source Code Form is subject to the terms of the Mozilla Public
7 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * License, v. 2.0. If a copy of the MPL was not distributed with this
8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9 #include "seccomon.h" 9 #include "seccomon.h"
10 #include "cert.h" 10 #include "cert.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 PR_TRUE, /* detectRollBack */ 166 PR_TRUE, /* detectRollBack */
167 PR_FALSE, /* noStepDown */ 167 PR_FALSE, /* noStepDown */
168 PR_FALSE, /* bypassPKCS11 */ 168 PR_FALSE, /* bypassPKCS11 */
169 PR_FALSE, /* noLocks */ 169 PR_FALSE, /* noLocks */
170 PR_FALSE, /* enableSessionTickets */ 170 PR_FALSE, /* enableSessionTickets */
171 PR_FALSE, /* enableDeflate */ 171 PR_FALSE, /* enableDeflate */
172 2, /* enableRenegotiation (default: requires extension) */ 172 2, /* enableRenegotiation (default: requires extension) */
173 PR_FALSE, /* requireSafeNegotiation */ 173 PR_FALSE, /* requireSafeNegotiation */
174 PR_FALSE, /* enableFalseStart */ 174 PR_FALSE, /* enableFalseStart */
175 PR_TRUE, /* cbcRandomIV */ 175 PR_TRUE, /* cbcRandomIV */
176 PR_FALSE /* enableOCSPStapling */ 176 PR_FALSE, /* enableOCSPStapling */
177 PR_FALSE /* enableSignedCertTimestamps */
177 }; 178 };
178 179
179 /* 180 /*
180 * default range of enabled SSL/TLS protocols 181 * default range of enabled SSL/TLS protocols
181 */ 182 */
182 static SSLVersionRange versions_defaults_stream = { 183 static SSLVersionRange versions_defaults_stream = {
183 SSL_LIBRARY_VERSION_3_0, 184 SSL_LIBRARY_VERSION_3_0,
184 SSL_LIBRARY_VERSION_TLS_1_0 185 SSL_LIBRARY_VERSION_TLS_1_0
185 }; 186 };
186 187
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 break; 857 break;
857 858
858 case SSL_CBC_RANDOM_IV: 859 case SSL_CBC_RANDOM_IV:
859 ss->opt.cbcRandomIV = on; 860 ss->opt.cbcRandomIV = on;
860 break; 861 break;
861 862
862 case SSL_ENABLE_OCSP_STAPLING: 863 case SSL_ENABLE_OCSP_STAPLING:
863 ss->opt.enableOCSPStapling = on; 864 ss->opt.enableOCSPStapling = on;
864 break; 865 break;
865 866
867 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS:
868 ss->opt.enableSignedCertTimestamps = on;
869 break;
870
866 default: 871 default:
867 PORT_SetError(SEC_ERROR_INVALID_ARGS); 872 PORT_SetError(SEC_ERROR_INVALID_ARGS);
868 rv = SECFailure; 873 rv = SECFailure;
869 } 874 }
870 875
871 /* We can't use the macros for releasing the locks here, 876 /* We can't use the macros for releasing the locks here,
872 * because ss->opt.noLocks might have changed just above. 877 * because ss->opt.noLocks might have changed just above.
873 * We must release these locks (monitors) here, if we aquired them above, 878 * We must release these locks (monitors) here, if we aquired them above,
874 * regardless of the current value of ss->opt.noLocks. 879 * regardless of the current value of ss->opt.noLocks.
875 */ 880 */
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 on = ss->opt.enableSessionTickets; 931 on = ss->opt.enableSessionTickets;
927 break; 932 break;
928 case SSL_ENABLE_DEFLATE: on = ss->opt.enableDeflate; break; 933 case SSL_ENABLE_DEFLATE: on = ss->opt.enableDeflate; break;
929 case SSL_ENABLE_RENEGOTIATION: 934 case SSL_ENABLE_RENEGOTIATION:
930 on = ss->opt.enableRenegotiation; break; 935 on = ss->opt.enableRenegotiation; break;
931 case SSL_REQUIRE_SAFE_NEGOTIATION: 936 case SSL_REQUIRE_SAFE_NEGOTIATION:
932 on = ss->opt.requireSafeNegotiation; break; 937 on = ss->opt.requireSafeNegotiation; break;
933 case SSL_ENABLE_FALSE_START: on = ss->opt.enableFalseStart; break; 938 case SSL_ENABLE_FALSE_START: on = ss->opt.enableFalseStart; break;
934 case SSL_CBC_RANDOM_IV: on = ss->opt.cbcRandomIV; break; 939 case SSL_CBC_RANDOM_IV: on = ss->opt.cbcRandomIV; break;
935 case SSL_ENABLE_OCSP_STAPLING: on = ss->opt.enableOCSPStapling; break; 940 case SSL_ENABLE_OCSP_STAPLING: on = ss->opt.enableOCSPStapling; break;
941 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS:
942 on = ss->opt.enableSignedCertTimestamps;
943 break;
936 944
937 default: 945 default:
938 PORT_SetError(SEC_ERROR_INVALID_ARGS); 946 PORT_SetError(SEC_ERROR_INVALID_ARGS);
939 rv = SECFailure; 947 rv = SECFailure;
940 } 948 }
941 949
942 ssl_ReleaseSSL3HandshakeLock(ss); 950 ssl_ReleaseSSL3HandshakeLock(ss);
943 ssl_Release1stHandshakeLock(ss); 951 ssl_Release1stHandshakeLock(ss);
944 952
945 *pOn = on; 953 *pOn = on;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 case SSL_ENABLE_RENEGOTIATION: 995 case SSL_ENABLE_RENEGOTIATION:
988 on = ssl_defaults.enableRenegotiation; break; 996 on = ssl_defaults.enableRenegotiation; break;
989 case SSL_REQUIRE_SAFE_NEGOTIATION: 997 case SSL_REQUIRE_SAFE_NEGOTIATION:
990 on = ssl_defaults.requireSafeNegotiation; 998 on = ssl_defaults.requireSafeNegotiation;
991 break; 999 break;
992 case SSL_ENABLE_FALSE_START: on = ssl_defaults.enableFalseStart; break; 1000 case SSL_ENABLE_FALSE_START: on = ssl_defaults.enableFalseStart; break;
993 case SSL_CBC_RANDOM_IV: on = ssl_defaults.cbcRandomIV; break; 1001 case SSL_CBC_RANDOM_IV: on = ssl_defaults.cbcRandomIV; break;
994 case SSL_ENABLE_OCSP_STAPLING: 1002 case SSL_ENABLE_OCSP_STAPLING:
995 on = ssl_defaults.enableOCSPStapling; 1003 on = ssl_defaults.enableOCSPStapling;
996 break; 1004 break;
1005 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS:
1006 on = ssl_defaults.enableSignedCertTimestamps;
1007 break;
997 1008
998 default: 1009 default:
999 PORT_SetError(SEC_ERROR_INVALID_ARGS); 1010 PORT_SetError(SEC_ERROR_INVALID_ARGS);
1000 rv = SECFailure; 1011 rv = SECFailure;
1001 } 1012 }
1002 1013
1003 *pOn = on; 1014 *pOn = on;
1004 return rv; 1015 return rv;
1005 } 1016 }
1006 1017
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 break; 1165 break;
1155 1166
1156 case SSL_CBC_RANDOM_IV: 1167 case SSL_CBC_RANDOM_IV:
1157 ssl_defaults.cbcRandomIV = on; 1168 ssl_defaults.cbcRandomIV = on;
1158 break; 1169 break;
1159 1170
1160 case SSL_ENABLE_OCSP_STAPLING: 1171 case SSL_ENABLE_OCSP_STAPLING:
1161 ssl_defaults.enableOCSPStapling = on; 1172 ssl_defaults.enableOCSPStapling = on;
1162 break; 1173 break;
1163 1174
1175 case SSL_ENABLE_SIGNED_CERT_TIMESTAMPS:
1176 ssl_defaults.enableSignedCertTimestamps = on;
1177 break;
1178
1164 default: 1179 default:
1165 PORT_SetError(SEC_ERROR_INVALID_ARGS); 1180 PORT_SetError(SEC_ERROR_INVALID_ARGS);
1166 return SECFailure; 1181 return SECFailure;
1167 } 1182 }
1168 return SECSuccess; 1183 return SECSuccess;
1169 } 1184 }
1170 1185
1171 /* function tells us if the cipher suite is one that we no longer support. */ 1186 /* function tells us if the cipher suite is one that we no longer support. */
1172 static PRBool 1187 static PRBool
1173 ssl_IsRemovedCipherSuite(PRInt32 suite) 1188 ssl_IsRemovedCipherSuite(PRInt32 suite)
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 } 1999 }
1985 2000
1986 if (!ss->sec.ci.sid) { 2001 if (!ss->sec.ci.sid) {
1987 PORT_SetError(SEC_ERROR_NOT_INITIALIZED); 2002 PORT_SetError(SEC_ERROR_NOT_INITIALIZED);
1988 return NULL; 2003 return NULL;
1989 } 2004 }
1990 2005
1991 return &ss->sec.ci.sid->peerCertStatus; 2006 return &ss->sec.ci.sid->peerCertStatus;
1992 } 2007 }
1993 2008
2009 const SECItem *
2010 SSL_PeerSignedCertTimestamps(PRFileDesc *fd)
2011 {
2012 sslSocket *ss = ssl_FindSocket(fd);
2013
2014 if (!ss) {
2015 SSL_DBG(("%d: SSL[%d]: bad socket in SSL_PeerSignedCertTimestamps",
2016 SSL_GETPID(), fd));
2017 return NULL;
2018 }
2019
2020 if (!ss->sec.ci.sid) {
2021 PORT_SetError(SEC_ERROR_NOT_INITIALIZED);
2022 return NULL;
2023 }
2024
2025 if (ss->version < SSL_LIBRARY_VERSION_3_0) {
2026 PORT_SetError(SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_SSL2);
2027 return NULL;
2028 }
2029 return &ss->sec.ci.sid->u.ssl3.signedCertTimestamps;
2030 }
2031
1994 SECStatus 2032 SECStatus
1995 SSL_HandshakeResumedSession(PRFileDesc *fd, PRBool *handshake_resumed) { 2033 SSL_HandshakeResumedSession(PRFileDesc *fd, PRBool *handshake_resumed) {
1996 sslSocket *ss = ssl_FindSocket(fd); 2034 sslSocket *ss = ssl_FindSocket(fd);
1997 2035
1998 if (!ss) { 2036 if (!ss) {
1999 SSL_DBG(("%d: SSL[%d]: bad socket in SSL_HandshakeResumedSession", 2037 SSL_DBG(("%d: SSL[%d]: bad socket in SSL_HandshakeResumedSession",
2000 SSL_GETPID(), fd)); 2038 SSL_GETPID(), fd));
2001 return SECFailure; 2039 return SECFailure;
2002 } 2040 }
2003 2041
(...skipping 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after
3124 if (status != SECSuccess) { 3162 if (status != SECSuccess) {
3125 loser: 3163 loser:
3126 ssl_DestroySocketContents(ss); 3164 ssl_DestroySocketContents(ss);
3127 ssl_DestroyLocks(ss); 3165 ssl_DestroyLocks(ss);
3128 PORT_Free(ss); 3166 PORT_Free(ss);
3129 ss = NULL; 3167 ss = NULL;
3130 } 3168 }
3131 } 3169 }
3132 return ss; 3170 return ss;
3133 } 3171 }
3134
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698