Index: net/third_party/nss/ssl/sslimpl.h |
=================================================================== |
--- net/third_party/nss/ssl/sslimpl.h (revision 202696) |
+++ net/third_party/nss/ssl/sslimpl.h (working copy) |
@@ -799,6 +799,7 @@ |
PRUint64 sha_cx[MAX_MAC_CONTEXT_LLONGS]; |
PK11Context * md5; /* handshake running hashes */ |
PK11Context * sha; |
+ PK11Context * tls12_handshake_hash; |
const ssl3KEADef * kea_def; |
ssl3CipherSuite cipher_suite; |
const ssl3CipherSuiteDef *suite_def; |
@@ -820,7 +821,7 @@ |
PRUint16 finishedBytes; /* size of single finished below */ |
union { |
TLSFinished tFinished[2]; /* client, then server */ |
- SSL3Hashes sFinished[2]; |
+ SSL3Finished sFinished[2]; |
SSL3Opaque data[72]; |
} finishedMsgs; |
#ifdef NSS_ENABLE_ECC |
@@ -835,6 +836,12 @@ |
/* Shared state between ssl3_HandleFinished and ssl3_FinishHandshake */ |
PRBool cacheSID; |
+ /* clientSigAndHash contains the contents of the signature_algorithms |
+ * extension (if any) from the client. This is only valid for TLS 1.2 |
+ * or later. */ |
+ SSL3SignatureAndHashAlgorithm *clientSigAndHash; |
+ unsigned int numClientSigAndHash; |
+ |
/* This group of values is used for DTLS */ |
PRUint16 sendMessageSeq; /* The sending message sequence |
* number */ |
@@ -1473,7 +1480,7 @@ |
* runtime to determine which versions are supported by the version of libssl |
* in use. |
*/ |
-#define SSL_LIBRARY_VERSION_MAX_SUPPORTED SSL_LIBRARY_VERSION_TLS_1_1 |
+#define SSL_LIBRARY_VERSION_MAX_SUPPORTED SSL_LIBRARY_VERSION_TLS_1_2 |
/* Rename this macro SSL_ALL_VERSIONS_DISABLED when SSL 2.0 is removed. */ |
#define SSL3_ALL_VERSIONS_DISABLED(vrange) \ |
@@ -1639,10 +1646,12 @@ |
SSL3Opaque *b, PRUint32 length, |
SECKEYPublicKey *srvrPubKey, |
SECKEYPrivateKey *srvrPrivKey); |
-extern SECStatus ssl3_SendECDHServerKeyExchange(sslSocket *ss); |
+extern SECStatus ssl3_SendECDHServerKeyExchange(sslSocket *ss, |
+ const SSL3SignatureAndHashAlgorithm *sigAndHash); |
#endif |
-extern SECStatus ssl3_ComputeCommonKeyHash(PRUint8 * hashBuf, |
+extern SECStatus ssl3_ComputeCommonKeyHash(SECOidTag hashAlg, |
+ PRUint8 * hashBuf, |
unsigned int bufLen, SSL3Hashes *hashes, |
PRBool bypassPKCS11); |
extern void ssl3_DestroyCipherSpec(ssl3CipherSpec *spec, PRBool freeSrvName); |
@@ -1655,12 +1664,21 @@ |
PRInt32 lenSize); |
extern SECStatus ssl3_AppendHandshakeVariable( sslSocket *ss, |
const SSL3Opaque *src, PRInt32 bytes, PRInt32 lenSize); |
+extern SECStatus ssl3_AppendSignatureAndHashAlgorithm(sslSocket *ss, |
+ const SSL3SignatureAndHashAlgorithm* sigAndHash); |
extern SECStatus ssl3_ConsumeHandshake(sslSocket *ss, void *v, PRInt32 bytes, |
SSL3Opaque **b, PRUint32 *length); |
extern PRInt32 ssl3_ConsumeHandshakeNumber(sslSocket *ss, PRInt32 bytes, |
SSL3Opaque **b, PRUint32 *length); |
extern SECStatus ssl3_ConsumeHandshakeVariable(sslSocket *ss, SECItem *i, |
PRInt32 bytes, SSL3Opaque **b, PRUint32 *length); |
+extern SECOidTag ssl3_TLSHashAlgorithmToOID(int hashFunc); |
+extern SECStatus ssl3_CheckSignatureAndHashAlgorithmConsistency( |
+ const SSL3SignatureAndHashAlgorithm *sigAndHash, |
+ CERTCertificate* cert); |
+extern SECStatus ssl3_ConsumeSignatureAndHashAlgorithm(sslSocket *ss, |
+ SSL3Opaque **b, PRUint32 *length, |
+ SSL3SignatureAndHashAlgorithm *out); |
extern SECStatus ssl3_SignHashes(SSL3Hashes *hash, SECKEYPrivateKey *key, |
SECItem *buf, PRBool isTLS); |
extern SECStatus ssl3_VerifySignedHashes(SSL3Hashes *hash, |