OLD | NEW |
1 /* | 1 /* |
2 * This file is PRIVATE to SSL and should be the first thing included by | 2 * This file is PRIVATE to SSL and should be the first thing included by |
3 * any SSL implementation file. | 3 * any SSL implementation file. |
4 * | 4 * |
5 * ***** BEGIN LICENSE BLOCK ***** | 5 * ***** BEGIN LICENSE BLOCK ***** |
6 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 | 6 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
7 * | 7 * |
8 * The contents of this file are subject to the Mozilla Public License Version | 8 * The contents of this file are subject to the Mozilla Public License Version |
9 * 1.1 (the "License"); you may not use this file except in compliance with | 9 * 1.1 (the "License"); you may not use this file except in compliance with |
10 * the License. You may obtain a copy of the License at | 10 * the License. You may obtain a copy of the License at |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 unsigned int detectRollBack : 1; /* 14 */ | 342 unsigned int detectRollBack : 1; /* 14 */ |
343 unsigned int noStepDown : 1; /* 15 */ | 343 unsigned int noStepDown : 1; /* 15 */ |
344 unsigned int bypassPKCS11 : 1; /* 16 */ | 344 unsigned int bypassPKCS11 : 1; /* 16 */ |
345 unsigned int noLocks : 1; /* 17 */ | 345 unsigned int noLocks : 1; /* 17 */ |
346 unsigned int enableSessionTickets : 1; /* 18 */ | 346 unsigned int enableSessionTickets : 1; /* 18 */ |
347 unsigned int enableDeflate : 1; /* 19 */ | 347 unsigned int enableDeflate : 1; /* 19 */ |
348 unsigned int enableRenegotiation : 2; /* 20-21 */ | 348 unsigned int enableRenegotiation : 2; /* 20-21 */ |
349 unsigned int requireSafeNegotiation : 1; /* 22 */ | 349 unsigned int requireSafeNegotiation : 1; /* 22 */ |
350 unsigned int enableFalseStart : 1; /* 23 */ | 350 unsigned int enableFalseStart : 1; /* 23 */ |
351 unsigned int enableOCSPStapling : 1; /* 24 */ | 351 unsigned int enableOCSPStapling : 1; /* 24 */ |
| 352 unsigned int enableCachedInfo : 1; /* 25 */ |
352 } sslOptions; | 353 } sslOptions; |
353 | 354 |
354 typedef enum { sslHandshakingUndetermined = 0, | 355 typedef enum { sslHandshakingUndetermined = 0, |
355 sslHandshakingAsClient, | 356 sslHandshakingAsClient, |
356 sslHandshakingAsServer | 357 sslHandshakingAsServer |
357 } sslHandshakingType; | 358 } sslHandshakingType; |
358 | 359 |
359 typedef struct sslServerCertsStr { | 360 typedef struct sslServerCertsStr { |
360 /* Configuration state for server sockets */ | 361 /* Configuration state for server sockets */ |
361 CERTCertificate * serverCert; | 362 CERTCertificate * serverCert; |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
766 PRBool emptySessionTicket; | 767 PRBool emptySessionTicket; |
767 | 768 |
768 /* SNI Extension related data | 769 /* SNI Extension related data |
769 * Names data is not coppied from the input buffer. It can not be | 770 * Names data is not coppied from the input buffer. It can not be |
770 * used outside the scope where input buffer is defined and that | 771 * used outside the scope where input buffer is defined and that |
771 * is beyond ssl3_HandleClientHello function. */ | 772 * is beyond ssl3_HandleClientHello function. */ |
772 SECItem *sniNameArr; | 773 SECItem *sniNameArr; |
773 PRUint32 sniNameArrSize; | 774 PRUint32 sniNameArrSize; |
774 }; | 775 }; |
775 | 776 |
| 777 typedef enum { |
| 778 cached_info_certificate_chain = 1, |
| 779 cached_info_trusted_cas = 2 |
| 780 } TLSCachedInfoType; |
| 781 |
776 /* | 782 /* |
777 ** This is the "hs" member of the "ssl3" struct. | 783 ** This is the "hs" member of the "ssl3" struct. |
778 ** This entire struct is protected by ssl3HandshakeLock | 784 ** This entire struct is protected by ssl3HandshakeLock |
779 */ | 785 */ |
780 typedef struct SSL3HandshakeStateStr { | 786 typedef struct SSL3HandshakeStateStr { |
781 SSL3Random server_random; | 787 SSL3Random server_random; |
782 SSL3Random client_random; | 788 SSL3Random client_random; |
783 SSL3WaitState ws; | 789 SSL3WaitState ws; |
784 PRUint64 md5_cx[MAX_MAC_CONTEXT_LLONGS]; | 790 PRUint64 md5_cx[MAX_MAC_CONTEXT_LLONGS]; |
785 PRUint64 sha_cx[MAX_MAC_CONTEXT_LLONGS]; | 791 PRUint64 sha_cx[MAX_MAC_CONTEXT_LLONGS]; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
847 ssl3CipherSpec * pwSpec; /* pending write spec. */ | 853 ssl3CipherSpec * pwSpec; /* pending write spec. */ |
848 | 854 |
849 CERTCertificate * clientCertificate; /* used by client */ | 855 CERTCertificate * clientCertificate; /* used by client */ |
850 SECKEYPrivateKey * clientPrivateKey; /* used by client */ | 856 SECKEYPrivateKey * clientPrivateKey; /* used by client */ |
851 #ifdef NSS_PLATFORM_CLIENT_AUTH | 857 #ifdef NSS_PLATFORM_CLIENT_AUTH |
852 PlatformKey platformClientKey; /* used by client */ | 858 PlatformKey platformClientKey; /* used by client */ |
853 #endif /* NSS_PLATFORM_CLIENT_AUTH */ | 859 #endif /* NSS_PLATFORM_CLIENT_AUTH */ |
854 CERTCertificateList *clientCertChain; /* used by client */ | 860 CERTCertificateList *clientCertChain; /* used by client */ |
855 PRBool sendEmptyCert; /* used by client */ | 861 PRBool sendEmptyCert; /* used by client */ |
856 | 862 |
| 863 /* TLS Cached Info Extension */ |
| 864 CERTCertificate ** predictedCertChain; |
| 865 /* An array terminated with a NULL. */ |
| 866 PRUint8 certChainDigest[8]; |
| 867 /* Used in cached info extension. Stored in network |
| 868 * byte order. */ |
| 869 PRBool digestReceived; |
| 870 |
857 int policy; | 871 int policy; |
858 /* This says what cipher suites we can do, and should | 872 /* This says what cipher suites we can do, and should |
859 * be either SSL_ALLOWED or SSL_RESTRICTED | 873 * be either SSL_ALLOWED or SSL_RESTRICTED |
860 */ | 874 */ |
861 PRArenaPool * peerCertArena; | 875 PRArenaPool * peerCertArena; |
862 /* These are used to keep track of the peer CA */ | 876 /* These are used to keep track of the peer CA */ |
863 void * peerCertChain; | 877 void * peerCertChain; |
864 /* chain while we are trying to validate it. */ | 878 /* chain while we are trying to validate it. */ |
865 CERTDistNames * ca_list; | 879 CERTDistNames * ca_list; |
866 /* used by server. trusted CAs for this socket. */ | 880 /* used by server. trusted CAs for this socket. */ |
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1543 extern SECStatus ssl3_HandleServerNameXtn(sslSocket * ss, | 1557 extern SECStatus ssl3_HandleServerNameXtn(sslSocket * ss, |
1544 PRUint16 ex_type, SECItem *data); | 1558 PRUint16 ex_type, SECItem *data); |
1545 extern SECStatus ssl3_HandleSupportedCurvesXtn(sslSocket * ss, | 1559 extern SECStatus ssl3_HandleSupportedCurvesXtn(sslSocket * ss, |
1546 PRUint16 ex_type, SECItem *data); | 1560 PRUint16 ex_type, SECItem *data); |
1547 extern SECStatus ssl3_HandleSupportedPointFormatsXtn(sslSocket * ss, | 1561 extern SECStatus ssl3_HandleSupportedPointFormatsXtn(sslSocket * ss, |
1548 PRUint16 ex_type, SECItem *data); | 1562 PRUint16 ex_type, SECItem *data); |
1549 extern SECStatus ssl3_ClientHandleSessionTicketXtn(sslSocket *ss, | 1563 extern SECStatus ssl3_ClientHandleSessionTicketXtn(sslSocket *ss, |
1550 PRUint16 ex_type, SECItem *data); | 1564 PRUint16 ex_type, SECItem *data); |
1551 extern SECStatus ssl3_ClientHandleNextProtoNegoXtn(sslSocket *ss, | 1565 extern SECStatus ssl3_ClientHandleNextProtoNegoXtn(sslSocket *ss, |
1552 PRUint16 ex_type, SECItem *data); | 1566 PRUint16 ex_type, SECItem *data); |
| 1567 extern SECStatus ssl3_ClientHandleCachedInfoXtn(sslSocket *ss, |
| 1568 PRUint16 ex_type, SECItem *data); |
1553 extern SECStatus ssl3_ClientHandleStatusRequestXtn(sslSocket *ss, | 1569 extern SECStatus ssl3_ClientHandleStatusRequestXtn(sslSocket *ss, |
1554 PRUint16 ex_type, SECItem *data); | 1570 PRUint16 ex_type, SECItem *data); |
1555 extern SECStatus ssl3_ServerHandleSessionTicketXtn(sslSocket *ss, | 1571 extern SECStatus ssl3_ServerHandleSessionTicketXtn(sslSocket *ss, |
1556 PRUint16 ex_type, SECItem *data); | 1572 PRUint16 ex_type, SECItem *data); |
1557 extern SECStatus ssl3_ServerHandleNextProtoNegoXtn(sslSocket *ss, | 1573 extern SECStatus ssl3_ServerHandleNextProtoNegoXtn(sslSocket *ss, |
1558 PRUint16 ex_type, SECItem *data); | 1574 PRUint16 ex_type, SECItem *data); |
1559 | 1575 |
1560 /* ClientHello and ServerHello extension senders. | 1576 /* ClientHello and ServerHello extension senders. |
1561 * Note that not all extension senders are exposed here; only those that | 1577 * Note that not all extension senders are exposed here; only those that |
1562 * that need exposure. | 1578 * that need exposure. |
1563 */ | 1579 */ |
1564 extern PRInt32 ssl3_SendSessionTicketXtn(sslSocket *ss, PRBool append, | 1580 extern PRInt32 ssl3_SendSessionTicketXtn(sslSocket *ss, PRBool append, |
1565 PRUint32 maxBytes); | 1581 PRUint32 maxBytes); |
1566 extern PRInt32 ssl3_ClientSendStatusRequestXtn(sslSocket *ss, PRBool append, | 1582 extern PRInt32 ssl3_ClientSendStatusRequestXtn(sslSocket *ss, PRBool append, |
1567 PRUint32 maxBytes); | 1583 PRUint32 maxBytes); |
1568 | 1584 |
1569 /* ClientHello and ServerHello extension senders. | 1585 /* ClientHello and ServerHello extension senders. |
1570 * The code is in ssl3ext.c. | 1586 * The code is in ssl3ext.c. |
1571 */ | 1587 */ |
1572 extern PRInt32 ssl3_SendServerNameXtn(sslSocket *ss, PRBool append, | 1588 extern PRInt32 ssl3_SendServerNameXtn(sslSocket *ss, PRBool append, |
1573 PRUint32 maxBytes); | 1589 PRUint32 maxBytes); |
| 1590 extern PRInt32 ssl3_ClientSendCachedInfoXtn(sslSocket *ss, PRBool append, |
| 1591 PRUint32 maxBytes); |
1574 | 1592 |
1575 /* Assigns new cert, cert chain and keys to ss->serverCerts | 1593 /* Assigns new cert, cert chain and keys to ss->serverCerts |
1576 * struct. If certChain is NULL, tries to find one. Aborts if | 1594 * struct. If certChain is NULL, tries to find one. Aborts if |
1577 * fails to do so. If cert and keyPair are NULL - unconfigures | 1595 * fails to do so. If cert and keyPair are NULL - unconfigures |
1578 * sslSocket of kea type.*/ | 1596 * sslSocket of kea type.*/ |
1579 extern SECStatus ssl_ConfigSecureServer(sslSocket *ss, CERTCertificate *cert, | 1597 extern SECStatus ssl_ConfigSecureServer(sslSocket *ss, CERTCertificate *cert, |
1580 CERTCertificateList *certChain, | 1598 CERTCertificateList *certChain, |
1581 ssl3KeyPair *keyPair, SSLKEAType kea); | 1599 ssl3KeyPair *keyPair, SSLKEAType kea); |
1582 /* Return key type for the cert */ | 1600 /* Return key type for the cert */ |
1583 extern SSLKEAType ssl_FindCertKEAType(CERTCertificate * cert); | 1601 extern SSLKEAType ssl_FindCertKEAType(CERTCertificate * cert); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1710 #elif defined(_WIN32_WCE) | 1728 #elif defined(_WIN32_WCE) |
1711 #define SSL_GETPID GetCurrentProcessId | 1729 #define SSL_GETPID GetCurrentProcessId |
1712 #elif defined(WIN32) | 1730 #elif defined(WIN32) |
1713 extern int __cdecl _getpid(void); | 1731 extern int __cdecl _getpid(void); |
1714 #define SSL_GETPID _getpid | 1732 #define SSL_GETPID _getpid |
1715 #else | 1733 #else |
1716 #define SSL_GETPID() 0 | 1734 #define SSL_GETPID() 0 |
1717 #endif | 1735 #endif |
1718 | 1736 |
1719 #endif /* __sslimpl_h_ */ | 1737 #endif /* __sslimpl_h_ */ |
OLD | NEW |