motion-openssl 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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