| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * This file contains prototypes for the public SSL functions. | |
| 3 * | |
| 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 | |
| 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
| 7 | |
| 8 #ifndef __sslt_h_ | |
| 9 #define __sslt_h_ | |
| 10 | |
| 11 #include "prtypes.h" | |
| 12 | |
| 13 /* SECItemArray is added in NSS 3.15. Define the type if compiling | |
| 14 ** against an older version of NSS. | |
| 15 */ | |
| 16 #include "nssutil.h" | |
| 17 #if NSSUTIL_VMAJOR == 3 && NSSUTIL_VMINOR < 15 | |
| 18 typedef struct SECItemArrayStr SECItemArray; | |
| 19 | |
| 20 struct SECItemArrayStr { | |
| 21 SECItem *items; | |
| 22 unsigned int len; | |
| 23 }; | |
| 24 #endif /* NSSUTIL_VMAJOR == 3 && NSSUTIL_VMINOR < 15 */ | |
| 25 | |
| 26 typedef struct SSL3StatisticsStr { | |
| 27 /* statistics from ssl3_SendClientHello (sch) */ | |
| 28 long sch_sid_cache_hits; | |
| 29 long sch_sid_cache_misses; | |
| 30 long sch_sid_cache_not_ok; | |
| 31 | |
| 32 /* statistics from ssl3_HandleServerHello (hsh) */ | |
| 33 long hsh_sid_cache_hits; | |
| 34 long hsh_sid_cache_misses; | |
| 35 long hsh_sid_cache_not_ok; | |
| 36 | |
| 37 /* statistics from ssl3_HandleClientHello (hch) */ | |
| 38 long hch_sid_cache_hits; | |
| 39 long hch_sid_cache_misses; | |
| 40 long hch_sid_cache_not_ok; | |
| 41 | |
| 42 /* statistics related to stateless resume */ | |
| 43 long sch_sid_stateless_resumes; | |
| 44 long hsh_sid_stateless_resumes; | |
| 45 long hch_sid_stateless_resumes; | |
| 46 long hch_sid_ticket_parse_failures; | |
| 47 } SSL3Statistics; | |
| 48 | |
| 49 /* Key Exchange algorithm values */ | |
| 50 typedef enum { | |
| 51 ssl_kea_null = 0, | |
| 52 ssl_kea_rsa = 1, | |
| 53 ssl_kea_dh = 2, | |
| 54 ssl_kea_fortezza = 3, /* deprecated, now unused */ | |
| 55 ssl_kea_ecdh = 4, | |
| 56 ssl_kea_size /* number of ssl_kea_ algorithms */ | |
| 57 } SSLKEAType; | |
| 58 | |
| 59 /* The following defines are for backwards compatibility. | |
| 60 ** They will be removed in a forthcoming release to reduce namespace pollution. | |
| 61 ** programs that use the kt_ symbols should convert to the ssl_kt_ symbols | |
| 62 ** soon. | |
| 63 */ | |
| 64 #define kt_null ssl_kea_null | |
| 65 #define kt_rsa ssl_kea_rsa | |
| 66 #define kt_dh ssl_kea_dh | |
| 67 #define kt_fortezza ssl_kea_fortezza /* deprecated, now unused */ | |
| 68 #define kt_ecdh ssl_kea_ecdh | |
| 69 #define kt_kea_size ssl_kea_size | |
| 70 | |
| 71 typedef enum { | |
| 72 ssl_sign_null = 0, | |
| 73 ssl_sign_rsa = 1, | |
| 74 ssl_sign_dsa = 2, | |
| 75 ssl_sign_ecdsa = 3 | |
| 76 } SSLSignType; | |
| 77 | |
| 78 typedef enum { | |
| 79 ssl_auth_null = 0, | |
| 80 ssl_auth_rsa = 1, | |
| 81 ssl_auth_dsa = 2, | |
| 82 ssl_auth_kea = 3, | |
| 83 ssl_auth_ecdsa = 4 | |
| 84 } SSLAuthType; | |
| 85 | |
| 86 typedef enum { | |
| 87 ssl_calg_null = 0, | |
| 88 ssl_calg_rc4 = 1, | |
| 89 ssl_calg_rc2 = 2, | |
| 90 ssl_calg_des = 3, | |
| 91 ssl_calg_3des = 4, | |
| 92 ssl_calg_idea = 5, | |
| 93 ssl_calg_fortezza = 6, /* deprecated, now unused */ | |
| 94 ssl_calg_aes = 7, | |
| 95 ssl_calg_camellia = 8, | |
| 96 ssl_calg_seed = 9, | |
| 97 ssl_calg_aes_gcm = 10, | |
| 98 ssl_calg_chacha20 = 11 | |
| 99 } SSLCipherAlgorithm; | |
| 100 | |
| 101 typedef enum { | |
| 102 ssl_mac_null = 0, | |
| 103 ssl_mac_md5 = 1, | |
| 104 ssl_mac_sha = 2, | |
| 105 ssl_hmac_md5 = 3, /* TLS HMAC version of mac_md5 */ | |
| 106 ssl_hmac_sha = 4, /* TLS HMAC version of mac_sha */ | |
| 107 ssl_hmac_sha256 = 5, | |
| 108 ssl_mac_aead = 6 | |
| 109 } SSLMACAlgorithm; | |
| 110 | |
| 111 typedef enum { | |
| 112 ssl_compression_null = 0, | |
| 113 ssl_compression_deflate = 1 /* RFC 3749 */ | |
| 114 } SSLCompressionMethod; | |
| 115 | |
| 116 typedef struct SSLChannelInfoStr { | |
| 117 PRUint32 length; | |
| 118 PRUint16 protocolVersion; | |
| 119 PRUint16 cipherSuite; | |
| 120 | |
| 121 /* server authentication info */ | |
| 122 PRUint32 authKeyBits; | |
| 123 | |
| 124 /* key exchange algorithm info */ | |
| 125 PRUint32 keaKeyBits; | |
| 126 | |
| 127 /* session info */ | |
| 128 PRUint32 creationTime; /* seconds since Jan 1, 1970 */ | |
| 129 PRUint32 lastAccessTime; /* seconds since Jan 1, 1970 */ | |
| 130 PRUint32 expirationTime; /* seconds since Jan 1, 1970 */ | |
| 131 PRUint32 sessionIDLength; /* up to 32 */ | |
| 132 PRUint8 sessionID [32]; | |
| 133 | |
| 134 /* The following fields are added in NSS 3.12.5. */ | |
| 135 | |
| 136 /* compression method info */ | |
| 137 const char * compressionMethodName; | |
| 138 SSLCompressionMethod compressionMethod; | |
| 139 } SSLChannelInfo; | |
| 140 | |
| 141 typedef struct SSLCipherSuiteInfoStr { | |
| 142 PRUint16 length; | |
| 143 PRUint16 cipherSuite; | |
| 144 | |
| 145 /* Cipher Suite Name */ | |
| 146 const char * cipherSuiteName; | |
| 147 | |
| 148 /* server authentication info */ | |
| 149 const char * authAlgorithmName; | |
| 150 SSLAuthType authAlgorithm; | |
| 151 | |
| 152 /* key exchange algorithm info */ | |
| 153 const char * keaTypeName; | |
| 154 SSLKEAType keaType; | |
| 155 | |
| 156 /* symmetric encryption info */ | |
| 157 const char * symCipherName; | |
| 158 SSLCipherAlgorithm symCipher; | |
| 159 PRUint16 symKeyBits; | |
| 160 PRUint16 symKeySpace; | |
| 161 PRUint16 effectiveKeyBits; | |
| 162 | |
| 163 /* MAC info */ | |
| 164 /* AEAD ciphers don't have a MAC. For an AEAD cipher, macAlgorithmName | |
| 165 * is "AEAD", macAlgorithm is ssl_mac_aead, and macBits is the length in | |
| 166 * bits of the authentication tag. */ | |
| 167 const char * macAlgorithmName; | |
| 168 SSLMACAlgorithm macAlgorithm; | |
| 169 PRUint16 macBits; | |
| 170 | |
| 171 PRUintn isFIPS : 1; | |
| 172 PRUintn isExportable : 1; | |
| 173 PRUintn nonStandard : 1; | |
| 174 PRUintn reservedBits :29; | |
| 175 | |
| 176 } SSLCipherSuiteInfo; | |
| 177 | |
| 178 typedef enum { | |
| 179 ssl_variant_stream = 0, | |
| 180 ssl_variant_datagram = 1 | |
| 181 } SSLProtocolVariant; | |
| 182 | |
| 183 typedef struct SSLVersionRangeStr { | |
| 184 PRUint16 min; | |
| 185 PRUint16 max; | |
| 186 } SSLVersionRange; | |
| 187 | |
| 188 typedef enum { | |
| 189 SSL_sni_host_name = 0, | |
| 190 SSL_sni_type_total | |
| 191 } SSLSniNameType; | |
| 192 | |
| 193 /* Supported extensions. */ | |
| 194 /* Update SSL_MAX_EXTENSIONS whenever a new extension type is added. */ | |
| 195 typedef enum { | |
| 196 ssl_server_name_xtn = 0, | |
| 197 ssl_cert_status_xtn = 5, | |
| 198 #ifdef NSS_ENABLE_ECC | |
| 199 ssl_elliptic_curves_xtn = 10, | |
| 200 ssl_ec_point_formats_xtn = 11, | |
| 201 #endif | |
| 202 ssl_signature_algorithms_xtn = 13, | |
| 203 ssl_use_srtp_xtn = 14, | |
| 204 ssl_app_layer_protocol_xtn = 16, | |
| 205 ssl_signed_certificate_timestamp_xtn = 18, /* RFC 6962 */ | |
| 206 ssl_padding_xtn = 21, | |
| 207 ssl_session_ticket_xtn = 35, | |
| 208 ssl_next_proto_nego_xtn = 13172, | |
| 209 ssl_channel_id_xtn = 30032, | |
| 210 ssl_renegotiation_info_xtn = 0xff01 /* experimental number */ | |
| 211 } SSLExtensionType; | |
| 212 | |
| 213 #define SSL_MAX_EXTENSIONS 12 /* doesn't include ssl_padding_xtn. */ | |
| 214 | |
| 215 #endif /* __sslt_h_ */ | |
| OLD | NEW |