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

Side by Side Diff: net/third_party/nss/ssl/ssl.h

Issue 27254004: Make SSL False Start work with asynchronous certificate validation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Resolve merge conflict in ssl3_SendClientSecondRound Created 7 years, 2 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
« no previous file with comments | « no previous file | net/third_party/nss/ssl/ssl3con.c » ('j') | net/third_party/nss/ssl/ssl3con.c » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This file contains prototypes for the public SSL functions. 2 * This file contains prototypes for the public SSL functions.
3 * 3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public 4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 7
8 #ifndef __ssl_h_ 8 #ifndef __ssl_h_
9 #define __ssl_h_ 9 #define __ssl_h_
10 10
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 /* DEFLATE (off by default) */ 114 /* DEFLATE (off by default) */
115 #define SSL_ENABLE_RENEGOTIATION 20 /* Values below (default: never) */ 115 #define SSL_ENABLE_RENEGOTIATION 20 /* Values below (default: never) */
116 #define SSL_REQUIRE_SAFE_NEGOTIATION 21 /* Peer must send Signaling */ 116 #define SSL_REQUIRE_SAFE_NEGOTIATION 21 /* Peer must send Signaling */
117 /* Cipher Suite Value (SCSV) or */ 117 /* Cipher Suite Value (SCSV) or */
118 /* Renegotiation Info (RI) */ 118 /* Renegotiation Info (RI) */
119 /* extension in ALL handshakes. */ 119 /* extension in ALL handshakes. */
120 /* default: off */ 120 /* default: off */
121 #define SSL_ENABLE_FALSE_START 22 /* Enable SSL false start (off by */ 121 #define SSL_ENABLE_FALSE_START 22 /* Enable SSL false start (off by */
122 /* default, applies only to */ 122 /* default, applies only to */
123 /* clients). False start is a */ 123 /* clients). False start is a */
124 /* mode where an SSL client will start sending application data before */ 124 /* mode where an SSL client will start sending application data before
125 /* verifying the server's Finished message. This means that we could end up */ 125 * verifying the server's Finished message. This means that we could end up
126 /* sending data to an imposter. However, the data will be encrypted and */ 126 * sending data to an imposter. However, the data will be encrypted and
127 /* only the true server can derive the session key. Thus, so long as the */ 127 * only the true server can derive the session key. Thus, so long as the
128 /* cipher isn't broken this is safe. Because of this, False Start will only */ 128 * cipher isn't broken this is safe. The advantage of false start is that
129 /* occur on RSA or DH ciphersuites where the cipher's key length is >= 80 */ 129 * it saves a round trip for client-speaks-first protocols when performing a
130 /* bits. The advantage of False Start is that it saves a round trip for */ 130 * full handshake.
131 /* client-speaks-first protocols when performing a full handshake. */ 131 *
132 * In addition to enabling this option, the application must register a
133 * callback using the SSL_SetCanFalseStartCallback function.
134 */
132 135
133 /* For SSL 3.0 and TLS 1.0, by default we prevent chosen plaintext attacks 136 /* For SSL 3.0 and TLS 1.0, by default we prevent chosen plaintext attacks
134 * on SSL CBC mode cipher suites (see RFC 4346 Section F.3) by splitting 137 * on SSL CBC mode cipher suites (see RFC 4346 Section F.3) by splitting
135 * non-empty application_data records into two records; the first record has 138 * non-empty application_data records into two records; the first record has
136 * only the first byte of plaintext, and the second has the rest. 139 * only the first byte of plaintext, and the second has the rest.
137 * 140 *
138 * This only prevents the attack in the sending direction; the connection may 141 * This only prevents the attack in the sending direction; the connection may
139 * still be vulnerable to such attacks if the peer does not implement a similar 142 * still be vulnerable to such attacks if the peer does not implement a similar
140 * countermeasure. 143 * countermeasure.
141 * 144 *
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 #define SSL_ENV_VAR_NAME "SSL_INHERITANCE" 737 #define SSL_ENV_VAR_NAME "SSL_INHERITANCE"
735 738
736 /* called in child to inherit SID Cache variables. 739 /* called in child to inherit SID Cache variables.
737 * If envString is NULL, this function will use the value of the environment 740 * If envString is NULL, this function will use the value of the environment
738 * variable "SSL_INHERITANCE", otherwise the string value passed in will be 741 * variable "SSL_INHERITANCE", otherwise the string value passed in will be
739 * used. 742 * used.
740 */ 743 */
741 SSL_IMPORT SECStatus SSL_InheritMPServerSIDCache(const char * envString); 744 SSL_IMPORT SECStatus SSL_InheritMPServerSIDCache(const char * envString);
742 745
743 /* 746 /*
744 ** Set the callback on a particular socket that gets called when we finish 747 ** Set the callback that gets called when the TLS handshake is complete. The
wtc 2013/10/17 00:10:53 Just wondering: did you delete "on a particular so
briansmith 2013/10/17 01:43:29 Yes
wtc 2013/10/17 00:10:53 Nit: perhaps "the TLS handshake" should be changed
briansmith 2013/10/17 01:42:40 Done.
745 ** performing a handshake. 748 ** handshake callback is called after verifying the peer's Finished message and
749 ** before processing incoming application data. If the connection false started
wtc 2013/10/17 00:10:53 Is this also true for the server side? Also, this
briansmith 2013/10/17 01:42:40 I tried to make this clearer in the updated patch.
750 ** (see SSL_ENABLE_FALSE_START), then application data may already have already
751 ** been sent before the handshake callback is called. If the connection has not
752 ** false started then the callback will get called before any application data
753 ** is sent.
746 */ 754 */
747 typedef void (PR_CALLBACK *SSLHandshakeCallback)(PRFileDesc *fd, 755 typedef void (PR_CALLBACK *SSLHandshakeCallback)(PRFileDesc *fd,
748 void *client_data); 756 void *client_data);
749 SSL_IMPORT SECStatus SSL_HandshakeCallback(PRFileDesc *fd, 757 SSL_IMPORT SECStatus SSL_HandshakeCallback(PRFileDesc *fd,
750 SSLHandshakeCallback cb, void *client_data); 758 SSLHandshakeCallback cb, void *client_data);
751 759
760 /* Applications that wish to enable TLS false start must set this callback
761 ** function. NSS will invoke the functon to determine if a particular
762 ** connection should use false start or not. SECSuccess indicates that the
763 ** callback completed successfully, and if so *canFalseStart indicates if false
764 ** start can be used. If the callback does not return SECSuccess then the
765 ** handshake will be canceled. NSS's recommended criteria can be evaluated by
766 ** calling SSL_RecommendedCanFalseStart from the custom callback; it is
767 ** recommended that applications consider the recommended criteria as a
768 ** minimum requirement.
wtc 2013/10/17 00:10:53 1. As I noted before, unless we document exactly w
briansmith 2013/10/17 01:42:40 I think we should definitely improve this, includi
wtc 2013/10/17 15:28:14 Agreed.
769 **
770 ** If no false start callback is registered then false start will never be
771 ** done.
wtc 2013/10/17 00:10:53 The SSL_ENABLE_FALSE_START option should be mentio
briansmith 2013/10/17 01:42:40 Done.
772 **/
773 typedef SECStatus (PR_CALLBACK *SSLCanFalseStartCallback)(
774 PRFileDesc *fd, void *arg, PRBool *canFalseStart);
775
776 SSL_IMPORT SECStatus SSL_SetCanFalseStartCallback(
777 PRFileDesc *fd, SSLCanFalseStartCallback callback, void *arg);
778
779 /* This function sets *canFalseStart according to the NSS team's recommended
wtc 2013/10/17 00:10:53 Nit: remove "NSS team's". Perhaps you can rename t
briansmith 2013/10/17 01:42:40 Done.
780 ** criteria for false start. This criteria may change from release to release
wtc 2013/10/17 00:10:53 Nit: "criteria" is plural. The singular form is "c
briansmith 2013/10/17 01:42:40 Done.
781 ** and may depend on which handshake features have been negotiated and/or
782 ** properties of the certifciates/keys used on the connection.
783 */
784 SSL_IMPORT SECStatus SSL_RecommendedCanFalseStart(PRFileDesc *fd,
785 PRBool *canFalseStart);
786
752 /* 787 /*
753 ** For the server, request a new handshake. For the client, begin a new 788 ** For the server, request a new handshake. For the client, begin a new
754 ** handshake. If flushCache is non-zero, the SSL3 cache entry will be 789 ** handshake. If flushCache is non-zero, the SSL3 cache entry will be
755 ** flushed first, ensuring that a full SSL handshake will be done. 790 ** flushed first, ensuring that a full SSL handshake will be done.
756 ** If flushCache is zero, and an SSL connection is established, it will 791 ** If flushCache is zero, and an SSL connection is established, it will
757 ** do the much faster session restart handshake. This will change the 792 ** do the much faster session restart handshake. This will change the
758 ** session keys without doing another private key operation. 793 ** session keys without doing another private key operation.
759 */ 794 */
760 SSL_IMPORT SECStatus SSL_ReHandshake(PRFileDesc *fd, PRBool flushCache); 795 SSL_IMPORT SECStatus SSL_ReHandshake(PRFileDesc *fd, PRBool flushCache);
761 796
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
1098 * should continue using the connection. If the application passes a non-zero 1133 * should continue using the connection. If the application passes a non-zero
1099 * value for second argument (error), or if SSL_AuthCertificateComplete returns 1134 * value for second argument (error), or if SSL_AuthCertificateComplete returns
1100 * anything other than SECSuccess, then the application should close the 1135 * anything other than SECSuccess, then the application should close the
1101 * connection. 1136 * connection.
1102 */ 1137 */
1103 SSL_IMPORT SECStatus SSL_AuthCertificateComplete(PRFileDesc *fd, 1138 SSL_IMPORT SECStatus SSL_AuthCertificateComplete(PRFileDesc *fd,
1104 PRErrorCode error); 1139 PRErrorCode error);
1105 SEC_END_PROTOS 1140 SEC_END_PROTOS
1106 1141
1107 #endif /* __ssl_h_ */ 1142 #endif /* __ssl_h_ */
OLDNEW
« no previous file with comments | « no previous file | net/third_party/nss/ssl/ssl3con.c » ('j') | net/third_party/nss/ssl/ssl3con.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698