motion-openssl 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/lib/OpenSSL/aes.h +149 -0
  4. data/lib/OpenSSL/asn1.h +1419 -0
  5. data/lib/OpenSSL/asn1_mac.h +579 -0
  6. data/lib/OpenSSL/asn1t.h +973 -0
  7. data/lib/OpenSSL/bio.h +879 -0
  8. data/lib/OpenSSL/blowfish.h +130 -0
  9. data/lib/OpenSSL/bn.h +939 -0
  10. data/lib/OpenSSL/buffer.h +125 -0
  11. data/lib/OpenSSL/camellia.h +132 -0
  12. data/lib/OpenSSL/cast.h +107 -0
  13. data/lib/OpenSSL/cmac.h +82 -0
  14. data/lib/OpenSSL/cms.h +555 -0
  15. data/lib/OpenSSL/comp.h +79 -0
  16. data/lib/OpenSSL/conf.h +267 -0
  17. data/lib/OpenSSL/conf_api.h +89 -0
  18. data/lib/OpenSSL/crypto.h +661 -0
  19. data/lib/OpenSSL/des.h +257 -0
  20. data/lib/OpenSSL/des_old.h +497 -0
  21. data/lib/OpenSSL/dh.h +392 -0
  22. data/lib/OpenSSL/dsa.h +332 -0
  23. data/lib/OpenSSL/dso.h +451 -0
  24. data/lib/OpenSSL/dtls1.h +272 -0
  25. data/lib/OpenSSL/e_os2.h +328 -0
  26. data/lib/OpenSSL/ebcdic.h +26 -0
  27. data/lib/OpenSSL/ec.h +1282 -0
  28. data/lib/OpenSSL/ecdh.h +134 -0
  29. data/lib/OpenSSL/ecdsa.h +335 -0
  30. data/lib/OpenSSL/engine.h +960 -0
  31. data/lib/OpenSSL/err.h +389 -0
  32. data/lib/OpenSSL/evp.h +1534 -0
  33. data/lib/OpenSSL/hmac.h +109 -0
  34. data/lib/OpenSSL/idea.h +105 -0
  35. data/lib/OpenSSL/krb5_asn.h +240 -0
  36. data/lib/OpenSSL/kssl.h +197 -0
  37. data/lib/OpenSSL/lhash.h +240 -0
  38. data/lib/OpenSSL/libcrypto-tvOS.a +0 -0
  39. data/lib/OpenSSL/libcrypto.a +0 -0
  40. data/lib/OpenSSL/libssl-tvOS.a +0 -0
  41. data/lib/OpenSSL/libssl.a +0 -0
  42. data/lib/OpenSSL/md4.h +119 -0
  43. data/lib/OpenSSL/md5.h +119 -0
  44. data/lib/OpenSSL/mdc2.h +94 -0
  45. data/lib/OpenSSL/modes.h +163 -0
  46. data/lib/OpenSSL/obj_mac.h +4194 -0
  47. data/lib/OpenSSL/objects.h +1143 -0
  48. data/lib/OpenSSL/ocsp.h +637 -0
  49. data/lib/OpenSSL/opensslconf.h +262 -0
  50. data/lib/OpenSSL/opensslv.h +97 -0
  51. data/lib/OpenSSL/ossl_typ.h +211 -0
  52. data/lib/OpenSSL/pem.h +615 -0
  53. data/lib/OpenSSL/pem2.h +70 -0
  54. data/lib/OpenSSL/pkcs12.h +342 -0
  55. data/lib/OpenSSL/pkcs7.h +481 -0
  56. data/lib/OpenSSL/pqueue.h +99 -0
  57. data/lib/OpenSSL/rand.h +150 -0
  58. data/lib/OpenSSL/rc2.h +103 -0
  59. data/lib/OpenSSL/rc4.h +88 -0
  60. data/lib/OpenSSL/ripemd.h +105 -0
  61. data/lib/OpenSSL/rsa.h +664 -0
  62. data/lib/OpenSSL/safestack.h +2672 -0
  63. data/lib/OpenSSL/seed.h +149 -0
  64. data/lib/OpenSSL/sha.h +214 -0
  65. data/lib/OpenSSL/srp.h +169 -0
  66. data/lib/OpenSSL/srtp.h +147 -0
  67. data/lib/OpenSSL/ssl.h +3168 -0
  68. data/lib/OpenSSL/ssl2.h +265 -0
  69. data/lib/OpenSSL/ssl23.h +84 -0
  70. data/lib/OpenSSL/ssl3.h +774 -0
  71. data/lib/OpenSSL/stack.h +107 -0
  72. data/lib/OpenSSL/symhacks.h +516 -0
  73. data/lib/OpenSSL/tls1.h +810 -0
  74. data/lib/OpenSSL/ts.h +862 -0
  75. data/lib/OpenSSL/txt_db.h +112 -0
  76. data/lib/OpenSSL/ui.h +415 -0
  77. data/lib/OpenSSL/ui_compat.h +88 -0
  78. data/lib/OpenSSL/whrlpool.h +41 -0
  79. data/lib/OpenSSL/x509.h +1327 -0
  80. data/lib/OpenSSL/x509_vfy.h +647 -0
  81. data/lib/OpenSSL/x509v3.h +1055 -0
  82. data/lib/motion-openssl.rb +8 -0
  83. data/lib/motion-openssl/hooks.rb +8 -0
  84. data/lib/motion-openssl/hooks/openssl.rb +20 -0
  85. data/lib/motion-openssl/version.rb +5 -0
  86. data/motion/openssl.rb +1 -0
  87. data/motion/openssl/random.rb +18 -0
  88. metadata +229 -0
@@ -0,0 +1,810 @@
1
+ /* ssl/tls1.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+ /* ====================================================================
59
+ * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60
+ *
61
+ * Redistribution and use in source and binary forms, with or without
62
+ * modification, are permitted provided that the following conditions
63
+ * are met:
64
+ *
65
+ * 1. Redistributions of source code must retain the above copyright
66
+ * notice, this list of conditions and the following disclaimer.
67
+ *
68
+ * 2. Redistributions in binary form must reproduce the above copyright
69
+ * notice, this list of conditions and the following disclaimer in
70
+ * the documentation and/or other materials provided with the
71
+ * distribution.
72
+ *
73
+ * 3. All advertising materials mentioning features or use of this
74
+ * software must display the following acknowledgment:
75
+ * "This product includes software developed by the OpenSSL Project
76
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77
+ *
78
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79
+ * endorse or promote products derived from this software without
80
+ * prior written permission. For written permission, please contact
81
+ * openssl-core@openssl.org.
82
+ *
83
+ * 5. Products derived from this software may not be called "OpenSSL"
84
+ * nor may "OpenSSL" appear in their names without prior written
85
+ * permission of the OpenSSL Project.
86
+ *
87
+ * 6. Redistributions of any form whatsoever must retain the following
88
+ * acknowledgment:
89
+ * "This product includes software developed by the OpenSSL Project
90
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91
+ *
92
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
104
+ * ====================================================================
105
+ *
106
+ * This product includes cryptographic software written by Eric Young
107
+ * (eay@cryptsoft.com). This product includes software written by Tim
108
+ * Hudson (tjh@cryptsoft.com).
109
+ *
110
+ */
111
+ /* ====================================================================
112
+ * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
113
+ *
114
+ * Portions of the attached software ("Contribution") are developed by
115
+ * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
116
+ *
117
+ * The Contribution is licensed pursuant to the OpenSSL open source
118
+ * license provided above.
119
+ *
120
+ * ECC cipher suite support in OpenSSL originally written by
121
+ * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories.
122
+ *
123
+ */
124
+ /* ====================================================================
125
+ * Copyright 2005 Nokia. All rights reserved.
126
+ *
127
+ * The portions of the attached software ("Contribution") is developed by
128
+ * Nokia Corporation and is licensed pursuant to the OpenSSL open source
129
+ * license.
130
+ *
131
+ * The Contribution, originally written by Mika Kousa and Pasi Eronen of
132
+ * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
133
+ * support (see RFC 4279) to OpenSSL.
134
+ *
135
+ * No patent licenses or other rights except those expressly stated in
136
+ * the OpenSSL open source license shall be deemed granted or received
137
+ * expressly, by implication, estoppel, or otherwise.
138
+ *
139
+ * No assurances are provided by Nokia that the Contribution does not
140
+ * infringe the patent or other intellectual property rights of any third
141
+ * party or that the license provides you with all the necessary rights
142
+ * to make use of the Contribution.
143
+ *
144
+ * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
145
+ * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
146
+ * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
147
+ * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
148
+ * OTHERWISE.
149
+ */
150
+
151
+ #ifndef HEADER_TLS1_H
152
+ # define HEADER_TLS1_H
153
+
154
+ # include <openssl/buffer.h>
155
+
156
+ #ifdef __cplusplus
157
+ extern "C" {
158
+ #endif
159
+
160
+ # define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0
161
+
162
+ # define TLS1_VERSION 0x0301
163
+ # define TLS1_1_VERSION 0x0302
164
+ # define TLS1_2_VERSION 0x0303
165
+ # define TLS_MAX_VERSION TLS1_2_VERSION
166
+
167
+ # define TLS1_VERSION_MAJOR 0x03
168
+ # define TLS1_VERSION_MINOR 0x01
169
+
170
+ # define TLS1_1_VERSION_MAJOR 0x03
171
+ # define TLS1_1_VERSION_MINOR 0x02
172
+
173
+ # define TLS1_2_VERSION_MAJOR 0x03
174
+ # define TLS1_2_VERSION_MINOR 0x03
175
+
176
+ # define TLS1_get_version(s) \
177
+ ((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0)
178
+
179
+ # define TLS1_get_client_version(s) \
180
+ ((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0)
181
+
182
+ # define TLS1_AD_DECRYPTION_FAILED 21
183
+ # define TLS1_AD_RECORD_OVERFLOW 22
184
+ # define TLS1_AD_UNKNOWN_CA 48/* fatal */
185
+ # define TLS1_AD_ACCESS_DENIED 49/* fatal */
186
+ # define TLS1_AD_DECODE_ERROR 50/* fatal */
187
+ # define TLS1_AD_DECRYPT_ERROR 51
188
+ # define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */
189
+ # define TLS1_AD_PROTOCOL_VERSION 70/* fatal */
190
+ # define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */
191
+ # define TLS1_AD_INTERNAL_ERROR 80/* fatal */
192
+ # define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */
193
+ # define TLS1_AD_USER_CANCELLED 90
194
+ # define TLS1_AD_NO_RENEGOTIATION 100
195
+ /* codes 110-114 are from RFC3546 */
196
+ # define TLS1_AD_UNSUPPORTED_EXTENSION 110
197
+ # define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111
198
+ # define TLS1_AD_UNRECOGNIZED_NAME 112
199
+ # define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113
200
+ # define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114
201
+ # define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */
202
+
203
+ /* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */
204
+ # define TLSEXT_TYPE_server_name 0
205
+ # define TLSEXT_TYPE_max_fragment_length 1
206
+ # define TLSEXT_TYPE_client_certificate_url 2
207
+ # define TLSEXT_TYPE_trusted_ca_keys 3
208
+ # define TLSEXT_TYPE_truncated_hmac 4
209
+ # define TLSEXT_TYPE_status_request 5
210
+ /* ExtensionType values from RFC4681 */
211
+ # define TLSEXT_TYPE_user_mapping 6
212
+ /* ExtensionType values from RFC5878 */
213
+ # define TLSEXT_TYPE_client_authz 7
214
+ # define TLSEXT_TYPE_server_authz 8
215
+ /* ExtensionType values from RFC6091 */
216
+ # define TLSEXT_TYPE_cert_type 9
217
+
218
+ /* ExtensionType values from RFC4492 */
219
+ # define TLSEXT_TYPE_elliptic_curves 10
220
+ # define TLSEXT_TYPE_ec_point_formats 11
221
+
222
+ /* ExtensionType value from RFC5054 */
223
+ # define TLSEXT_TYPE_srp 12
224
+
225
+ /* ExtensionType values from RFC5246 */
226
+ # define TLSEXT_TYPE_signature_algorithms 13
227
+
228
+ /* ExtensionType value from RFC5764 */
229
+ # define TLSEXT_TYPE_use_srtp 14
230
+
231
+ /* ExtensionType value from RFC5620 */
232
+ # define TLSEXT_TYPE_heartbeat 15
233
+
234
+ /* ExtensionType value from RFC7301 */
235
+ # define TLSEXT_TYPE_application_layer_protocol_negotiation 16
236
+
237
+ /*
238
+ * ExtensionType value for TLS padding extension.
239
+ * http://tools.ietf.org/html/draft-agl-tls-padding
240
+ */
241
+ # define TLSEXT_TYPE_padding 21
242
+
243
+ /* ExtensionType value from RFC4507 */
244
+ # define TLSEXT_TYPE_session_ticket 35
245
+
246
+ /* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */
247
+ # if 0
248
+ /*
249
+ * will have to be provided externally for now ,
250
+ * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183
251
+ * using whatever extension number you'd like to try
252
+ */
253
+ # define TLSEXT_TYPE_opaque_prf_input ??
254
+ # endif
255
+
256
+ /* Temporary extension type */
257
+ # define TLSEXT_TYPE_renegotiate 0xff01
258
+
259
+ # ifndef OPENSSL_NO_NEXTPROTONEG
260
+ /* This is not an IANA defined extension number */
261
+ # define TLSEXT_TYPE_next_proto_neg 13172
262
+ # endif
263
+
264
+ /* NameType value from RFC3546 */
265
+ # define TLSEXT_NAMETYPE_host_name 0
266
+ /* status request value from RFC3546 */
267
+ # define TLSEXT_STATUSTYPE_ocsp 1
268
+
269
+ /* ECPointFormat values from RFC4492 */
270
+ # define TLSEXT_ECPOINTFORMAT_first 0
271
+ # define TLSEXT_ECPOINTFORMAT_uncompressed 0
272
+ # define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1
273
+ # define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2
274
+ # define TLSEXT_ECPOINTFORMAT_last 2
275
+
276
+ /* Signature and hash algorithms from RFC5246 */
277
+ # define TLSEXT_signature_anonymous 0
278
+ # define TLSEXT_signature_rsa 1
279
+ # define TLSEXT_signature_dsa 2
280
+ # define TLSEXT_signature_ecdsa 3
281
+
282
+ /* Total number of different signature algorithms */
283
+ # define TLSEXT_signature_num 4
284
+
285
+ # define TLSEXT_hash_none 0
286
+ # define TLSEXT_hash_md5 1
287
+ # define TLSEXT_hash_sha1 2
288
+ # define TLSEXT_hash_sha224 3
289
+ # define TLSEXT_hash_sha256 4
290
+ # define TLSEXT_hash_sha384 5
291
+ # define TLSEXT_hash_sha512 6
292
+
293
+ /* Total number of different digest algorithms */
294
+
295
+ # define TLSEXT_hash_num 7
296
+
297
+ /* Flag set for unrecognised algorithms */
298
+ # define TLSEXT_nid_unknown 0x1000000
299
+
300
+ /* ECC curves */
301
+
302
+ # define TLSEXT_curve_P_256 23
303
+ # define TLSEXT_curve_P_384 24
304
+
305
+ # ifndef OPENSSL_NO_TLSEXT
306
+
307
+ # define TLSEXT_MAXLEN_host_name 255
308
+
309
+ const char *SSL_get_servername(const SSL *s, const int type);
310
+ int SSL_get_servername_type(const SSL *s);
311
+ /*
312
+ * SSL_export_keying_material exports a value derived from the master secret,
313
+ * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and
314
+ * optional context. (Since a zero length context is allowed, the |use_context|
315
+ * flag controls whether a context is included.) It returns 1 on success and
316
+ * zero otherwise.
317
+ */
318
+ int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen,
319
+ const char *label, size_t llen,
320
+ const unsigned char *p, size_t plen,
321
+ int use_context);
322
+
323
+ int SSL_get_sigalgs(SSL *s, int idx,
324
+ int *psign, int *phash, int *psignandhash,
325
+ unsigned char *rsig, unsigned char *rhash);
326
+
327
+ int SSL_get_shared_sigalgs(SSL *s, int idx,
328
+ int *psign, int *phash, int *psignandhash,
329
+ unsigned char *rsig, unsigned char *rhash);
330
+
331
+ int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain);
332
+
333
+ # define SSL_set_tlsext_host_name(s,name) \
334
+ SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name)
335
+
336
+ # define SSL_set_tlsext_debug_callback(ssl, cb) \
337
+ SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,(void (*)(void))cb)
338
+
339
+ # define SSL_set_tlsext_debug_arg(ssl, arg) \
340
+ SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0, (void *)arg)
341
+
342
+ # define SSL_set_tlsext_status_type(ssl, type) \
343
+ SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type, NULL)
344
+
345
+ # define SSL_get_tlsext_status_exts(ssl, arg) \
346
+ SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg)
347
+
348
+ # define SSL_set_tlsext_status_exts(ssl, arg) \
349
+ SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg)
350
+
351
+ # define SSL_get_tlsext_status_ids(ssl, arg) \
352
+ SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg)
353
+
354
+ # define SSL_set_tlsext_status_ids(ssl, arg) \
355
+ SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg)
356
+
357
+ # define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \
358
+ SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0, (void *)arg)
359
+
360
+ # define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \
361
+ SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen, (void *)arg)
362
+
363
+ # define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \
364
+ SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb)
365
+
366
+ # define SSL_TLSEXT_ERR_OK 0
367
+ # define SSL_TLSEXT_ERR_ALERT_WARNING 1
368
+ # define SSL_TLSEXT_ERR_ALERT_FATAL 2
369
+ # define SSL_TLSEXT_ERR_NOACK 3
370
+
371
+ # define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \
372
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg)
373
+
374
+ # define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \
375
+ SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLSEXT_TICKET_KEYS,(keylen),(keys))
376
+ # define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \
377
+ SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS,(keylen),(keys))
378
+
379
+ # define SSL_CTX_set_tlsext_status_cb(ssl, cb) \
380
+ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb)
381
+
382
+ # define SSL_CTX_set_tlsext_status_arg(ssl, arg) \
383
+ SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg)
384
+
385
+ # define SSL_set_tlsext_opaque_prf_input(s, src, len) \
386
+ SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT, len, src)
387
+ # define SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) \
388
+ SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB, (void (*)(void))cb)
389
+ # define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) \
390
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg)
391
+
392
+ # define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \
393
+ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
394
+
395
+ # ifndef OPENSSL_NO_HEARTBEATS
396
+ # define SSL_TLSEXT_HB_ENABLED 0x01
397
+ # define SSL_TLSEXT_HB_DONT_SEND_REQUESTS 0x02
398
+ # define SSL_TLSEXT_HB_DONT_RECV_REQUESTS 0x04
399
+
400
+ # define SSL_get_tlsext_heartbeat_pending(ssl) \
401
+ SSL_ctrl((ssl),SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING,0,NULL)
402
+ # define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \
403
+ SSL_ctrl((ssl),SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL)
404
+ # endif
405
+ # endif
406
+
407
+ /* PSK ciphersuites from 4279 */
408
+ # define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A
409
+ # define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B
410
+ # define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C
411
+ # define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D
412
+
413
+ /*
414
+ * Additional TLS ciphersuites from expired Internet Draft
415
+ * draft-ietf-tls-56-bit-ciphersuites-01.txt (available if
416
+ * TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see s3_lib.c). We
417
+ * actually treat them like SSL 3.0 ciphers, which we probably shouldn't.
418
+ * Note that the first two are actually not in the IDs.
419
+ */
420
+ # define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060/* not in
421
+ * ID */
422
+ # define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061/* not in
423
+ * ID */
424
+ # define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062
425
+ # define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063
426
+ # define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064
427
+ # define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065
428
+ # define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066
429
+
430
+ /* AES ciphersuites from RFC3268 */
431
+ # define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F
432
+ # define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030
433
+ # define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031
434
+ # define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032
435
+ # define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033
436
+ # define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034
437
+
438
+ # define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035
439
+ # define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036
440
+ # define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037
441
+ # define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038
442
+ # define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039
443
+ # define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A
444
+
445
+ /* TLS v1.2 ciphersuites */
446
+ # define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B
447
+ # define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C
448
+ # define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D
449
+ # define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E
450
+ # define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F
451
+ # define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040
452
+
453
+ /* Camellia ciphersuites from RFC4132 */
454
+ # define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041
455
+ # define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042
456
+ # define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043
457
+ # define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044
458
+ # define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045
459
+ # define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046
460
+
461
+ /* TLS v1.2 ciphersuites */
462
+ # define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067
463
+ # define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068
464
+ # define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069
465
+ # define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A
466
+ # define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B
467
+ # define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C
468
+ # define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D
469
+
470
+ /* Camellia ciphersuites from RFC4132 */
471
+ # define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084
472
+ # define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085
473
+ # define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086
474
+ # define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087
475
+ # define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088
476
+ # define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089
477
+
478
+ /* SEED ciphersuites from RFC4162 */
479
+ # define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096
480
+ # define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097
481
+ # define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098
482
+ # define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099
483
+ # define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A
484
+ # define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B
485
+
486
+ /* TLS v1.2 GCM ciphersuites from RFC5288 */
487
+ # define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C
488
+ # define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D
489
+ # define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E
490
+ # define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F
491
+ # define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0
492
+ # define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1
493
+ # define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2
494
+ # define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3
495
+ # define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4
496
+ # define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5
497
+ # define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6
498
+ # define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7
499
+
500
+ /*
501
+ * ECC ciphersuites from draft-ietf-tls-ecc-12.txt with changes soon to be in
502
+ * draft 13
503
+ */
504
+ # define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001
505
+ # define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002
506
+ # define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003
507
+ # define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004
508
+ # define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005
509
+
510
+ # define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006
511
+ # define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007
512
+ # define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008
513
+ # define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009
514
+ # define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A
515
+
516
+ # define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B
517
+ # define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C
518
+ # define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D
519
+ # define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E
520
+ # define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F
521
+
522
+ # define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010
523
+ # define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011
524
+ # define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012
525
+ # define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013
526
+ # define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014
527
+
528
+ # define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015
529
+ # define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016
530
+ # define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017
531
+ # define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018
532
+ # define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019
533
+
534
+ /* SRP ciphersuites from RFC 5054 */
535
+ # define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A
536
+ # define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B
537
+ # define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C
538
+ # define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D
539
+ # define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E
540
+ # define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F
541
+ # define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020
542
+ # define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021
543
+ # define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022
544
+
545
+ /* ECDH HMAC based ciphersuites from RFC5289 */
546
+
547
+ # define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023
548
+ # define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024
549
+ # define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025
550
+ # define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026
551
+ # define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027
552
+ # define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028
553
+ # define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029
554
+ # define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A
555
+
556
+ /* ECDH GCM based ciphersuites from RFC5289 */
557
+ # define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B
558
+ # define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C
559
+ # define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D
560
+ # define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E
561
+ # define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F
562
+ # define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030
563
+ # define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031
564
+ # define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032
565
+
566
+ /*
567
+ * XXX * Backward compatibility alert: + * Older versions of OpenSSL gave
568
+ * some DHE ciphers names with "EDH" + * instead of "DHE". Going forward, we
569
+ * should be using DHE + * everywhere, though we may indefinitely maintain
570
+ * aliases for users + * or configurations that used "EDH" +
571
+ */
572
+ # define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5"
573
+ # define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5"
574
+ # define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA"
575
+ # define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA"
576
+ # define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA"
577
+ # define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA"
578
+ # define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA"
579
+
580
+ /* AES ciphersuites from RFC3268 */
581
+ # define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA"
582
+ # define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA"
583
+ # define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA"
584
+ # define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA"
585
+ # define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA"
586
+ # define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA"
587
+
588
+ # define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA"
589
+ # define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA"
590
+ # define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA"
591
+ # define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA"
592
+ # define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA"
593
+ # define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA"
594
+
595
+ /* ECC ciphersuites from RFC4492 */
596
+ # define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA"
597
+ # define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA"
598
+ # define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA"
599
+ # define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA"
600
+ # define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA"
601
+
602
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA"
603
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA"
604
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA"
605
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA"
606
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA"
607
+
608
+ # define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA"
609
+ # define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA"
610
+ # define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA"
611
+ # define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA"
612
+ # define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA"
613
+
614
+ # define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA"
615
+ # define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA"
616
+ # define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA"
617
+ # define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA"
618
+ # define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA"
619
+
620
+ # define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA"
621
+ # define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA"
622
+ # define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA"
623
+ # define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA"
624
+ # define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA"
625
+
626
+ /* PSK ciphersuites from RFC 4279 */
627
+ # define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA"
628
+ # define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA"
629
+ # define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA"
630
+ # define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA"
631
+
632
+ /* SRP ciphersuite from RFC 5054 */
633
+ # define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA"
634
+ # define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA"
635
+ # define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA"
636
+ # define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA"
637
+ # define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA"
638
+ # define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA"
639
+ # define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA"
640
+ # define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA"
641
+ # define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA"
642
+
643
+ /* Camellia ciphersuites from RFC4132 */
644
+ # define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA"
645
+ # define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA"
646
+ # define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA"
647
+ # define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA"
648
+ # define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA"
649
+ # define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA"
650
+
651
+ # define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA"
652
+ # define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA"
653
+ # define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA"
654
+ # define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA"
655
+ # define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA"
656
+ # define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA"
657
+
658
+ /* SEED ciphersuites from RFC4162 */
659
+ # define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA"
660
+ # define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA"
661
+ # define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA"
662
+ # define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA"
663
+ # define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA"
664
+ # define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA"
665
+
666
+ /* TLS v1.2 ciphersuites */
667
+ # define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256"
668
+ # define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256"
669
+ # define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256"
670
+ # define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256"
671
+ # define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256"
672
+ # define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256"
673
+ # define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256"
674
+ # define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256"
675
+ # define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256"
676
+ # define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256"
677
+ # define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256"
678
+ # define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256"
679
+ # define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256"
680
+
681
+ /* TLS v1.2 GCM ciphersuites from RFC5288 */
682
+ # define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256"
683
+ # define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384"
684
+ # define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256"
685
+ # define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384"
686
+ # define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256"
687
+ # define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384"
688
+ # define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256"
689
+ # define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384"
690
+ # define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256"
691
+ # define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384"
692
+ # define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256"
693
+ # define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384"
694
+
695
+ /* ECDH HMAC based ciphersuites from RFC5289 */
696
+
697
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256"
698
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384"
699
+ # define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256"
700
+ # define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384"
701
+ # define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256"
702
+ # define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384"
703
+ # define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256"
704
+ # define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384"
705
+
706
+ /* ECDH GCM based ciphersuites from RFC5289 */
707
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256"
708
+ # define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384"
709
+ # define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256"
710
+ # define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384"
711
+ # define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256"
712
+ # define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384"
713
+ # define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256"
714
+ # define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384"
715
+
716
+ # define TLS_CT_RSA_SIGN 1
717
+ # define TLS_CT_DSS_SIGN 2
718
+ # define TLS_CT_RSA_FIXED_DH 3
719
+ # define TLS_CT_DSS_FIXED_DH 4
720
+ # define TLS_CT_ECDSA_SIGN 64
721
+ # define TLS_CT_RSA_FIXED_ECDH 65
722
+ # define TLS_CT_ECDSA_FIXED_ECDH 66
723
+ # define TLS_CT_GOST94_SIGN 21
724
+ # define TLS_CT_GOST01_SIGN 22
725
+ /*
726
+ * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see
727
+ * comment there)
728
+ */
729
+ # define TLS_CT_NUMBER 9
730
+
731
+ # define TLS1_FINISH_MAC_LENGTH 12
732
+
733
+ # define TLS_MD_MAX_CONST_SIZE 20
734
+ # define TLS_MD_CLIENT_FINISH_CONST "client finished"
735
+ # define TLS_MD_CLIENT_FINISH_CONST_SIZE 15
736
+ # define TLS_MD_SERVER_FINISH_CONST "server finished"
737
+ # define TLS_MD_SERVER_FINISH_CONST_SIZE 15
738
+ # define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
739
+ # define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
740
+ # define TLS_MD_KEY_EXPANSION_CONST "key expansion"
741
+ # define TLS_MD_KEY_EXPANSION_CONST_SIZE 13
742
+ # define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key"
743
+ # define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16
744
+ # define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
745
+ # define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
746
+ # define TLS_MD_IV_BLOCK_CONST "IV block"
747
+ # define TLS_MD_IV_BLOCK_CONST_SIZE 8
748
+ # define TLS_MD_MASTER_SECRET_CONST "master secret"
749
+ # define TLS_MD_MASTER_SECRET_CONST_SIZE 13
750
+
751
+ # ifdef CHARSET_EBCDIC
752
+ # undef TLS_MD_CLIENT_FINISH_CONST
753
+ /*
754
+ * client finished
755
+ */
756
+ # define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64"
757
+
758
+ # undef TLS_MD_SERVER_FINISH_CONST
759
+ /*
760
+ * server finished
761
+ */
762
+ # define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64"
763
+
764
+ # undef TLS_MD_SERVER_WRITE_KEY_CONST
765
+ /*
766
+ * server write key
767
+ */
768
+ # define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79"
769
+
770
+ # undef TLS_MD_KEY_EXPANSION_CONST
771
+ /*
772
+ * key expansion
773
+ */
774
+ # define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e"
775
+
776
+ # undef TLS_MD_CLIENT_WRITE_KEY_CONST
777
+ /*
778
+ * client write key
779
+ */
780
+ # define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79"
781
+
782
+ # undef TLS_MD_SERVER_WRITE_KEY_CONST
783
+ /*
784
+ * server write key
785
+ */
786
+ # define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79"
787
+
788
+ # undef TLS_MD_IV_BLOCK_CONST
789
+ /*
790
+ * IV block
791
+ */
792
+ # define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b"
793
+
794
+ # undef TLS_MD_MASTER_SECRET_CONST
795
+ /*
796
+ * master secret
797
+ */
798
+ # define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74"
799
+ # endif
800
+
801
+ /* TLS Session Ticket extension struct */
802
+ struct tls_session_ticket_ext_st {
803
+ unsigned short length;
804
+ void *data;
805
+ };
806
+
807
+ #ifdef __cplusplus
808
+ }
809
+ #endif
810
+ #endif