1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72: #ifndef HEADER_TLS1_H
73: #define HEADER_TLS1_H
74:
75: #include <openssl/buffer.h>
76:
77: #ifdef __cplusplus
78: extern "C" {
79: #endif
80:
81: #define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0
82:
83: #define TLS1_VERSION 0x0301
84: #define TLS1_VERSION_MAJOR 0x03
85: #define TLS1_VERSION_MINOR 0x01
86:
87: #define TLS1_AD_DECRYPTION_FAILED 21
88: #define TLS1_AD_RECORD_OVERFLOW 22
89: #define TLS1_AD_UNKNOWN_CA 48
90: #define TLS1_AD_ACCESS_DENIED 49
91: #define TLS1_AD_DECODE_ERROR 50
92: #define TLS1_AD_DECRYPT_ERROR 51
93: #define TLS1_AD_EXPORT_RESTRICTION 60
94: #define TLS1_AD_PROTOCOL_VERSION 70
95: #define TLS1_AD_INSUFFICIENT_SECURITY 71
96: #define TLS1_AD_INTERNAL_ERROR 80
97: #define TLS1_AD_USER_CANCELLED 90
98: #define TLS1_AD_NO_RENEGOTIATION 100
99:
100: #define TLS1_AD_UNSUPPORTED_EXTENSION 110
101: #define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111
102: #define TLS1_AD_UNRECOGNIZED_NAME 112
103: #define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113
104: #define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114
105: #define TLS1_AD_UNKNOWN_PSK_IDENTITY 115
106:
107:
108: #define TLSEXT_TYPE_server_name 0
109: #define TLSEXT_TYPE_max_fragment_length 1
110: #define TLSEXT_TYPE_client_certificate_url 2
111: #define TLSEXT_TYPE_trusted_ca_keys 3
112: #define TLSEXT_TYPE_truncated_hmac 4
113: #define TLSEXT_TYPE_status_request 5
114: #define TLSEXT_TYPE_elliptic_curves 10
115: #define TLSEXT_TYPE_ec_point_formats 11
116: #define TLSEXT_TYPE_session_ticket 35
117:
118:
119: #define TLSEXT_NAMETYPE_host_name 0
120:
121: #ifndef OPENSSL_NO_TLSEXT
122:
123: #define TLSEXT_MAXLEN_host_name 255
124:
125: const char *SSL_get_servername(const SSL *s, const int type) ;
126: int SSL_get_servername_type(const SSL *s) ;
127:
128: #define SSL_set_tlsext_host_name(s,name) \
129: SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name)
130:
131: #define SSL_set_tlsext_debug_callback(ssl, cb) \
132: SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,(void (*)(void))cb)
133:
134: #define SSL_set_tlsext_debug_arg(ssl, arg) \
135: SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0, (void *)arg)
136:
137: #define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \
138: SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb)
139:
140: #define SSL_TLSEXT_ERR_OK 0
141: #define SSL_TLSEXT_ERR_ALERT_WARNING 1
142: #define SSL_TLSEXT_ERR_ALERT_FATAL 2
143: #define SSL_TLSEXT_ERR_NOACK 3
144:
145: #define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \
146: SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg)
147:
148: #define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \
149: SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLXEXT_TICKET_KEYS,(keylen),(keys))
150: #define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \
151: SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLXEXT_TICKET_KEYS,(keylen),(keys))
152: #endif
153:
154:
155:
156:
157:
158: #define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060
159: #define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061
160: #define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062
161: #define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063
162: #define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064
163: #define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065
164: #define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066
165:
166:
167:
168: #define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F
169: #define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030
170: #define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031
171: #define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032
172: #define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033
173: #define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034
174:
175: #define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035
176: #define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036
177: #define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037
178: #define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038
179: #define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039
180: #define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A
181:
182:
183: #define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041
184: #define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042
185: #define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043
186: #define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044
187: #define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045
188: #define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046
189:
190: #define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084
191: #define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085
192: #define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086
193: #define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087
194: #define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088
195: #define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089
196:
197:
198: #define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096
199: #define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097
200: #define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098
201: #define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099
202: #define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A
203: #define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B
204:
205:
206: #define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001
207: #define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002
208: #define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003
209: #define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004
210: #define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005
211:
212: #define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006
213: #define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007
214: #define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008
215: #define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009
216: #define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A
217:
218: #define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B
219: #define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C
220: #define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D
221: #define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E
222: #define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F
223:
224: #define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010
225: #define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011
226: #define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012
227: #define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013
228: #define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014
229:
230: #define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015
231: #define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016
232: #define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017
233: #define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018
234: #define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019
235:
236:
237:
238:
239:
240:
241:
242:
243: #define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5"
244: #define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5"
245: #define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA"
246: #define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA"
247: #define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA"
248: #define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA"
249: #define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA"
250:
251:
252: #define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA"
253: #define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA"
254: #define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA"
255: #define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA"
256: #define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA"
257: #define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA"
258:
259: #define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA"
260: #define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA"
261: #define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA"
262: #define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA"
263: #define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA"
264: #define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA"
265:
266:
267: #define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA"
268: #define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA"
269: #define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA"
270: #define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA"
271: #define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA"
272:
273: #define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA"
274: #define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA"
275: #define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA"
276: #define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA"
277: #define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA"
278:
279: #define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA"
280: #define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA"
281: #define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA"
282: #define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA"
283: #define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA"
284:
285: #define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA"
286: #define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA"
287: #define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA"
288: #define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA"
289: #define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA"
290:
291: #define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA"
292: #define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA"
293: #define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA"
294: #define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA"
295: #define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA"
296:
297:
298: #define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA"
299: #define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA"
300: #define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA"
301: #define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA"
302: #define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA"
303: #define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA"
304:
305: #define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA"
306: #define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA"
307: #define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA"
308: #define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA"
309: #define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA"
310: #define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA"
311:
312:
313: #define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA"
314: #define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA"
315: #define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA"
316: #define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA"
317: #define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA"
318: #define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA"
319:
320: #define TLS_CT_RSA_SIGN 1
321: #define TLS_CT_DSS_SIGN 2
322: #define TLS_CT_RSA_FIXED_DH 3
323: #define TLS_CT_DSS_FIXED_DH 4
324: #define TLS_CT_ECDSA_SIGN 64
325: #define TLS_CT_RSA_FIXED_ECDH 65
326: #define TLS_CT_ECDSA_FIXED_ECDH 66
327: #define TLS_CT_NUMBER 7
328:
329: #define TLS1_FINISH_MAC_LENGTH 12
330:
331: #define TLS_MD_MAX_CONST_SIZE 20
332: #define TLS_MD_CLIENT_FINISH_CONST "client finished"
333: #define TLS_MD_CLIENT_FINISH_CONST_SIZE 15
334: #define TLS_MD_SERVER_FINISH_CONST "server finished"
335: #define TLS_MD_SERVER_FINISH_CONST_SIZE 15
336: #define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
337: #define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
338: #define TLS_MD_KEY_EXPANSION_CONST "key expansion"
339: #define TLS_MD_KEY_EXPANSION_CONST_SIZE 13
340: #define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key"
341: #define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16
342: #define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
343: #define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
344: #define TLS_MD_IV_BLOCK_CONST "IV block"
345: #define TLS_MD_IV_BLOCK_CONST_SIZE 8
346: #define TLS_MD_MASTER_SECRET_CONST "master secret"
347: #define TLS_MD_MASTER_SECRET_CONST_SIZE 13
348:
349: #ifdef CHARSET_EBCDIC
350: #undef TLS_MD_CLIENT_FINISH_CONST
351: #define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64"
352: #undef TLS_MD_SERVER_FINISH_CONST
353: #define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64"
354: #undef TLS_MD_SERVER_WRITE_KEY_CONST
355: #define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79"
356: #undef TLS_MD_KEY_EXPANSION_CONST
357: #define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e"
358: #undef TLS_MD_CLIENT_WRITE_KEY_CONST
359: #define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79"
360: #undef TLS_MD_SERVER_WRITE_KEY_CONST
361: #define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79"
362: #undef TLS_MD_IV_BLOCK_CONST
363: #define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b"
364: #undef TLS_MD_MASTER_SECRET_CONST
365: #define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74"
366: #endif
367:
368: #ifdef __cplusplus
369: }
370: #endif
371: #endif
372:
373:
374: