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,79 @@
1
+
2
+ #ifndef HEADER_COMP_H
3
+ # define HEADER_COMP_H
4
+
5
+ # include <openssl/crypto.h>
6
+
7
+ #ifdef __cplusplus
8
+ extern "C" {
9
+ #endif
10
+
11
+ typedef struct comp_ctx_st COMP_CTX;
12
+
13
+ typedef struct comp_method_st {
14
+ int type; /* NID for compression library */
15
+ const char *name; /* A text string to identify the library */
16
+ int (*init) (COMP_CTX *ctx);
17
+ void (*finish) (COMP_CTX *ctx);
18
+ int (*compress) (COMP_CTX *ctx,
19
+ unsigned char *out, unsigned int olen,
20
+ unsigned char *in, unsigned int ilen);
21
+ int (*expand) (COMP_CTX *ctx,
22
+ unsigned char *out, unsigned int olen,
23
+ unsigned char *in, unsigned int ilen);
24
+ /*
25
+ * The following two do NOTHING, but are kept for backward compatibility
26
+ */
27
+ long (*ctrl) (void);
28
+ long (*callback_ctrl) (void);
29
+ } COMP_METHOD;
30
+
31
+ struct comp_ctx_st {
32
+ COMP_METHOD *meth;
33
+ unsigned long compress_in;
34
+ unsigned long compress_out;
35
+ unsigned long expand_in;
36
+ unsigned long expand_out;
37
+ CRYPTO_EX_DATA ex_data;
38
+ };
39
+
40
+ COMP_CTX *COMP_CTX_new(COMP_METHOD *meth);
41
+ void COMP_CTX_free(COMP_CTX *ctx);
42
+ int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
43
+ unsigned char *in, int ilen);
44
+ int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
45
+ unsigned char *in, int ilen);
46
+ COMP_METHOD *COMP_rle(void);
47
+ COMP_METHOD *COMP_zlib(void);
48
+ void COMP_zlib_cleanup(void);
49
+
50
+ # ifdef HEADER_BIO_H
51
+ # ifdef ZLIB
52
+ BIO_METHOD *BIO_f_zlib(void);
53
+ # endif
54
+ # endif
55
+
56
+ /* BEGIN ERROR CODES */
57
+ /*
58
+ * The following lines are auto generated by the script mkerr.pl. Any changes
59
+ * made after this point may be overwritten when the script is next run.
60
+ */
61
+ void ERR_load_COMP_strings(void);
62
+
63
+ /* Error codes for the COMP functions. */
64
+
65
+ /* Function codes. */
66
+ # define COMP_F_BIO_ZLIB_FLUSH 99
67
+ # define COMP_F_BIO_ZLIB_NEW 100
68
+ # define COMP_F_BIO_ZLIB_READ 101
69
+ # define COMP_F_BIO_ZLIB_WRITE 102
70
+
71
+ /* Reason codes. */
72
+ # define COMP_R_ZLIB_DEFLATE_ERROR 99
73
+ # define COMP_R_ZLIB_INFLATE_ERROR 100
74
+ # define COMP_R_ZLIB_NOT_SUPPORTED 101
75
+
76
+ #ifdef __cplusplus
77
+ }
78
+ #endif
79
+ #endif
@@ -0,0 +1,267 @@
1
+ /* crypto/conf/conf.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
+ #ifndef HEADER_CONF_H
60
+ # define HEADER_CONF_H
61
+
62
+ # include <openssl/bio.h>
63
+ # include <openssl/lhash.h>
64
+ # include <openssl/stack.h>
65
+ # include <openssl/safestack.h>
66
+ # include <openssl/e_os2.h>
67
+
68
+ # include <openssl/ossl_typ.h>
69
+
70
+ #ifdef __cplusplus
71
+ extern "C" {
72
+ #endif
73
+
74
+ typedef struct {
75
+ char *section;
76
+ char *name;
77
+ char *value;
78
+ } CONF_VALUE;
79
+
80
+ DECLARE_STACK_OF(CONF_VALUE)
81
+ DECLARE_LHASH_OF(CONF_VALUE);
82
+
83
+ struct conf_st;
84
+ struct conf_method_st;
85
+ typedef struct conf_method_st CONF_METHOD;
86
+
87
+ struct conf_method_st {
88
+ const char *name;
89
+ CONF *(*create) (CONF_METHOD *meth);
90
+ int (*init) (CONF *conf);
91
+ int (*destroy) (CONF *conf);
92
+ int (*destroy_data) (CONF *conf);
93
+ int (*load_bio) (CONF *conf, BIO *bp, long *eline);
94
+ int (*dump) (const CONF *conf, BIO *bp);
95
+ int (*is_number) (const CONF *conf, char c);
96
+ int (*to_int) (const CONF *conf, char c);
97
+ int (*load) (CONF *conf, const char *name, long *eline);
98
+ };
99
+
100
+ /* Module definitions */
101
+
102
+ typedef struct conf_imodule_st CONF_IMODULE;
103
+ typedef struct conf_module_st CONF_MODULE;
104
+
105
+ DECLARE_STACK_OF(CONF_MODULE)
106
+ DECLARE_STACK_OF(CONF_IMODULE)
107
+
108
+ /* DSO module function typedefs */
109
+ typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf);
110
+ typedef void conf_finish_func (CONF_IMODULE *md);
111
+
112
+ # define CONF_MFLAGS_IGNORE_ERRORS 0x1
113
+ # define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2
114
+ # define CONF_MFLAGS_SILENT 0x4
115
+ # define CONF_MFLAGS_NO_DSO 0x8
116
+ # define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
117
+ # define CONF_MFLAGS_DEFAULT_SECTION 0x20
118
+
119
+ int CONF_set_default_method(CONF_METHOD *meth);
120
+ void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash);
121
+ LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file,
122
+ long *eline);
123
+ # ifndef OPENSSL_NO_FP_API
124
+ LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp,
125
+ long *eline);
126
+ # endif
127
+ LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp,
128
+ long *eline);
129
+ STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf,
130
+ const char *section);
131
+ char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group,
132
+ const char *name);
133
+ long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group,
134
+ const char *name);
135
+ void CONF_free(LHASH_OF(CONF_VALUE) *conf);
136
+ int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out);
137
+ int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out);
138
+
139
+ void OPENSSL_config(const char *config_name);
140
+ void OPENSSL_no_config(void);
141
+
142
+ /*
143
+ * New conf code. The semantics are different from the functions above. If
144
+ * that wasn't the case, the above functions would have been replaced
145
+ */
146
+
147
+ struct conf_st {
148
+ CONF_METHOD *meth;
149
+ void *meth_data;
150
+ LHASH_OF(CONF_VALUE) *data;
151
+ };
152
+
153
+ CONF *NCONF_new(CONF_METHOD *meth);
154
+ CONF_METHOD *NCONF_default(void);
155
+ CONF_METHOD *NCONF_WIN32(void);
156
+ # if 0 /* Just to give you an idea of what I have in
157
+ * mind */
158
+ CONF_METHOD *NCONF_XML(void);
159
+ # endif
160
+ void NCONF_free(CONF *conf);
161
+ void NCONF_free_data(CONF *conf);
162
+
163
+ int NCONF_load(CONF *conf, const char *file, long *eline);
164
+ # ifndef OPENSSL_NO_FP_API
165
+ int NCONF_load_fp(CONF *conf, FILE *fp, long *eline);
166
+ # endif
167
+ int NCONF_load_bio(CONF *conf, BIO *bp, long *eline);
168
+ STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf,
169
+ const char *section);
170
+ char *NCONF_get_string(const CONF *conf, const char *group, const char *name);
171
+ int NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
172
+ long *result);
173
+ int NCONF_dump_fp(const CONF *conf, FILE *out);
174
+ int NCONF_dump_bio(const CONF *conf, BIO *out);
175
+
176
+ # if 0 /* The following function has no error
177
+ * checking, and should therefore be avoided */
178
+ long NCONF_get_number(CONF *conf, char *group, char *name);
179
+ # else
180
+ # define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r)
181
+ # endif
182
+
183
+ /* Module functions */
184
+
185
+ int CONF_modules_load(const CONF *cnf, const char *appname,
186
+ unsigned long flags);
187
+ int CONF_modules_load_file(const char *filename, const char *appname,
188
+ unsigned long flags);
189
+ void CONF_modules_unload(int all);
190
+ void CONF_modules_finish(void);
191
+ void CONF_modules_free(void);
192
+ int CONF_module_add(const char *name, conf_init_func *ifunc,
193
+ conf_finish_func *ffunc);
194
+
195
+ const char *CONF_imodule_get_name(const CONF_IMODULE *md);
196
+ const char *CONF_imodule_get_value(const CONF_IMODULE *md);
197
+ void *CONF_imodule_get_usr_data(const CONF_IMODULE *md);
198
+ void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data);
199
+ CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md);
200
+ unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md);
201
+ void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags);
202
+ void *CONF_module_get_usr_data(CONF_MODULE *pmod);
203
+ void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data);
204
+
205
+ char *CONF_get1_default_config_file(void);
206
+
207
+ int CONF_parse_list(const char *list, int sep, int nospc,
208
+ int (*list_cb) (const char *elem, int len, void *usr),
209
+ void *arg);
210
+
211
+ void OPENSSL_load_builtin_modules(void);
212
+
213
+ /* BEGIN ERROR CODES */
214
+ /*
215
+ * The following lines are auto generated by the script mkerr.pl. Any changes
216
+ * made after this point may be overwritten when the script is next run.
217
+ */
218
+ void ERR_load_CONF_strings(void);
219
+
220
+ /* Error codes for the CONF functions. */
221
+
222
+ /* Function codes. */
223
+ # define CONF_F_CONF_DUMP_FP 104
224
+ # define CONF_F_CONF_LOAD 100
225
+ # define CONF_F_CONF_LOAD_BIO 102
226
+ # define CONF_F_CONF_LOAD_FP 103
227
+ # define CONF_F_CONF_MODULES_LOAD 116
228
+ # define CONF_F_CONF_PARSE_LIST 119
229
+ # define CONF_F_DEF_LOAD 120
230
+ # define CONF_F_DEF_LOAD_BIO 121
231
+ # define CONF_F_MODULE_INIT 115
232
+ # define CONF_F_MODULE_LOAD_DSO 117
233
+ # define CONF_F_MODULE_RUN 118
234
+ # define CONF_F_NCONF_DUMP_BIO 105
235
+ # define CONF_F_NCONF_DUMP_FP 106
236
+ # define CONF_F_NCONF_GET_NUMBER 107
237
+ # define CONF_F_NCONF_GET_NUMBER_E 112
238
+ # define CONF_F_NCONF_GET_SECTION 108
239
+ # define CONF_F_NCONF_GET_STRING 109
240
+ # define CONF_F_NCONF_LOAD 113
241
+ # define CONF_F_NCONF_LOAD_BIO 110
242
+ # define CONF_F_NCONF_LOAD_FP 114
243
+ # define CONF_F_NCONF_NEW 111
244
+ # define CONF_F_STR_COPY 101
245
+
246
+ /* Reason codes. */
247
+ # define CONF_R_ERROR_LOADING_DSO 110
248
+ # define CONF_R_LIST_CANNOT_BE_NULL 115
249
+ # define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100
250
+ # define CONF_R_MISSING_EQUAL_SIGN 101
251
+ # define CONF_R_MISSING_FINISH_FUNCTION 111
252
+ # define CONF_R_MISSING_INIT_FUNCTION 112
253
+ # define CONF_R_MODULE_INITIALIZATION_ERROR 109
254
+ # define CONF_R_NO_CLOSE_BRACE 102
255
+ # define CONF_R_NO_CONF 105
256
+ # define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106
257
+ # define CONF_R_NO_SECTION 107
258
+ # define CONF_R_NO_SUCH_FILE 114
259
+ # define CONF_R_NO_VALUE 108
260
+ # define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103
261
+ # define CONF_R_UNKNOWN_MODULE_NAME 113
262
+ # define CONF_R_VARIABLE_HAS_NO_VALUE 104
263
+
264
+ #ifdef __cplusplus
265
+ }
266
+ #endif
267
+ #endif
@@ -0,0 +1,89 @@
1
+ /* conf_api.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
+ #ifndef HEADER_CONF_API_H
60
+ # define HEADER_CONF_API_H
61
+
62
+ # include <openssl/lhash.h>
63
+ # include <openssl/conf.h>
64
+
65
+ #ifdef __cplusplus
66
+ extern "C" {
67
+ #endif
68
+
69
+ /* Up until OpenSSL 0.9.5a, this was new_section */
70
+ CONF_VALUE *_CONF_new_section(CONF *conf, const char *section);
71
+ /* Up until OpenSSL 0.9.5a, this was get_section */
72
+ CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section);
73
+ /* Up until OpenSSL 0.9.5a, this was CONF_get_section */
74
+ STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf,
75
+ const char *section);
76
+
77
+ int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value);
78
+ char *_CONF_get_string(const CONF *conf, const char *section,
79
+ const char *name);
80
+ long _CONF_get_number(const CONF *conf, const char *section,
81
+ const char *name);
82
+
83
+ int _CONF_new_data(CONF *conf);
84
+ void _CONF_free_data(CONF *conf);
85
+
86
+ #ifdef __cplusplus
87
+ }
88
+ #endif
89
+ #endif
@@ -0,0 +1,661 @@
1
+ /* crypto/crypto.h */
2
+ /* ====================================================================
3
+ * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ *
12
+ * 2. Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in
14
+ * the documentation and/or other materials provided with the
15
+ * distribution.
16
+ *
17
+ * 3. All advertising materials mentioning features or use of this
18
+ * software must display the following acknowledgment:
19
+ * "This product includes software developed by the OpenSSL Project
20
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
21
+ *
22
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23
+ * endorse or promote products derived from this software without
24
+ * prior written permission. For written permission, please contact
25
+ * openssl-core@openssl.org.
26
+ *
27
+ * 5. Products derived from this software may not be called "OpenSSL"
28
+ * nor may "OpenSSL" appear in their names without prior written
29
+ * permission of the OpenSSL Project.
30
+ *
31
+ * 6. Redistributions of any form whatsoever must retain the following
32
+ * acknowledgment:
33
+ * "This product includes software developed by the OpenSSL Project
34
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
35
+ *
36
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
48
+ * ====================================================================
49
+ *
50
+ * This product includes cryptographic software written by Eric Young
51
+ * (eay@cryptsoft.com). This product includes software written by Tim
52
+ * Hudson (tjh@cryptsoft.com).
53
+ *
54
+ */
55
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
56
+ * All rights reserved.
57
+ *
58
+ * This package is an SSL implementation written
59
+ * by Eric Young (eay@cryptsoft.com).
60
+ * The implementation was written so as to conform with Netscapes SSL.
61
+ *
62
+ * This library is free for commercial and non-commercial use as long as
63
+ * the following conditions are aheared to. The following conditions
64
+ * apply to all code found in this distribution, be it the RC4, RSA,
65
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
66
+ * included with this distribution is covered by the same copyright terms
67
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
68
+ *
69
+ * Copyright remains Eric Young's, and as such any Copyright notices in
70
+ * the code are not to be removed.
71
+ * If this package is used in a product, Eric Young should be given attribution
72
+ * as the author of the parts of the library used.
73
+ * This can be in the form of a textual message at program startup or
74
+ * in documentation (online or textual) provided with the package.
75
+ *
76
+ * Redistribution and use in source and binary forms, with or without
77
+ * modification, are permitted provided that the following conditions
78
+ * are met:
79
+ * 1. Redistributions of source code must retain the copyright
80
+ * notice, this list of conditions and the following disclaimer.
81
+ * 2. Redistributions in binary form must reproduce the above copyright
82
+ * notice, this list of conditions and the following disclaimer in the
83
+ * documentation and/or other materials provided with the distribution.
84
+ * 3. All advertising materials mentioning features or use of this software
85
+ * must display the following acknowledgement:
86
+ * "This product includes cryptographic software written by
87
+ * Eric Young (eay@cryptsoft.com)"
88
+ * The word 'cryptographic' can be left out if the rouines from the library
89
+ * being used are not cryptographic related :-).
90
+ * 4. If you include any Windows specific code (or a derivative thereof) from
91
+ * the apps directory (application code) you must include an acknowledgement:
92
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
93
+ *
94
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
95
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
96
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
97
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
98
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
99
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
100
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
101
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
102
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
103
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
104
+ * SUCH DAMAGE.
105
+ *
106
+ * The licence and distribution terms for any publically available version or
107
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
108
+ * copied and put under another distribution licence
109
+ * [including the GNU Public Licence.]
110
+ */
111
+ /* ====================================================================
112
+ * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
113
+ * ECDH support in OpenSSL originally developed by
114
+ * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115
+ */
116
+
117
+ #ifndef HEADER_CRYPTO_H
118
+ # define HEADER_CRYPTO_H
119
+
120
+ # include <stdlib.h>
121
+
122
+ # include <openssl/e_os2.h>
123
+
124
+ # ifndef OPENSSL_NO_FP_API
125
+ # include <stdio.h>
126
+ # endif
127
+
128
+ # include <openssl/stack.h>
129
+ # include <openssl/safestack.h>
130
+ # include <openssl/opensslv.h>
131
+ # include <openssl/ossl_typ.h>
132
+
133
+ # ifdef CHARSET_EBCDIC
134
+ # include <openssl/ebcdic.h>
135
+ # endif
136
+
137
+ /*
138
+ * Resolve problems on some operating systems with symbol names that clash
139
+ * one way or another
140
+ */
141
+ # include <openssl/symhacks.h>
142
+
143
+ #ifdef __cplusplus
144
+ extern "C" {
145
+ #endif
146
+
147
+ /* Backward compatibility to SSLeay */
148
+ /*
149
+ * This is more to be used to check the correct DLL is being used in the MS
150
+ * world.
151
+ */
152
+ # define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
153
+ # define SSLEAY_VERSION 0
154
+ /* #define SSLEAY_OPTIONS 1 no longer supported */
155
+ # define SSLEAY_CFLAGS 2
156
+ # define SSLEAY_BUILT_ON 3
157
+ # define SSLEAY_PLATFORM 4
158
+ # define SSLEAY_DIR 5
159
+
160
+ /* Already declared in ossl_typ.h */
161
+ # if 0
162
+ typedef struct crypto_ex_data_st CRYPTO_EX_DATA;
163
+ /* Called when a new object is created */
164
+ typedef int CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
165
+ int idx, long argl, void *argp);
166
+ /* Called when an object is free()ed */
167
+ typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
168
+ int idx, long argl, void *argp);
169
+ /* Called when we need to dup an object */
170
+ typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from,
171
+ void *from_d, int idx, long argl, void *argp);
172
+ # endif
173
+
174
+ /* A generic structure to pass assorted data in a expandable way */
175
+ typedef struct openssl_item_st {
176
+ int code;
177
+ void *value; /* Not used for flag attributes */
178
+ size_t value_size; /* Max size of value for output, length for
179
+ * input */
180
+ size_t *value_length; /* Returned length of value for output */
181
+ } OPENSSL_ITEM;
182
+
183
+ /*
184
+ * When changing the CRYPTO_LOCK_* list, be sure to maintin the text lock
185
+ * names in cryptlib.c
186
+ */
187
+
188
+ # define CRYPTO_LOCK_ERR 1
189
+ # define CRYPTO_LOCK_EX_DATA 2
190
+ # define CRYPTO_LOCK_X509 3
191
+ # define CRYPTO_LOCK_X509_INFO 4
192
+ # define CRYPTO_LOCK_X509_PKEY 5
193
+ # define CRYPTO_LOCK_X509_CRL 6
194
+ # define CRYPTO_LOCK_X509_REQ 7
195
+ # define CRYPTO_LOCK_DSA 8
196
+ # define CRYPTO_LOCK_RSA 9
197
+ # define CRYPTO_LOCK_EVP_PKEY 10
198
+ # define CRYPTO_LOCK_X509_STORE 11
199
+ # define CRYPTO_LOCK_SSL_CTX 12
200
+ # define CRYPTO_LOCK_SSL_CERT 13
201
+ # define CRYPTO_LOCK_SSL_SESSION 14
202
+ # define CRYPTO_LOCK_SSL_SESS_CERT 15
203
+ # define CRYPTO_LOCK_SSL 16
204
+ # define CRYPTO_LOCK_SSL_METHOD 17
205
+ # define CRYPTO_LOCK_RAND 18
206
+ # define CRYPTO_LOCK_RAND2 19
207
+ # define CRYPTO_LOCK_MALLOC 20
208
+ # define CRYPTO_LOCK_BIO 21
209
+ # define CRYPTO_LOCK_GETHOSTBYNAME 22
210
+ # define CRYPTO_LOCK_GETSERVBYNAME 23
211
+ # define CRYPTO_LOCK_READDIR 24
212
+ # define CRYPTO_LOCK_RSA_BLINDING 25
213
+ # define CRYPTO_LOCK_DH 26
214
+ # define CRYPTO_LOCK_MALLOC2 27
215
+ # define CRYPTO_LOCK_DSO 28
216
+ # define CRYPTO_LOCK_DYNLOCK 29
217
+ # define CRYPTO_LOCK_ENGINE 30
218
+ # define CRYPTO_LOCK_UI 31
219
+ # define CRYPTO_LOCK_ECDSA 32
220
+ # define CRYPTO_LOCK_EC 33
221
+ # define CRYPTO_LOCK_ECDH 34
222
+ # define CRYPTO_LOCK_BN 35
223
+ # define CRYPTO_LOCK_EC_PRE_COMP 36
224
+ # define CRYPTO_LOCK_STORE 37
225
+ # define CRYPTO_LOCK_COMP 38
226
+ # define CRYPTO_LOCK_FIPS 39
227
+ # define CRYPTO_LOCK_FIPS2 40
228
+ # define CRYPTO_NUM_LOCKS 41
229
+
230
+ # define CRYPTO_LOCK 1
231
+ # define CRYPTO_UNLOCK 2
232
+ # define CRYPTO_READ 4
233
+ # define CRYPTO_WRITE 8
234
+
235
+ # ifndef OPENSSL_NO_LOCKING
236
+ # ifndef CRYPTO_w_lock
237
+ # define CRYPTO_w_lock(type) \
238
+ CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
239
+ # define CRYPTO_w_unlock(type) \
240
+ CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
241
+ # define CRYPTO_r_lock(type) \
242
+ CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__)
243
+ # define CRYPTO_r_unlock(type) \
244
+ CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__)
245
+ # define CRYPTO_add(addr,amount,type) \
246
+ CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__)
247
+ # endif
248
+ # else
249
+ # define CRYPTO_w_lock(a)
250
+ # define CRYPTO_w_unlock(a)
251
+ # define CRYPTO_r_lock(a)
252
+ # define CRYPTO_r_unlock(a)
253
+ # define CRYPTO_add(a,b,c) ((*(a))+=(b))
254
+ # endif
255
+
256
+ /*
257
+ * Some applications as well as some parts of OpenSSL need to allocate and
258
+ * deallocate locks in a dynamic fashion. The following typedef makes this
259
+ * possible in a type-safe manner.
260
+ */
261
+ /* struct CRYPTO_dynlock_value has to be defined by the application. */
262
+ typedef struct {
263
+ int references;
264
+ struct CRYPTO_dynlock_value *data;
265
+ } CRYPTO_dynlock;
266
+
267
+ /*
268
+ * The following can be used to detect memory leaks in the SSLeay library. It
269
+ * used, it turns on malloc checking
270
+ */
271
+
272
+ # define CRYPTO_MEM_CHECK_OFF 0x0/* an enume */
273
+ # define CRYPTO_MEM_CHECK_ON 0x1/* a bit */
274
+ # define CRYPTO_MEM_CHECK_ENABLE 0x2/* a bit */
275
+ # define CRYPTO_MEM_CHECK_DISABLE 0x3/* an enume */
276
+
277
+ /*
278
+ * The following are bit values to turn on or off options connected to the
279
+ * malloc checking functionality
280
+ */
281
+
282
+ /* Adds time to the memory checking information */
283
+ # define V_CRYPTO_MDEBUG_TIME 0x1/* a bit */
284
+ /* Adds thread number to the memory checking information */
285
+ # define V_CRYPTO_MDEBUG_THREAD 0x2/* a bit */
286
+
287
+ # define V_CRYPTO_MDEBUG_ALL (V_CRYPTO_MDEBUG_TIME | V_CRYPTO_MDEBUG_THREAD)
288
+
289
+ /* predec of the BIO type */
290
+ typedef struct bio_st BIO_dummy;
291
+
292
+ struct crypto_ex_data_st {
293
+ STACK_OF(void) *sk;
294
+ /* gcc is screwing up this data structure :-( */
295
+ int dummy;
296
+ };
297
+ DECLARE_STACK_OF(void)
298
+
299
+ /*
300
+ * This stuff is basically class callback functions The current classes are
301
+ * SSL_CTX, SSL, SSL_SESSION, and a few more
302
+ */
303
+
304
+ typedef struct crypto_ex_data_func_st {
305
+ long argl; /* Arbitary long */
306
+ void *argp; /* Arbitary void * */
307
+ CRYPTO_EX_new *new_func;
308
+ CRYPTO_EX_free *free_func;
309
+ CRYPTO_EX_dup *dup_func;
310
+ } CRYPTO_EX_DATA_FUNCS;
311
+
312
+ DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS)
313
+
314
+ /*
315
+ * Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA
316
+ * entry.
317
+ */
318
+
319
+ # define CRYPTO_EX_INDEX_BIO 0
320
+ # define CRYPTO_EX_INDEX_SSL 1
321
+ # define CRYPTO_EX_INDEX_SSL_CTX 2
322
+ # define CRYPTO_EX_INDEX_SSL_SESSION 3
323
+ # define CRYPTO_EX_INDEX_X509_STORE 4
324
+ # define CRYPTO_EX_INDEX_X509_STORE_CTX 5
325
+ # define CRYPTO_EX_INDEX_RSA 6
326
+ # define CRYPTO_EX_INDEX_DSA 7
327
+ # define CRYPTO_EX_INDEX_DH 8
328
+ # define CRYPTO_EX_INDEX_ENGINE 9
329
+ # define CRYPTO_EX_INDEX_X509 10
330
+ # define CRYPTO_EX_INDEX_UI 11
331
+ # define CRYPTO_EX_INDEX_ECDSA 12
332
+ # define CRYPTO_EX_INDEX_ECDH 13
333
+ # define CRYPTO_EX_INDEX_COMP 14
334
+ # define CRYPTO_EX_INDEX_STORE 15
335
+
336
+ /*
337
+ * Dynamically assigned indexes start from this value (don't use directly,
338
+ * use via CRYPTO_ex_data_new_class).
339
+ */
340
+ # define CRYPTO_EX_INDEX_USER 100
341
+
342
+ /*
343
+ * This is the default callbacks, but we can have others as well: this is
344
+ * needed in Win32 where the application malloc and the library malloc may
345
+ * not be the same.
346
+ */
347
+ # define CRYPTO_malloc_init() CRYPTO_set_mem_functions(\
348
+ malloc, realloc, free)
349
+
350
+ # if defined CRYPTO_MDEBUG_ALL || defined CRYPTO_MDEBUG_TIME || defined CRYPTO_MDEBUG_THREAD
351
+ # ifndef CRYPTO_MDEBUG /* avoid duplicate #define */
352
+ # define CRYPTO_MDEBUG
353
+ # endif
354
+ # endif
355
+
356
+ /*
357
+ * Set standard debugging functions (not done by default unless CRYPTO_MDEBUG
358
+ * is defined)
359
+ */
360
+ # define CRYPTO_malloc_debug_init() do {\
361
+ CRYPTO_set_mem_debug_functions(\
362
+ CRYPTO_dbg_malloc,\
363
+ CRYPTO_dbg_realloc,\
364
+ CRYPTO_dbg_free,\
365
+ CRYPTO_dbg_set_options,\
366
+ CRYPTO_dbg_get_options);\
367
+ } while(0)
368
+
369
+ int CRYPTO_mem_ctrl(int mode);
370
+ int CRYPTO_is_mem_check_on(void);
371
+
372
+ /* for applications */
373
+ # define MemCheck_start() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON)
374
+ # define MemCheck_stop() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF)
375
+
376
+ /* for library-internal use */
377
+ # define MemCheck_on() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE)
378
+ # define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE)
379
+ # define is_MemCheck_on() CRYPTO_is_mem_check_on()
380
+
381
+ # define OPENSSL_malloc(num) CRYPTO_malloc((int)num,__FILE__,__LINE__)
382
+ # define OPENSSL_strdup(str) CRYPTO_strdup((str),__FILE__,__LINE__)
383
+ # define OPENSSL_realloc(addr,num) \
384
+ CRYPTO_realloc((char *)addr,(int)num,__FILE__,__LINE__)
385
+ # define OPENSSL_realloc_clean(addr,old_num,num) \
386
+ CRYPTO_realloc_clean(addr,old_num,num,__FILE__,__LINE__)
387
+ # define OPENSSL_remalloc(addr,num) \
388
+ CRYPTO_remalloc((char **)addr,(int)num,__FILE__,__LINE__)
389
+ # define OPENSSL_freeFunc CRYPTO_free
390
+ # define OPENSSL_free(addr) CRYPTO_free(addr)
391
+
392
+ # define OPENSSL_malloc_locked(num) \
393
+ CRYPTO_malloc_locked((int)num,__FILE__,__LINE__)
394
+ # define OPENSSL_free_locked(addr) CRYPTO_free_locked(addr)
395
+
396
+ const char *SSLeay_version(int type);
397
+ unsigned long SSLeay(void);
398
+
399
+ int OPENSSL_issetugid(void);
400
+
401
+ /* An opaque type representing an implementation of "ex_data" support */
402
+ typedef struct st_CRYPTO_EX_DATA_IMPL CRYPTO_EX_DATA_IMPL;
403
+ /* Return an opaque pointer to the current "ex_data" implementation */
404
+ const CRYPTO_EX_DATA_IMPL *CRYPTO_get_ex_data_implementation(void);
405
+ /* Sets the "ex_data" implementation to be used (if it's not too late) */
406
+ int CRYPTO_set_ex_data_implementation(const CRYPTO_EX_DATA_IMPL *i);
407
+ /* Get a new "ex_data" class, and return the corresponding "class_index" */
408
+ int CRYPTO_ex_data_new_class(void);
409
+ /* Within a given class, get/register a new index */
410
+ int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
411
+ CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func,
412
+ CRYPTO_EX_free *free_func);
413
+ /*
414
+ * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a
415
+ * given class (invokes whatever per-class callbacks are applicable)
416
+ */
417
+ int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
418
+ int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
419
+ CRYPTO_EX_DATA *from);
420
+ void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
421
+ /*
422
+ * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular
423
+ * index (relative to the class type involved)
424
+ */
425
+ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
426
+ void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
427
+ /*
428
+ * This function cleans up all "ex_data" state. It mustn't be called under
429
+ * potential race-conditions.
430
+ */
431
+ void CRYPTO_cleanup_all_ex_data(void);
432
+
433
+ int CRYPTO_get_new_lockid(char *name);
434
+
435
+ int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */
436
+ void CRYPTO_lock(int mode, int type, const char *file, int line);
437
+ void CRYPTO_set_locking_callback(void (*func) (int mode, int type,
438
+ const char *file, int line));
439
+ void (*CRYPTO_get_locking_callback(void)) (int mode, int type,
440
+ const char *file, int line);
441
+ void CRYPTO_set_add_lock_callback(int (*func)
442
+ (int *num, int mount, int type,
443
+ const char *file, int line));
444
+ int (*CRYPTO_get_add_lock_callback(void)) (int *num, int mount, int type,
445
+ const char *file, int line);
446
+
447
+ /* Don't use this structure directly. */
448
+ typedef struct crypto_threadid_st {
449
+ void *ptr;
450
+ unsigned long val;
451
+ } CRYPTO_THREADID;
452
+ /* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
453
+ void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val);
454
+ void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr);
455
+ int CRYPTO_THREADID_set_callback(void (*threadid_func) (CRYPTO_THREADID *));
456
+ void (*CRYPTO_THREADID_get_callback(void)) (CRYPTO_THREADID *);
457
+ void CRYPTO_THREADID_current(CRYPTO_THREADID *id);
458
+ int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b);
459
+ void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src);
460
+ unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id);
461
+ # ifndef OPENSSL_NO_DEPRECATED
462
+ void CRYPTO_set_id_callback(unsigned long (*func) (void));
463
+ unsigned long (*CRYPTO_get_id_callback(void)) (void);
464
+ unsigned long CRYPTO_thread_id(void);
465
+ # endif
466
+
467
+ const char *CRYPTO_get_lock_name(int type);
468
+ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
469
+ int line);
470
+
471
+ int CRYPTO_get_new_dynlockid(void);
472
+ void CRYPTO_destroy_dynlockid(int i);
473
+ struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i);
474
+ void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value
475
+ *(*dyn_create_function) (const char
476
+ *file,
477
+ int line));
478
+ void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)
479
+ (int mode,
480
+ struct CRYPTO_dynlock_value *l,
481
+ const char *file, int line));
482
+ void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)
483
+ (struct CRYPTO_dynlock_value *l,
484
+ const char *file, int line));
485
+ struct CRYPTO_dynlock_value
486
+ *(*CRYPTO_get_dynlock_create_callback(void)) (const char *file, int line);
487
+ void (*CRYPTO_get_dynlock_lock_callback(void)) (int mode,
488
+ struct CRYPTO_dynlock_value
489
+ *l, const char *file,
490
+ int line);
491
+ void (*CRYPTO_get_dynlock_destroy_callback(void)) (struct CRYPTO_dynlock_value
492
+ *l, const char *file,
493
+ int line);
494
+
495
+ /*
496
+ * CRYPTO_set_mem_functions includes CRYPTO_set_locked_mem_functions -- call
497
+ * the latter last if you need different functions
498
+ */
499
+ int CRYPTO_set_mem_functions(void *(*m) (size_t), void *(*r) (void *, size_t),
500
+ void (*f) (void *));
501
+ int CRYPTO_set_locked_mem_functions(void *(*m) (size_t),
502
+ void (*free_func) (void *));
503
+ int CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int),
504
+ void *(*r) (void *, size_t, const char *,
505
+ int), void (*f) (void *));
506
+ int CRYPTO_set_locked_mem_ex_functions(void *(*m) (size_t, const char *, int),
507
+ void (*free_func) (void *));
508
+ int CRYPTO_set_mem_debug_functions(void (*m)
509
+ (void *, int, const char *, int, int),
510
+ void (*r) (void *, void *, int,
511
+ const char *, int, int),
512
+ void (*f) (void *, int), void (*so) (long),
513
+ long (*go) (void));
514
+ void CRYPTO_get_mem_functions(void *(**m) (size_t),
515
+ void *(**r) (void *, size_t),
516
+ void (**f) (void *));
517
+ void CRYPTO_get_locked_mem_functions(void *(**m) (size_t),
518
+ void (**f) (void *));
519
+ void CRYPTO_get_mem_ex_functions(void *(**m) (size_t, const char *, int),
520
+ void *(**r) (void *, size_t, const char *,
521
+ int), void (**f) (void *));
522
+ void CRYPTO_get_locked_mem_ex_functions(void
523
+ *(**m) (size_t, const char *, int),
524
+ void (**f) (void *));
525
+ void CRYPTO_get_mem_debug_functions(void (**m)
526
+ (void *, int, const char *, int, int),
527
+ void (**r) (void *, void *, int,
528
+ const char *, int, int),
529
+ void (**f) (void *, int),
530
+ void (**so) (long), long (**go) (void));
531
+
532
+ void *CRYPTO_malloc_locked(int num, const char *file, int line);
533
+ void CRYPTO_free_locked(void *ptr);
534
+ void *CRYPTO_malloc(int num, const char *file, int line);
535
+ char *CRYPTO_strdup(const char *str, const char *file, int line);
536
+ void CRYPTO_free(void *ptr);
537
+ void *CRYPTO_realloc(void *addr, int num, const char *file, int line);
538
+ void *CRYPTO_realloc_clean(void *addr, int old_num, int num, const char *file,
539
+ int line);
540
+ void *CRYPTO_remalloc(void *addr, int num, const char *file, int line);
541
+
542
+ void OPENSSL_cleanse(void *ptr, size_t len);
543
+
544
+ void CRYPTO_set_mem_debug_options(long bits);
545
+ long CRYPTO_get_mem_debug_options(void);
546
+
547
+ # define CRYPTO_push_info(info) \
548
+ CRYPTO_push_info_(info, __FILE__, __LINE__);
549
+ int CRYPTO_push_info_(const char *info, const char *file, int line);
550
+ int CRYPTO_pop_info(void);
551
+ int CRYPTO_remove_all_info(void);
552
+
553
+ /*
554
+ * Default debugging functions (enabled by CRYPTO_malloc_debug_init() macro;
555
+ * used as default in CRYPTO_MDEBUG compilations):
556
+ */
557
+ /*-
558
+ * The last argument has the following significance:
559
+ *
560
+ * 0: called before the actual memory allocation has taken place
561
+ * 1: called after the actual memory allocation has taken place
562
+ */
563
+ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line,
564
+ int before_p);
565
+ void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num, const char *file,
566
+ int line, int before_p);
567
+ void CRYPTO_dbg_free(void *addr, int before_p);
568
+ /*-
569
+ * Tell the debugging code about options. By default, the following values
570
+ * apply:
571
+ *
572
+ * 0: Clear all options.
573
+ * V_CRYPTO_MDEBUG_TIME (1): Set the "Show Time" option.
574
+ * V_CRYPTO_MDEBUG_THREAD (2): Set the "Show Thread Number" option.
575
+ * V_CRYPTO_MDEBUG_ALL (3): 1 + 2
576
+ */
577
+ void CRYPTO_dbg_set_options(long bits);
578
+ long CRYPTO_dbg_get_options(void);
579
+
580
+ # ifndef OPENSSL_NO_FP_API
581
+ void CRYPTO_mem_leaks_fp(FILE *);
582
+ # endif
583
+ void CRYPTO_mem_leaks(struct bio_st *bio);
584
+ /* unsigned long order, char *file, int line, int num_bytes, char *addr */
585
+ typedef void *CRYPTO_MEM_LEAK_CB (unsigned long, const char *, int, int,
586
+ void *);
587
+ void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb);
588
+
589
+ /* die if we have to */
590
+ void OpenSSLDie(const char *file, int line, const char *assertion);
591
+ # define OPENSSL_assert(e) (void)((e) ? 0 : (OpenSSLDie(__FILE__, __LINE__, #e),1))
592
+
593
+ unsigned long *OPENSSL_ia32cap_loc(void);
594
+ # define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
595
+ int OPENSSL_isservice(void);
596
+
597
+ int FIPS_mode(void);
598
+ int FIPS_mode_set(int r);
599
+
600
+ void OPENSSL_init(void);
601
+
602
+ # define fips_md_init(alg) fips_md_init_ctx(alg, alg)
603
+
604
+ # ifdef OPENSSL_FIPS
605
+ # define fips_md_init_ctx(alg, cx) \
606
+ int alg##_Init(cx##_CTX *c) \
607
+ { \
608
+ if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \
609
+ "Low level API call to digest " #alg " forbidden in FIPS mode!"); \
610
+ return private_##alg##_Init(c); \
611
+ } \
612
+ int private_##alg##_Init(cx##_CTX *c)
613
+
614
+ # define fips_cipher_abort(alg) \
615
+ if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \
616
+ "Low level API call to cipher " #alg " forbidden in FIPS mode!")
617
+
618
+ # else
619
+ # define fips_md_init_ctx(alg, cx) \
620
+ int alg##_Init(cx##_CTX *c)
621
+ # define fips_cipher_abort(alg) while(0)
622
+ # endif
623
+
624
+ /*
625
+ * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal.
626
+ * It takes an amount of time dependent on |len|, but independent of the
627
+ * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
628
+ * into a defined order as the return value when a != b is undefined, other
629
+ * than to be non-zero.
630
+ */
631
+ int CRYPTO_memcmp(const void *a, const void *b, size_t len);
632
+
633
+ /* BEGIN ERROR CODES */
634
+ /*
635
+ * The following lines are auto generated by the script mkerr.pl. Any changes
636
+ * made after this point may be overwritten when the script is next run.
637
+ */
638
+ void ERR_load_CRYPTO_strings(void);
639
+
640
+ /* Error codes for the CRYPTO functions. */
641
+
642
+ /* Function codes. */
643
+ # define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100
644
+ # define CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID 103
645
+ # define CRYPTO_F_CRYPTO_GET_NEW_LOCKID 101
646
+ # define CRYPTO_F_CRYPTO_SET_EX_DATA 102
647
+ # define CRYPTO_F_DEF_ADD_INDEX 104
648
+ # define CRYPTO_F_DEF_GET_CLASS 105
649
+ # define CRYPTO_F_FIPS_MODE_SET 109
650
+ # define CRYPTO_F_INT_DUP_EX_DATA 106
651
+ # define CRYPTO_F_INT_FREE_EX_DATA 107
652
+ # define CRYPTO_F_INT_NEW_EX_DATA 108
653
+
654
+ /* Reason codes. */
655
+ # define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101
656
+ # define CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK 100
657
+
658
+ #ifdef __cplusplus
659
+ }
660
+ #endif
661
+ #endif