Branch data Line data Source code
1 : : // $Id: SSLCiphers.h 1678 2005-11-08 19:16:37Z vern $
2 : :
3 : : #ifndef SSL_CIPHERS_H
4 : : #define SSL_CIPHERS_H
5 : :
6 : : #include "Dict.h"
7 : :
8 : : // --- definitions for sslv3x cipher handling ---------------------------------
9 : :
10 : : /*!
11 : : * In SSLv2, a cipher spec consists of three bytes.
12 : : */
13 : : enum SSLv2_CipherSpec {
14 : : // --- standard SSLv2 ciphers
15 : : SSL_CK_RC4_128_WITH_MD5 = 0x010080,
16 : : SSL_CK_RC4_128_EXPORT40_WITH_MD5 = 0x020080,
17 : : SSL_CK_RC2_128_CBC_WITH_MD5 = 0x030080,
18 : : SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 = 0x040080,
19 : : SSL_CK_IDEA_128_CBC_WITH_MD5 = 0x050080,
20 : : SSL_CK_DES_64_CBC_WITH_MD5 = 0x060040,
21 : : SSL_CK_DES_192_EDE3_CBC_WITH_MD5 = 0x0700C0,
22 : : SSL_CK_RC4_64_WITH_MD5 = 0x080080
23 : : };
24 : :
25 : :
26 : : /*!
27 : : * In SSLv3x, a cipher spec consists of two bytes.
28 : : */
29 : : enum SSL3_1_CipherSpec {
30 : : // --- standard SSLv3x ciphers
31 : : TLS_NULL_WITH_NULL_NULL = 0x0000,
32 : : TLS_RSA_WITH_NULL_MD5 = 0x0001,
33 : : TLS_RSA_WITH_NULL_SHA = 0x0002,
34 : : TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x0003,
35 : : TLS_RSA_WITH_RC4_128_MD5 = 0x0004,
36 : : TLS_RSA_WITH_RC4_128_SHA = 0x0005,
37 : : TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x0006,
38 : : TLS_RSA_WITH_IDEA_CBC_SHA = 0x0007,
39 : : TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0008,
40 : : TLS_RSA_WITH_DES_CBC_SHA = 0x0009,
41 : : TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A,
42 : : TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x000B,
43 : : TLS_DH_DSS_WITH_DES_CBC_SHA = 0x000C,
44 : : TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D,
45 : : TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x000E,
46 : : TLS_DH_RSA_WITH_DES_CBC_SHA = 0x000F,
47 : : TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010,
48 : : TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x0011,
49 : : TLS_DHE_DSS_WITH_DES_CBC_SHA = 0x0012,
50 : : TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013,
51 : : TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0014,
52 : : TLS_DHE_RSA_WITH_DES_CBC_SHA = 0x0015,
53 : : TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016,
54 : : TLS_DH_ANON_EXPORT_WITH_RC4_40_MD5 = 0x0017,
55 : : TLS_DH_ANON_WITH_RC4_128_MD5 = 0x0018,
56 : : TLS_DH_ANON_EXPORT_WITH_DES40_CBC_SHA = 0x0019,
57 : : TLS_DH_ANON_WITH_DES_CBC_SHA = 0x001A,
58 : : TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA = 0x001B,
59 : : // --- special SSLv3 ciphers
60 : : SSL_FORTEZZA_KEA_WITH_NULL_SHA = 0x001C,
61 : : SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA = 0x001D,
62 : : SSL_FORTEZZA_KEA_WITH_RC4_128_SHA = 0x001E,
63 : : // --- special SSLv3 FIPS ciphers
64 : : SSL_RSA_FIPS_WITH_DES_CBC_SHA = 0xFEFE,
65 : : SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA = 0XFEFF,
66 : : // --- new 56 bit export ciphers
67 : : TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA = 0x0062,
68 : : TLS_RSA_EXPORT1024_WITH_RC4_56_SHA = 0x0064,
69 : : TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA = 0x0063,
70 : : TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA = 0x0065,
71 : : TLS_DHE_DSS_WITH_RC4_128_SHA = 0x0066,
72 : : // --- new AES ciphers
73 : : TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F,
74 : : TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x0030,
75 : : TLS_DH_RSA_WITH_AES_128_CBC_SHA = 0x0031,
76 : : TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032,
77 : : TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033,
78 : : TLS_DH_ANON_WITH_AES_128_CBC_SHA = 0x0034,
79 : : TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035,
80 : : TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x0036,
81 : : TLS_DH_RSA_WITH_AES_256_CBC_SHA = 0x0037,
82 : : TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038,
83 : : TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039,
84 : : TLS_DH_ANON_WITH_AES_256_CBC_SHA = 0x003A
85 : : };
86 : :
87 : : enum SSL_CipherType {
88 : : SSL_CIPHER_TYPE_STREAM,
89 : : SSL_CIPHER_TYPE_BLOCK,
90 : : SSL_CIPHER_TYPE_NULL
91 : : };
92 : :
93 : : enum SSL_BulkCipherAlgorithm {
94 : : SSL_CIPHER_NULL,
95 : : SSL_CIPHER_RC4,
96 : : SSL_CIPHER_RC2,
97 : : SSL_CIPHER_DES,
98 : : SSL_CIPHER_3DES,
99 : : SSL_CIPHER_DES40,
100 : : SSL_CIPHER_FORTEZZA,
101 : : SSL_CIPHER_IDEA,
102 : : SSL_CIPHER_AES
103 : : };
104 : :
105 : : enum SSL_MACAlgorithm {
106 : : SSL_MAC_NULL,
107 : : SSL_MAC_MD5,
108 : : SSL_MAC_SHA
109 : : };
110 : :
111 : : enum SSL_KeyExchangeAlgorithm {
112 : : SSL_KEY_EXCHANGE_NULL,
113 : : SSL_KEY_EXCHANGE_RSA,
114 : : SSL_KEY_EXCHANGE_RSA_EXPORT,
115 : : SSL_KEY_EXCHANGE_DH,
116 : : SSL_KEY_EXCHANGE_DH_DSS,
117 : : SSL_KEY_EXCHANGE_DH_DSS_EXPORT,
118 : : SSL_KEY_EXCHANGE_DH_RSA,
119 : : SSL_KEY_EXCHANGE_DH_RSA_EXPORT,
120 : : SSL_KEY_EXCHANGE_DHE_DSS,
121 : : SSL_KEY_EXCHANGE_DHE_DSS_EXPORT,
122 : : SSL_KEY_EXCHANGE_DHE_RSA,
123 : : SSL_KEY_EXCHANGE_DHE_RSA_EXPORT,
124 : : SSL_KEY_EXCHANGE_DH_ANON,
125 : : SSL_KEY_EXCHANGE_DH_ANON_EXPORT,
126 : : SSL_KEY_EXCHANGE_FORTEZZA_KEA,
127 : : // --- new 56 bit export ciphers
128 : : SSL_KEY_EXCHANGE_RSA_EXPORT1024,
129 : : SSL_KEY_EXCHANGE_DHE_DSS_EXPORT1024
130 : : };
131 : :
132 : : #if 0
133 : : struct SSL_CipherSpecImprove {
134 : : uint32 identifier;
135 : :
136 : : // SSL_CipherType cipherType;
137 : : SSL_BulkCipherAlgorithm encryptionAlgorithm;
138 : : SSL_BulkCipherAlgorithm authenticationAlgorithm;
139 : : SSL_BulkCipherAlgorithm keyAlgorithm;
140 : : SSL_MACAlgorithm macAlgorithm;
141 : :
142 : : int clearkeySize;
143 : : int encryptedkeySize;
144 : : uint32 flags; // IsExportable IsSSLv2 IsSSLv30 IsSSLv31
145 : : const char* fullName = "TLS_WITH_NULL_NULL";
146 : :
147 : : };
148 : : #endif
149 : :
150 : : struct SSL_CipherSpec {
151 : : uint32 identifier; ///< type code of the CIPHER-SPEC (2 or 3 Bytes)
152 : :
153 : : SSL_CipherType cipherType;
154 : : uint32 flags;
155 : : SSL_BulkCipherAlgorithm bulkCipherAlgorithm;
156 : : SSL_MACAlgorithm macAlgorithm;
157 : : SSL_KeyExchangeAlgorithm keyExchangeAlgorithm;
158 : :
159 : : int clearKeySize; ///< size in bits of plaintext part of master key
160 : : int encryptedKeySize; ///< size in bits of encrypted part of master key
161 : : int hashSize;
162 : : };
163 : :
164 : : const uint32 SSL_FLAG_EXPORT = 0x0001; ///< set if exportable cipher
165 : : const uint32 SSL_FLAG_SSLv20 = 0x0002; ///< set if cipher defined for SSLv20
166 : : const uint32 SSL_FLAG_SSLv30 = 0x0004; ///< set if cipher defined for SSLv30
167 : : const uint32 SSL_FLAG_SSLv31 = 0x0008; ///< set if cipher defined for SSLv31
168 : :
169 [ # # ][ - + ]: 6 : declare(PDict, SSL_CipherSpec);
170 : : extern PDict(SSL_CipherSpec) SSL_CipherSpecDict;
171 : : extern SSL_CipherSpec SSL_CipherSpecs[];
172 : : extern const uint SSL_CipherSpecs_Count;
173 : :
174 : : #endif
|