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

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

Issue 1511123006: Uprev NSS (in libssl) to NSS 3.21 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated deps Created 5 years 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
« no previous file with comments | « net/third_party/nss/ssl/sslerr.h ('k') | net/third_party/nss/ssl/sslinfo.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
1 /* 2 /*
2 * This file is PRIVATE to SSL and should be the first thing included by 3 * This file is PRIVATE to SSL and should be the first thing included by
3 * any SSL implementation file. 4 * any SSL implementation file.
4 * 5 *
5 * 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
6 * 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
7 * 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/. */
8 9
9 #ifndef __sslimpl_h_ 10 #ifndef __sslimpl_h_
10 #define __sslimpl_h_ 11 #define __sslimpl_h_
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 typedef struct sslSecurityInfoStr sslSecurityInfo; 175 typedef struct sslSecurityInfoStr sslSecurityInfo;
175 typedef struct sslSessionIDStr sslSessionID; 176 typedef struct sslSessionIDStr sslSessionID;
176 typedef struct sslSocketStr sslSocket; 177 typedef struct sslSocketStr sslSocket;
177 typedef struct sslSocketOpsStr sslSocketOps; 178 typedef struct sslSocketOpsStr sslSocketOps;
178 179
179 typedef struct ssl3StateStr ssl3State; 180 typedef struct ssl3StateStr ssl3State;
180 typedef struct ssl3CertNodeStr ssl3CertNode; 181 typedef struct ssl3CertNodeStr ssl3CertNode;
181 typedef struct ssl3BulkCipherDefStr ssl3BulkCipherDef; 182 typedef struct ssl3BulkCipherDefStr ssl3BulkCipherDef;
182 typedef struct ssl3MACDefStr ssl3MACDef; 183 typedef struct ssl3MACDefStr ssl3MACDef;
183 typedef struct ssl3KeyPairStr ssl3KeyPair; 184 typedef struct ssl3KeyPairStr ssl3KeyPair;
185 typedef struct ssl3DHParamsStr ssl3DHParams;
184 186
185 struct ssl3CertNodeStr { 187 struct ssl3CertNodeStr {
186 struct ssl3CertNodeStr *next; 188 struct ssl3CertNodeStr *next;
187 CERTCertificate * cert; 189 CERTCertificate * cert;
188 }; 190 };
189 191
190 typedef SECStatus (*sslHandshakeFunc)(sslSocket *ss); 192 typedef SECStatus (*sslHandshakeFunc)(sslSocket *ss);
191 193
192 /* This type points to the low layer send func, 194 /* This type points to the low layer send func,
193 ** e.g. ssl2_SendStream or ssl3_SendPlainText. 195 ** e.g. ssl2_SendStream or ssl3_SendPlainText.
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 unsigned int isPresent : 1; 295 unsigned int isPresent : 1;
294 #else 296 #else
295 ssl3CipherSuite cipher_suite; 297 ssl3CipherSuite cipher_suite;
296 PRUint8 policy; 298 PRUint8 policy;
297 unsigned char enabled : 1; 299 unsigned char enabled : 1;
298 unsigned char isPresent : 1; 300 unsigned char isPresent : 1;
299 #endif 301 #endif
300 } ssl3CipherSuiteCfg; 302 } ssl3CipherSuiteCfg;
301 303
302 #ifndef NSS_DISABLE_ECC 304 #ifndef NSS_DISABLE_ECC
303 #define ssl_V3_SUITES_IMPLEMENTED 63 305 #define ssl_V3_SUITES_IMPLEMENTED 66
304 #else 306 #else
305 #define ssl_V3_SUITES_IMPLEMENTED 37 307 #define ssl_V3_SUITES_IMPLEMENTED 40
306 #endif /* NSS_DISABLE_ECC */ 308 #endif /* NSS_DISABLE_ECC */
307 309
308 #define MAX_DTLS_SRTP_CIPHER_SUITES 4 310 #define MAX_DTLS_SRTP_CIPHER_SUITES 4
309 311
312 /* MAX_SIGNATURE_ALGORITHMS allows for a large number of combinations of
313 * SSLSignType and SSLHashType, but not all combinations (specifically, this
314 * doesn't allow space for combinations with MD5). */
315 #define MAX_SIGNATURE_ALGORITHMS 15
316
317
310 typedef struct sslOptionsStr { 318 typedef struct sslOptionsStr {
311 /* If SSL_SetNextProtoNego has been called, then this contains the 319 /* If SSL_SetNextProtoNego has been called, then this contains the
312 * list of supported protocols. */ 320 * list of supported protocols. */
313 SECItem nextProtoNego; 321 SECItem nextProtoNego;
314 322
315 unsigned int useSecurity : 1; /* 1 */ 323 unsigned int useSecurity : 1; /* 1 */
316 unsigned int useSocks : 1; /* 2 */ 324 unsigned int useSocks : 1; /* 2 */
317 unsigned int requestCertificate : 1; /* 3 */ 325 unsigned int requestCertificate : 1; /* 3 */
318 unsigned int requireCertificate : 2; /* 4-5 */ 326 unsigned int requireCertificate : 2; /* 4-5 */
319 unsigned int handshakeAsClient : 1; /* 6 */ 327 unsigned int handshakeAsClient : 1; /* 6 */
(...skipping 12 matching lines...) Expand all
332 unsigned int enableDeflate : 1; /* 19 */ 340 unsigned int enableDeflate : 1; /* 19 */
333 unsigned int enableRenegotiation : 2; /* 20-21 */ 341 unsigned int enableRenegotiation : 2; /* 20-21 */
334 unsigned int requireSafeNegotiation : 1; /* 22 */ 342 unsigned int requireSafeNegotiation : 1; /* 22 */
335 unsigned int enableFalseStart : 1; /* 23 */ 343 unsigned int enableFalseStart : 1; /* 23 */
336 unsigned int cbcRandomIV : 1; /* 24 */ 344 unsigned int cbcRandomIV : 1; /* 24 */
337 unsigned int enableOCSPStapling : 1; /* 25 */ 345 unsigned int enableOCSPStapling : 1; /* 25 */
338 unsigned int enableNPN : 1; /* 26 */ 346 unsigned int enableNPN : 1; /* 26 */
339 unsigned int enableALPN : 1; /* 27 */ 347 unsigned int enableALPN : 1; /* 27 */
340 unsigned int reuseServerECDHEKey : 1; /* 28 */ 348 unsigned int reuseServerECDHEKey : 1; /* 28 */
341 unsigned int enableFallbackSCSV : 1; /* 29 */ 349 unsigned int enableFallbackSCSV : 1; /* 29 */
342 unsigned int enableSignedCertTimestamps : 1; /* 30 */ 350 unsigned int enableServerDhe : 1; /* 30 */
351 unsigned int enableExtendedMS : 1; /* 31 */
352 unsigned int enableSignedCertTimestamps : 1; /* 32 */
343 } sslOptions; 353 } sslOptions;
344 354
345 typedef enum { sslHandshakingUndetermined = 0, 355 typedef enum { sslHandshakingUndetermined = 0,
346 sslHandshakingAsClient, 356 sslHandshakingAsClient,
347 sslHandshakingAsServer 357 sslHandshakingAsServer
348 } sslHandshakingType; 358 } sslHandshakingType;
349 359
350 typedef struct sslServerCertsStr { 360 typedef struct sslServerCertsStr {
351 /* Configuration state for server sockets */ 361 /* Configuration state for server sockets */
352 CERTCertificate * serverCert; 362 CERTCertificate * serverCert;
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 #define MAX_MAC_CONTEXT_LLONGS (MAX_MAC_CONTEXT_BYTES / 8) 524 #define MAX_MAC_CONTEXT_LLONGS (MAX_MAC_CONTEXT_BYTES / 8)
515 525
516 #define MAX_CIPHER_CONTEXT_BYTES 2080 526 #define MAX_CIPHER_CONTEXT_BYTES 2080
517 #define MAX_CIPHER_CONTEXT_LLONGS (MAX_CIPHER_CONTEXT_BYTES / 8) 527 #define MAX_CIPHER_CONTEXT_LLONGS (MAX_CIPHER_CONTEXT_BYTES / 8)
518 528
519 typedef struct { 529 typedef struct {
520 SSL3Opaque wrapped_master_secret[48]; 530 SSL3Opaque wrapped_master_secret[48];
521 PRUint16 wrapped_master_secret_len; 531 PRUint16 wrapped_master_secret_len;
522 PRUint8 msIsWrapped; 532 PRUint8 msIsWrapped;
523 PRUint8 resumable; 533 PRUint8 resumable;
534 PRUint8 extendedMasterSecretUsed;
524 } ssl3SidKeys; /* 52 bytes */ 535 } ssl3SidKeys; /* 52 bytes */
525 536
526 typedef struct { 537 typedef struct {
527 PK11SymKey *write_key; 538 PK11SymKey *write_key;
528 PK11SymKey *write_mac_key; 539 PK11SymKey *write_mac_key;
529 PK11Context *write_mac_context; 540 PK11Context *write_mac_context;
530 SECItem write_key_item; 541 SECItem write_key_item;
531 SECItem write_iv_item; 542 SECItem write_iv_item;
532 SECItem write_mac_key_item; 543 SECItem write_mac_key_item;
533 SSL3Opaque write_iv[MAX_IV_LENGTH]; 544 SSL3Opaque write_iv[MAX_IV_LENGTH];
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 ** There are tables of these, all const. 770 ** There are tables of these, all const.
760 */ 771 */
761 typedef struct { 772 typedef struct {
762 SSL3KeyExchangeAlgorithm kea; 773 SSL3KeyExchangeAlgorithm kea;
763 SSL3KEAType exchKeyType; 774 SSL3KEAType exchKeyType;
764 SSL3SignType signKeyType; 775 SSL3SignType signKeyType;
765 /* For export cipher suites: 776 /* For export cipher suites:
766 * is_limited identifies a suite as having a limit on the key size. 777 * is_limited identifies a suite as having a limit on the key size.
767 * key_size_limit provides the corresponding limit. */ 778 * key_size_limit provides the corresponding limit. */
768 PRBool is_limited; 779 PRBool is_limited;
769 int key_size_limit; 780 unsigned int key_size_limit;
770 PRBool tls_keygen; 781 PRBool tls_keygen;
771 /* True if the key exchange for the suite can be ephemeral. Or to be more 782 /* True if the key exchange for the suite is ephemeral. Or to be more
772 * precise: true if the ServerKeyExchange message is required. */ 783 * precise: true if the ServerKeyExchange message is always required. */
773 PRBool ephemeral; 784 PRBool ephemeral;
774 } ssl3KEADef; 785 } ssl3KEADef;
775 786
776 /* 787 /*
777 ** There are tables of these, all const. 788 ** There are tables of these, all const.
778 */ 789 */
779 struct ssl3BulkCipherDefStr { 790 struct ssl3BulkCipherDefStr {
780 SSL3BulkCipher cipher; 791 SSL3BulkCipher cipher;
781 SSLCipherAlgorithm calg; 792 SSLCipherAlgorithm calg;
782 int key_size; 793 int key_size;
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 959
949 PRBool authCertificatePending; 960 PRBool authCertificatePending;
950 /* Which function should SSL_RestartHandshake* call if we're blocked? 961 /* Which function should SSL_RestartHandshake* call if we're blocked?
951 * One of NULL, ssl3_SendClientSecondRound, ssl3_FinishHandshake, 962 * One of NULL, ssl3_SendClientSecondRound, ssl3_FinishHandshake,
952 * or ssl3_AlwaysFail */ 963 * or ssl3_AlwaysFail */
953 sslRestartTarget restartTarget; 964 sslRestartTarget restartTarget;
954 /* Shared state between ssl3_HandleFinished and ssl3_FinishHandshake */ 965 /* Shared state between ssl3_HandleFinished and ssl3_FinishHandshake */
955 PRBool cacheSID; 966 PRBool cacheSID;
956 967
957 PRBool canFalseStart; /* Can/did we False Start */ 968 PRBool canFalseStart; /* Can/did we False Start */
969 /* Which preliminaryinfo values have been set. */
970 PRUint32 preliminaryInfo;
958 971
959 /* clientSigAndHash contains the contents of the signature_algorithms 972 /* clientSigAndHash contains the contents of the signature_algorithms
960 * extension (if any) from the client. This is only valid for TLS 1.2 973 * extension (if any) from the client. This is only valid for TLS 1.2
961 * or later. */ 974 * or later. */
962 SSL3SignatureAndHashAlgorithm *clientSigAndHash; 975 SSLSignatureAndHashAlg *clientSigAndHash;
963 unsigned int numClientSigAndHash; 976 unsigned int numClientSigAndHash;
964 977
965 /* This group of values is used for DTLS */ 978 /* This group of values is used for DTLS */
966 PRUint16 sendMessageSeq; /* The sending message sequence 979 PRUint16 sendMessageSeq; /* The sending message sequence
967 * number */ 980 * number */
968 PRCList lastMessageFlight; /* The last message flight we 981 PRCList lastMessageFlight; /* The last message flight we
969 * sent */ 982 * sent */
970 PRUint16 maxMessageSent; /* The largest message we sent */ 983 PRUint16 maxMessageSent; /* The largest message we sent */
971 PRUint16 recvMessageSeq; /* The receiving message sequence 984 PRUint16 recvMessageSeq; /* The receiving message sequence
972 * number */ 985 * number */
973 sslBuffer recvdFragments; /* The fragments we have received in 986 sslBuffer recvdFragments; /* The fragments we have received in
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 SECItem nextProto; 1050 SECItem nextProto;
1038 SSLNextProtoState nextProtoState; 1051 SSLNextProtoState nextProtoState;
1039 1052
1040 PRUint16 mtu; /* Our estimate of the MTU */ 1053 PRUint16 mtu; /* Our estimate of the MTU */
1041 1054
1042 /* DTLS-SRTP cipher suite preferences (if any) */ 1055 /* DTLS-SRTP cipher suite preferences (if any) */
1043 PRUint16 dtlsSRTPCiphers[MAX_DTLS_SRTP_CIPHER_SUITES]; 1056 PRUint16 dtlsSRTPCiphers[MAX_DTLS_SRTP_CIPHER_SUITES];
1044 PRUint16 dtlsSRTPCipherCount; 1057 PRUint16 dtlsSRTPCipherCount;
1045 PRUint16 dtlsSRTPCipherSuite; /* 0 if not selected */ 1058 PRUint16 dtlsSRTPCipherSuite; /* 0 if not selected */
1046 PRBool fatalAlertSent; 1059 PRBool fatalAlertSent;
1060 PRUint16 numDHEGroups; /* used by server */
1061 SSLDHEGroupType * dheGroups; /* used by server */
1062 PRBool dheWeakGroupEnabled; /* used by server */
1063
1064 /* TLS 1.2 introduces separate signature algorithm negotiation.
1065 * This is our preference order. */
1066 SSLSignatureAndHashAlg signatureAlgorithms[MAX_SIGNATURE_ALGORITHMS];
1067 unsigned int signatureAlgorithmCount;
1047 }; 1068 };
1048 1069
1049 #define DTLS_MAX_MTU 1500 /* Ethernet MTU but without subtracting the 1070 #define DTLS_MAX_MTU 1500U /* Ethernet MTU but without subtracting the
1050 * headers, so slightly larger than expected */ 1071 * headers, so slightly larger than expected */
1051 #define IS_DTLS(ss) (ss->protocolVariant == ssl_variant_datagram) 1072 #define IS_DTLS(ss) (ss->protocolVariant == ssl_variant_datagram)
1052 1073
1053 typedef struct { 1074 typedef struct {
1054 SSL3ContentType type; 1075 SSL3ContentType type;
1055 SSL3ProtocolVersion version; 1076 SSL3ProtocolVersion version;
1056 SSL3SequenceNumber seq_num; /* DTLS only */ 1077 SSL3SequenceNumber seq_num; /* DTLS only */
1057 sslBuffer * buf; 1078 sslBuffer * buf;
1058 } SSL3Ciphertext; 1079 } SSL3Ciphertext;
1059 1080
1060 struct ssl3KeyPairStr { 1081 struct ssl3KeyPairStr {
1061 SECKEYPrivateKey * privKey; 1082 SECKEYPrivateKey * privKey;
1062 SECKEYPublicKey * pubKey; 1083 SECKEYPublicKey * pubKey;
1063 PRInt32 refCount; /* use PR_Atomic calls for this. */ 1084 PRInt32 refCount; /* use PR_Atomic calls for this. */
1064 }; 1085 };
1065 1086
1087 struct ssl3DHParamsStr {
1088 SECItem prime; /* p */
1089 SECItem base; /* g */
1090 };
1091
1066 typedef struct SSLWrappedSymWrappingKeyStr { 1092 typedef struct SSLWrappedSymWrappingKeyStr {
1067 SSL3Opaque wrappedSymmetricWrappingkey[512]; 1093 SSL3Opaque wrappedSymmetricWrappingkey[512];
1068 CK_MECHANISM_TYPE symWrapMechanism; 1094 CK_MECHANISM_TYPE symWrapMechanism;
1069 /* unwrapped symmetric wrapping key uses this mechanism */ 1095 /* unwrapped symmetric wrapping key uses this mechanism */
1070 CK_MECHANISM_TYPE asymWrapMechanism; 1096 CK_MECHANISM_TYPE asymWrapMechanism;
1071 /* mechanism used to wrap the SymmetricWrappingKey using 1097 /* mechanism used to wrap the SymmetricWrappingKey using
1072 * server's public and/or private keys. */ 1098 * server's public and/or private keys. */
1073 SSL3KEAType exchKeyType; /* type of keys used to wrap SymWrapKey*/ 1099 SSL3KEAType exchKeyType; /* type of keys used to wrap SymWrapKey*/
1074 PRInt32 symWrapMechIndex; 1100 PRInt32 symWrapMechIndex;
1075 PRUint16 wrappedSymKeyLen; 1101 PRUint16 wrappedSymKeyLen;
(...skipping 10 matching lines...) Expand all
1086 PRUint32 keaKeyBits; 1112 PRUint32 keaKeyBits;
1087 /* 1113 /*
1088 * exchKeyType and msWrapMech contain meaningful values only if 1114 * exchKeyType and msWrapMech contain meaningful values only if
1089 * ms_is_wrapped is true. 1115 * ms_is_wrapped is true.
1090 */ 1116 */
1091 PRUint8 ms_is_wrapped; 1117 PRUint8 ms_is_wrapped;
1092 SSLKEAType exchKeyType; /* XXX(wtc): same as keaType above? */ 1118 SSLKEAType exchKeyType; /* XXX(wtc): same as keaType above? */
1093 CK_MECHANISM_TYPE msWrapMech; 1119 CK_MECHANISM_TYPE msWrapMech;
1094 PRUint16 ms_length; 1120 PRUint16 ms_length;
1095 SSL3Opaque master_secret[48]; 1121 SSL3Opaque master_secret[48];
1122 PRBool extendedMasterSecretUsed;
1096 ClientIdentity client_identity; 1123 ClientIdentity client_identity;
1097 SECItem peer_cert; 1124 SECItem peer_cert;
1098 PRUint32 timestamp; 1125 PRUint32 timestamp;
1099 SECItem srvName; /* negotiated server name */ 1126 SECItem srvName; /* negotiated server name */
1100 } SessionTicket; 1127 } SessionTicket;
1101 1128
1102 /* 1129 /*
1103 * SSL2 buffers used in SSL3. 1130 * SSL2 buffers used in SSL3.
1104 * writeBuf in the SecurityInfo maintained by sslsecur.c is used 1131 * writeBuf in the SecurityInfo maintained by sslsecur.c is used
1105 * to hold the data just about to be passed to the kernel 1132 * to hold the data just about to be passed to the kernel
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1268 unsigned char * cipherSpecs; 1295 unsigned char * cipherSpecs;
1269 unsigned int sizeCipherSpecs; 1296 unsigned int sizeCipherSpecs;
1270 const unsigned char * preferredCipher; 1297 const unsigned char * preferredCipher;
1271 1298
1272 /* TLS ClientCertificateTypes requested during HandleCertificateRequest. */ 1299 /* TLS ClientCertificateTypes requested during HandleCertificateRequest. */
1273 /* Will be NULL at all other times. */ 1300 /* Will be NULL at all other times. */
1274 const SECItem *requestedCertTypes; 1301 const SECItem *requestedCertTypes;
1275 1302
1276 ssl3KeyPair * stepDownKeyPair; /* RSA step down keys */ 1303 ssl3KeyPair * stepDownKeyPair; /* RSA step down keys */
1277 1304
1305 const ssl3DHParams *dheParams; /* DHE param */
1306 ssl3KeyPair * dheKeyPair; /* DHE keys */
1307
1278 /* Callbacks */ 1308 /* Callbacks */
1279 SSLAuthCertificate authCertificate; 1309 SSLAuthCertificate authCertificate;
1280 void *authCertificateArg; 1310 void *authCertificateArg;
1281 SSLGetClientAuthData getClientAuthData; 1311 SSLGetClientAuthData getClientAuthData;
1282 void *getClientAuthDataArg; 1312 void *getClientAuthDataArg;
1283 #ifdef NSS_PLATFORM_CLIENT_AUTH 1313 #ifdef NSS_PLATFORM_CLIENT_AUTH
1284 SSLGetPlatformClientAuthData getPlatformClientAuthData; 1314 SSLGetPlatformClientAuthData getPlatformClientAuthData;
1285 void *getPlatformClientAuthDataArg; 1315 void *getPlatformClientAuthDataArg;
1286 #endif /* NSS_PLATFORM_CLIENT_AUTH */ 1316 #endif /* NSS_PLATFORM_CLIENT_AUTH */
1287 SSLSNISocketConfig sniSocketConfig; 1317 SSLSNISocketConfig sniSocketConfig;
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
1627 /* Rename this macro SSL_ALL_VERSIONS_DISABLED when SSL 2.0 is removed. */ 1657 /* Rename this macro SSL_ALL_VERSIONS_DISABLED when SSL 2.0 is removed. */
1628 #define SSL3_ALL_VERSIONS_DISABLED(vrange) \ 1658 #define SSL3_ALL_VERSIONS_DISABLED(vrange) \
1629 ((vrange)->min == SSL_LIBRARY_VERSION_NONE) 1659 ((vrange)->min == SSL_LIBRARY_VERSION_NONE)
1630 1660
1631 extern PRBool ssl3_VersionIsSupported(SSLProtocolVariant protocolVariant, 1661 extern PRBool ssl3_VersionIsSupported(SSLProtocolVariant protocolVariant,
1632 SSL3ProtocolVersion version); 1662 SSL3ProtocolVersion version);
1633 1663
1634 extern SECStatus ssl3_KeyAndMacDeriveBypass(ssl3CipherSpec * pwSpec, 1664 extern SECStatus ssl3_KeyAndMacDeriveBypass(ssl3CipherSpec * pwSpec,
1635 const unsigned char * cr, const unsigned char * sr, 1665 const unsigned char * cr, const unsigned char * sr,
1636 PRBool isTLS, PRBool isExport); 1666 PRBool isTLS, PRBool isExport);
1637 extern SECStatus ssl3_MasterKeyDeriveBypass( ssl3CipherSpec * pwSpec, 1667 extern SECStatus ssl3_MasterSecretDeriveBypass( ssl3CipherSpec * pwSpec,
1638 const unsigned char * cr, const unsigned char * sr, 1668 const unsigned char * cr, const unsigned char * sr,
1639 const SECItem * pms, PRBool isTLS, PRBool isRSA); 1669 const SECItem * pms, PRBool isTLS, PRBool isRSA);
1640 1670
1641 /* These functions are called from secnav, even though they're "private". */ 1671 /* These functions are called from secnav, even though they're "private". */
1642 1672
1643 extern int ssl2_SendErrorMessage(struct sslSocketStr *ss, int error); 1673 extern int ssl2_SendErrorMessage(struct sslSocketStr *ss, int error);
1644 extern sslSocket *ssl_FindSocket(PRFileDesc *fd); 1674 extern sslSocket *ssl_FindSocket(PRFileDesc *fd);
1645 extern void ssl_FreeSocket(struct sslSocketStr *ssl); 1675 extern void ssl_FreeSocket(struct sslSocketStr *ssl);
1646 extern SECStatus SSL3_SendAlert(sslSocket *ss, SSL3AlertLevel level, 1676 extern SECStatus SSL3_SendAlert(sslSocket *ss, SSL3AlertLevel level,
1647 SSL3AlertDescription desc); 1677 SSL3AlertDescription desc);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1681 int ssl3_GatherAppDataRecord(sslSocket *ss, int flags); 1711 int ssl3_GatherAppDataRecord(sslSocket *ss, int flags);
1682 int ssl3_GatherCompleteHandshake(sslSocket *ss, int flags); 1712 int ssl3_GatherCompleteHandshake(sslSocket *ss, int flags);
1683 /* 1713 /*
1684 * When talking to export clients or using export cipher suites, servers 1714 * When talking to export clients or using export cipher suites, servers
1685 * with public RSA keys larger than 512 bits need to use a 512-bit public 1715 * with public RSA keys larger than 512 bits need to use a 512-bit public
1686 * key, signed by the larger key. The smaller key is a "step down" key. 1716 * key, signed by the larger key. The smaller key is a "step down" key.
1687 * Generate that key pair and keep it around. 1717 * Generate that key pair and keep it around.
1688 */ 1718 */
1689 extern SECStatus ssl3_CreateRSAStepDownKeys(sslSocket *ss); 1719 extern SECStatus ssl3_CreateRSAStepDownKeys(sslSocket *ss);
1690 1720
1721 extern SECStatus ssl3_SelectDHParams(sslSocket *ss);
1722
1691 #ifndef NSS_DISABLE_ECC 1723 #ifndef NSS_DISABLE_ECC
1692 extern void ssl3_FilterECCipherSuitesByServerCerts(sslSocket *ss); 1724 extern void ssl3_FilterECCipherSuitesByServerCerts(sslSocket *ss);
1693 extern PRBool ssl3_IsECCEnabled(sslSocket *ss); 1725 extern PRBool ssl3_IsECCEnabled(sslSocket *ss);
1694 extern SECStatus ssl3_DisableECCSuites(sslSocket * ss, 1726 extern SECStatus ssl3_DisableECCSuites(sslSocket * ss,
1695 const ssl3CipherSuite * suite); 1727 const ssl3CipherSuite * suite);
1696 extern PRUint32 ssl3_GetSupportedECCurveMask(sslSocket *ss); 1728 extern PRUint32 ssl3_GetSupportedECCurveMask(sslSocket *ss);
1697 1729
1698 1730
1699 /* Macro for finding a curve equivalent in strength to RSA key's */ 1731 /* Macro for finding a curve equivalent in strength to RSA key's */
1700 #define SSL_RSASTRENGTH_TO_ECSTRENGTH(s) \ 1732 #define SSL_RSASTRENGTH_TO_ECSTRENGTH(s) \
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1783 #ifndef NSS_DISABLE_ECC 1815 #ifndef NSS_DISABLE_ECC
1784 /* ECDH functions */ 1816 /* ECDH functions */
1785 extern SECStatus ssl3_SendECDHClientKeyExchange(sslSocket * ss, 1817 extern SECStatus ssl3_SendECDHClientKeyExchange(sslSocket * ss,
1786 SECKEYPublicKey * svrPubKey); 1818 SECKEYPublicKey * svrPubKey);
1787 extern SECStatus ssl3_HandleECDHServerKeyExchange(sslSocket *ss, 1819 extern SECStatus ssl3_HandleECDHServerKeyExchange(sslSocket *ss,
1788 SSL3Opaque *b, PRUint32 length); 1820 SSL3Opaque *b, PRUint32 length);
1789 extern SECStatus ssl3_HandleECDHClientKeyExchange(sslSocket *ss, 1821 extern SECStatus ssl3_HandleECDHClientKeyExchange(sslSocket *ss,
1790 SSL3Opaque *b, PRUint32 length, 1822 SSL3Opaque *b, PRUint32 length,
1791 SECKEYPublicKey *srvrPubKey, 1823 SECKEYPublicKey *srvrPubKey,
1792 SECKEYPrivateKey *srvrPrivKey); 1824 SECKEYPrivateKey *srvrPrivKey);
1793 extern SECStatus ssl3_SendECDHServerKeyExchange(sslSocket *ss, 1825 extern SECStatus ssl3_SendECDHServerKeyExchange(
1794 » » » const SSL3SignatureAndHashAlgorithm *sigAndHash); 1826 sslSocket *ss, const SSLSignatureAndHashAlg *sigAndHash);
1795 #endif 1827 #endif
1796 1828
1797 extern SECStatus ssl3_ComputeCommonKeyHash(SECOidTag hashAlg, 1829 extern SECStatus ssl3_ComputeCommonKeyHash(SSLHashType hashAlg,
1798 PRUint8 * hashBuf, 1830 PRUint8 * hashBuf,
1799 unsigned int bufLen, SSL3Hashes *hashes, 1831 unsigned int bufLen, SSL3Hashes *hashes,
1800 PRBool bypassPKCS11); 1832 PRBool bypassPKCS11);
1801 extern void ssl3_DestroyCipherSpec(ssl3CipherSpec *spec, PRBool freeSrvName); 1833 extern void ssl3_DestroyCipherSpec(ssl3CipherSpec *spec, PRBool freeSrvName);
1802 extern SECStatus ssl3_InitPendingCipherSpec(sslSocket *ss, PK11SymKey *pms); 1834 extern SECStatus ssl3_InitPendingCipherSpec(sslSocket *ss, PK11SymKey *pms);
1803 extern SECStatus ssl3_AppendHandshake(sslSocket *ss, const void *void_src, 1835 extern SECStatus ssl3_AppendHandshake(sslSocket *ss, const void *void_src,
1804 PRInt32 bytes); 1836 PRInt32 bytes);
1805 extern SECStatus ssl3_AppendHandshakeHeader(sslSocket *ss, 1837 extern SECStatus ssl3_AppendHandshakeHeader(sslSocket *ss,
1806 SSL3HandshakeType t, PRUint32 length); 1838 SSL3HandshakeType t, PRUint32 length);
1807 extern SECStatus ssl3_AppendHandshakeNumber(sslSocket *ss, PRInt32 num, 1839 extern SECStatus ssl3_AppendHandshakeNumber(sslSocket *ss, PRInt32 num,
1808 PRInt32 lenSize); 1840 PRInt32 lenSize);
1809 extern SECStatus ssl3_AppendHandshakeVariable( sslSocket *ss, 1841 extern SECStatus ssl3_AppendHandshakeVariable( sslSocket *ss,
1810 const SSL3Opaque *src, PRInt32 bytes, PRInt32 lenSize); 1842 const SSL3Opaque *src, PRInt32 bytes, PRInt32 lenSize);
1811 extern SECStatus ssl3_AppendSignatureAndHashAlgorithm(sslSocket *ss, 1843 extern SECStatus ssl3_AppendSignatureAndHashAlgorithm(
1812 » » » const SSL3SignatureAndHashAlgorithm* sigAndHash); 1844 sslSocket *ss, const SSLSignatureAndHashAlg* sigAndHash);
1813 extern SECStatus ssl3_ConsumeHandshake(sslSocket *ss, void *v, PRInt32 bytes, 1845 extern SECStatus ssl3_ConsumeHandshake(sslSocket *ss, void *v, PRInt32 bytes,
1814 SSL3Opaque **b, PRUint32 *length); 1846 SSL3Opaque **b, PRUint32 *length);
1815 extern PRInt32 ssl3_ConsumeHandshakeNumber(sslSocket *ss, PRInt32 bytes, 1847 extern PRInt32 ssl3_ConsumeHandshakeNumber(sslSocket *ss, PRInt32 bytes,
1816 SSL3Opaque **b, PRUint32 *length); 1848 SSL3Opaque **b, PRUint32 *length);
1817 extern SECStatus ssl3_ConsumeHandshakeVariable(sslSocket *ss, SECItem *i, 1849 extern SECStatus ssl3_ConsumeHandshakeVariable(sslSocket *ss, SECItem *i,
1818 PRInt32 bytes, SSL3Opaque **b, PRUint32 *length); 1850 PRInt32 bytes, SSL3Opaque **b, PRUint32 *length);
1819 extern SECOidTag ssl3_TLSHashAlgorithmToOID(int hashFunc); 1851 extern PRBool ssl3_IsSupportedSignatureAlgorithm(
1852 const SSLSignatureAndHashAlg *alg);
1820 extern SECStatus ssl3_CheckSignatureAndHashAlgorithmConsistency( 1853 extern SECStatus ssl3_CheckSignatureAndHashAlgorithmConsistency(
1821 » » » const SSL3SignatureAndHashAlgorithm *sigAndHash, 1854 sslSocket *ss, const SSLSignatureAndHashAlg *sigAndHash,
1822 » » » CERTCertificate* cert); 1855 CERTCertificate* cert);
1823 extern SECStatus ssl3_ConsumeSignatureAndHashAlgorithm(sslSocket *ss, 1856 extern SECStatus ssl3_ConsumeSignatureAndHashAlgorithm(
1824 » » » SSL3Opaque **b, PRUint32 *length, 1857 sslSocket *ss, SSL3Opaque **b, PRUint32 *length,
1825 » » » SSL3SignatureAndHashAlgorithm *out); 1858 SSLSignatureAndHashAlg *out);
1826 extern SECStatus ssl3_SignHashes(SSL3Hashes *hash, SECKEYPrivateKey *key, 1859 extern SECStatus ssl3_SignHashes(SSL3Hashes *hash, SECKEYPrivateKey *key,
1827 SECItem *buf, PRBool isTLS); 1860 SECItem *buf, PRBool isTLS);
1828 extern SECStatus ssl3_VerifySignedHashes(SSL3Hashes *hash, 1861 extern SECStatus ssl3_VerifySignedHashes(SSL3Hashes *hash,
1829 CERTCertificate *cert, SECItem *buf, PRBool isTLS, 1862 CERTCertificate *cert, SECItem *buf, PRBool isTLS,
1830 void *pwArg); 1863 void *pwArg);
1831 extern SECStatus ssl3_CacheWrappedMasterSecret(sslSocket *ss, 1864 extern SECStatus ssl3_CacheWrappedMasterSecret(sslSocket *ss,
1832 sslSessionID *sid, ssl3CipherSpec *spec, 1865 sslSessionID *sid, ssl3CipherSpec *spec,
1833 SSL3KEAType effectiveExchKeyType); 1866 SSL3KEAType effectiveExchKeyType);
1834 1867
1835 /* Functions that handle ClientHello and ServerHello extensions. */ 1868 /* Functions that handle ClientHello and ServerHello extensions. */
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1883 extern SECStatus ssl3_SendNewSessionTicket(sslSocket *ss); 1916 extern SECStatus ssl3_SendNewSessionTicket(sslSocket *ss);
1884 extern PRBool ssl_GetSessionTicketKeys(unsigned char *keyName, 1917 extern PRBool ssl_GetSessionTicketKeys(unsigned char *keyName,
1885 unsigned char *encKey, unsigned char *macKey); 1918 unsigned char *encKey, unsigned char *macKey);
1886 extern PRBool ssl_GetSessionTicketKeysPKCS11(SECKEYPrivateKey *svrPrivKey, 1919 extern PRBool ssl_GetSessionTicketKeysPKCS11(SECKEYPrivateKey *svrPrivKey,
1887 SECKEYPublicKey *svrPubKey, void *pwArg, 1920 SECKEYPublicKey *svrPubKey, void *pwArg,
1888 unsigned char *keyName, PK11SymKey **aesKey, 1921 unsigned char *keyName, PK11SymKey **aesKey,
1889 PK11SymKey **macKey); 1922 PK11SymKey **macKey);
1890 1923
1891 /* Tell clients to consider tickets valid for this long. */ 1924 /* Tell clients to consider tickets valid for this long. */
1892 #define TLS_EX_SESS_TICKET_LIFETIME_HINT (2 * 24 * 60 * 60) /* 2 days */ 1925 #define TLS_EX_SESS_TICKET_LIFETIME_HINT (2 * 24 * 60 * 60) /* 2 days */
1893 #define TLS_EX_SESS_TICKET_VERSION (0x0100) 1926 #define TLS_EX_SESS_TICKET_VERSION (0x0101)
1894 1927
1895 extern SECStatus ssl3_ValidateNextProtoNego(const unsigned char* data, 1928 extern SECStatus ssl3_ValidateNextProtoNego(const unsigned char* data,
1896 unsigned int length); 1929 unsigned int length);
1897 1930
1898 extern SECStatus ssl3_GetTLSUniqueChannelBinding(sslSocket *ss, 1931 extern SECStatus ssl3_GetTLSUniqueChannelBinding(sslSocket *ss,
1899 unsigned char *out, 1932 unsigned char *out,
1900 unsigned int *outLen, 1933 unsigned int *outLen,
1901 unsigned int outLenMax); 1934 unsigned int outLenMax);
1902 1935
1903 /* Construct a new NSPR socket for the app to use */ 1936 /* Construct a new NSPR socket for the app to use */
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
2017 2050
2018 SECStatus SSL_DisableDefaultExportCipherSuites(void); 2051 SECStatus SSL_DisableDefaultExportCipherSuites(void);
2019 SECStatus SSL_DisableExportCipherSuites(PRFileDesc * fd); 2052 SECStatus SSL_DisableExportCipherSuites(PRFileDesc * fd);
2020 PRBool SSL_IsExportCipherSuite(PRUint16 cipherSuite); 2053 PRBool SSL_IsExportCipherSuite(PRUint16 cipherSuite);
2021 2054
2022 extern SECStatus 2055 extern SECStatus
2023 ssl3_TLSPRFWithMasterSecret(ssl3CipherSpec *spec, 2056 ssl3_TLSPRFWithMasterSecret(ssl3CipherSpec *spec,
2024 const char *label, unsigned int labelLen, 2057 const char *label, unsigned int labelLen,
2025 const unsigned char *val, unsigned int valLen, 2058 const unsigned char *val, unsigned int valLen,
2026 unsigned char *out, unsigned int outLen); 2059 unsigned char *out, unsigned int outLen);
2060 extern SECOidTag
2061 ssl3_TLSHashAlgorithmToOID(SSLHashType hashFunc);
2027 2062
2028 #ifdef TRACE 2063 #ifdef TRACE
2029 #define SSL_TRACE(msg) ssl_Trace msg 2064 #define SSL_TRACE(msg) ssl_Trace msg
2030 #else 2065 #else
2031 #define SSL_TRACE(msg) 2066 #define SSL_TRACE(msg)
2032 #endif 2067 #endif
2033 2068
2034 void ssl_Trace(const char *format, ...); 2069 void ssl_Trace(const char *format, ...);
2035 2070
2036 SEC_END_PROTOS 2071 SEC_END_PROTOS
2037 2072
2038 #if defined(XP_UNIX) || defined(XP_OS2) || defined(XP_BEOS) 2073 #if defined(XP_UNIX) || defined(XP_OS2) || defined(XP_BEOS)
2039 #define SSL_GETPID getpid 2074 #define SSL_GETPID getpid
2040 #elif defined(WIN32) 2075 #elif defined(WIN32)
2041 extern int __cdecl _getpid(void); 2076 extern int __cdecl _getpid(void);
2042 #define SSL_GETPID _getpid 2077 #define SSL_GETPID _getpid
2043 #else 2078 #else
2044 #define SSL_GETPID() 0 2079 #define SSL_GETPID() 0
2045 #endif 2080 #endif
2046 2081
2047 #endif /* __sslimpl_h_ */ 2082 #endif /* __sslimpl_h_ */
OLDNEW
« no previous file with comments | « net/third_party/nss/ssl/sslerr.h ('k') | net/third_party/nss/ssl/sslinfo.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698