| Index: net/third_party/nss/ssl/sslimpl.h
|
| diff --git a/net/third_party/nss/ssl/sslimpl.h b/net/third_party/nss/ssl/sslimpl.h
|
| index 0b69910cd67b47617ce40d612368d5799924ff95..0a7fbcfe6171050da44b27e3cacfd4c3a16cfb07 100644
|
| --- a/net/third_party/nss/ssl/sslimpl.h
|
| +++ b/net/third_party/nss/ssl/sslimpl.h
|
| @@ -317,6 +317,11 @@ typedef struct {
|
| #endif /* NSS_ENABLE_ECC */
|
|
|
| typedef struct sslOptionsStr {
|
| + /* For clients, this is a validated list of protocols in preference order
|
| + * and wire format. For servers, this is the list of support protocols,
|
| + * also in wire format. */
|
| + SECItem nextProtoNego;
|
| +
|
| unsigned int useSecurity : 1; /* 1 */
|
| unsigned int useSocks : 1; /* 2 */
|
| unsigned int requestCertificate : 1; /* 3 */
|
| @@ -770,6 +775,7 @@ const ssl3CipherSuiteDef *suite_def;
|
| #ifdef NSS_ENABLE_ECC
|
| PRUint32 negotiatedECCurves; /* bit mask */
|
| #endif /* NSS_ENABLE_ECC */
|
| + PRBool nextProtoNego;/* Our peer has sent this extension */
|
| } SSL3HandshakeState;
|
|
|
|
|
| @@ -811,6 +817,16 @@ struct ssl3StateStr {
|
| PRBool initialized;
|
| SSL3HandshakeState hs;
|
| ssl3CipherSpec specs[2]; /* one is current, one is pending. */
|
| +
|
| + /* In a client: if the server supports Next Protocol Negotiation, then
|
| + * this is the protocol that was requested.
|
| + * In a server: this is the protocol that the client requested via Next
|
| + * Protocol Negotiation.
|
| + *
|
| + * In either case, if the data pointer is non-NULL, then it is malloced
|
| + * data. */
|
| + SECItem nextProto;
|
| + int nextProtoState; /* See SSL_NEXT_PROTO_* defines */
|
| };
|
|
|
| typedef struct {
|
| @@ -1471,8 +1487,12 @@ extern SECStatus ssl3_HandleSupportedPointFormatsXtn(sslSocket * ss,
|
| PRUint16 ex_type, SECItem *data);
|
| extern SECStatus ssl3_ClientHandleSessionTicketXtn(sslSocket *ss,
|
| PRUint16 ex_type, SECItem *data);
|
| +extern SECStatus ssl3_ClientHandleNextProtoNegoXtn(sslSocket *ss,
|
| + PRUint16 ex_type, SECItem *data);
|
| extern SECStatus ssl3_ServerHandleSessionTicketXtn(sslSocket *ss,
|
| PRUint16 ex_type, SECItem *data);
|
| +extern SECStatus ssl3_ServerHandleNextProtoNegoXtn(sslSocket *ss,
|
| + PRUint16 ex_type, SECItem *data);
|
|
|
| /* ClientHello and ServerHello extension senders.
|
| * Note that not all extension senders are exposed here; only those that
|
| @@ -1486,6 +1506,10 @@ extern PRInt32 ssl3_SendSupportedCurvesXtn(sslSocket *ss,
|
| extern PRInt32 ssl3_SendSupportedPointFormatsXtn(sslSocket *ss,
|
| PRBool append, PRUint32 maxBytes);
|
| #endif
|
| +extern PRInt32 ssl3_ClientSendNextProtoNegoXtn(sslSocket *ss, PRBool append,
|
| + PRUint32 maxBytes);
|
| +extern SECStatus ssl3_ValidateNextProtoNego(const unsigned char* data,
|
| + unsigned short length);
|
|
|
| /* call the registered extension handlers. */
|
| extern SECStatus ssl3_HandleHelloExtensions(sslSocket *ss,
|
|
|