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,197 @@
1
+ /* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */
2
+ /*
3
+ * Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project
4
+ * 2000. project 2000.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 2000 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * licensing@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+
60
+ /*
61
+ ** 19990701 VRS Started.
62
+ */
63
+
64
+ #ifndef KSSL_H
65
+ # define KSSL_H
66
+
67
+ # include <openssl/opensslconf.h>
68
+
69
+ # ifndef OPENSSL_NO_KRB5
70
+
71
+ # include <stdio.h>
72
+ # include <ctype.h>
73
+ # include <krb5.h>
74
+ # ifdef OPENSSL_SYS_WIN32
75
+ /*
76
+ * These can sometimes get redefined indirectly by krb5 header files after
77
+ * they get undefed in ossl_typ.h
78
+ */
79
+ # undef X509_NAME
80
+ # undef X509_EXTENSIONS
81
+ # undef OCSP_REQUEST
82
+ # undef OCSP_RESPONSE
83
+ # endif
84
+
85
+ #ifdef __cplusplus
86
+ extern "C" {
87
+ #endif
88
+
89
+ /*
90
+ * Depending on which KRB5 implementation used, some types from
91
+ * the other may be missing. Resolve that here and now
92
+ */
93
+ # ifdef KRB5_HEIMDAL
94
+ typedef unsigned char krb5_octet;
95
+ # define FAR
96
+ # else
97
+
98
+ # ifndef FAR
99
+ # define FAR
100
+ # endif
101
+
102
+ # endif
103
+
104
+ /*-
105
+ * Uncomment this to debug kssl problems or
106
+ * to trace usage of the Kerberos session key
107
+ *
108
+ * #define KSSL_DEBUG
109
+ */
110
+
111
+ # ifndef KRB5SVC
112
+ # define KRB5SVC "host"
113
+ # endif
114
+
115
+ # ifndef KRB5KEYTAB
116
+ # define KRB5KEYTAB "/etc/krb5.keytab"
117
+ # endif
118
+
119
+ # ifndef KRB5SENDAUTH
120
+ # define KRB5SENDAUTH 1
121
+ # endif
122
+
123
+ # ifndef KRB5CHECKAUTH
124
+ # define KRB5CHECKAUTH 1
125
+ # endif
126
+
127
+ # ifndef KSSL_CLOCKSKEW
128
+ # define KSSL_CLOCKSKEW 300;
129
+ # endif
130
+
131
+ # define KSSL_ERR_MAX 255
132
+ typedef struct kssl_err_st {
133
+ int reason;
134
+ char text[KSSL_ERR_MAX + 1];
135
+ } KSSL_ERR;
136
+
137
+ /*- Context for passing
138
+ * (1) Kerberos session key to SSL, and
139
+ * (2) Config data between application and SSL lib
140
+ */
141
+ typedef struct kssl_ctx_st {
142
+ /* used by: disposition: */
143
+ char *service_name; /* C,S default ok (kssl) */
144
+ char *service_host; /* C input, REQUIRED */
145
+ char *client_princ; /* S output from krb5 ticket */
146
+ char *keytab_file; /* S NULL (/etc/krb5.keytab) */
147
+ char *cred_cache; /* C NULL (default) */
148
+ krb5_enctype enctype;
149
+ int length;
150
+ krb5_octet FAR *key;
151
+ } KSSL_CTX;
152
+
153
+ # define KSSL_CLIENT 1
154
+ # define KSSL_SERVER 2
155
+ # define KSSL_SERVICE 3
156
+ # define KSSL_KEYTAB 4
157
+
158
+ # define KSSL_CTX_OK 0
159
+ # define KSSL_CTX_ERR 1
160
+ # define KSSL_NOMEM 2
161
+
162
+ /* Public (for use by applications that use OpenSSL with Kerberos 5 support */
163
+ krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text);
164
+ KSSL_CTX *kssl_ctx_new(void);
165
+ KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx);
166
+ void kssl_ctx_show(KSSL_CTX *kssl_ctx);
167
+ krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which,
168
+ krb5_data *realm, krb5_data *entity,
169
+ int nentities);
170
+ krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp,
171
+ krb5_data *authenp, KSSL_ERR *kssl_err);
172
+ krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata,
173
+ krb5_ticket_times *ttimes, KSSL_ERR *kssl_err);
174
+ krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session);
175
+ void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text);
176
+ void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data);
177
+ krb5_error_code kssl_build_principal_2(krb5_context context,
178
+ krb5_principal *princ, int rlen,
179
+ const char *realm, int slen,
180
+ const char *svc, int hlen,
181
+ const char *host);
182
+ krb5_error_code kssl_validate_times(krb5_timestamp atime,
183
+ krb5_ticket_times *ttimes);
184
+ krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp,
185
+ krb5_timestamp *atimep,
186
+ KSSL_ERR *kssl_err);
187
+ unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn);
188
+
189
+ void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx);
190
+ KSSL_CTX *SSL_get0_kssl_ctx(SSL *s);
191
+ char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx);
192
+
193
+ #ifdef __cplusplus
194
+ }
195
+ #endif
196
+ # endif /* OPENSSL_NO_KRB5 */
197
+ #endif /* KSSL_H */
@@ -0,0 +1,240 @@
1
+ /* crypto/lhash/lhash.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
+ /*
60
+ * Header for dynamic hash table routines Author - Eric Young
61
+ */
62
+
63
+ #ifndef HEADER_LHASH_H
64
+ # define HEADER_LHASH_H
65
+
66
+ # include <openssl/e_os2.h>
67
+ # ifndef OPENSSL_NO_FP_API
68
+ # include <stdio.h>
69
+ # endif
70
+
71
+ # ifndef OPENSSL_NO_BIO
72
+ # include <openssl/bio.h>
73
+ # endif
74
+
75
+ #ifdef __cplusplus
76
+ extern "C" {
77
+ #endif
78
+
79
+ typedef struct lhash_node_st {
80
+ void *data;
81
+ struct lhash_node_st *next;
82
+ # ifndef OPENSSL_NO_HASH_COMP
83
+ unsigned long hash;
84
+ # endif
85
+ } LHASH_NODE;
86
+
87
+ typedef int (*LHASH_COMP_FN_TYPE) (const void *, const void *);
88
+ typedef unsigned long (*LHASH_HASH_FN_TYPE) (const void *);
89
+ typedef void (*LHASH_DOALL_FN_TYPE) (void *);
90
+ typedef void (*LHASH_DOALL_ARG_FN_TYPE) (void *, void *);
91
+
92
+ /*
93
+ * Macros for declaring and implementing type-safe wrappers for LHASH
94
+ * callbacks. This way, callbacks can be provided to LHASH structures without
95
+ * function pointer casting and the macro-defined callbacks provide
96
+ * per-variable casting before deferring to the underlying type-specific
97
+ * callbacks. NB: It is possible to place a "static" in front of both the
98
+ * DECLARE and IMPLEMENT macros if the functions are strictly internal.
99
+ */
100
+
101
+ /* First: "hash" functions */
102
+ # define DECLARE_LHASH_HASH_FN(name, o_type) \
103
+ unsigned long name##_LHASH_HASH(const void *);
104
+ # define IMPLEMENT_LHASH_HASH_FN(name, o_type) \
105
+ unsigned long name##_LHASH_HASH(const void *arg) { \
106
+ const o_type *a = arg; \
107
+ return name##_hash(a); }
108
+ # define LHASH_HASH_FN(name) name##_LHASH_HASH
109
+
110
+ /* Second: "compare" functions */
111
+ # define DECLARE_LHASH_COMP_FN(name, o_type) \
112
+ int name##_LHASH_COMP(const void *, const void *);
113
+ # define IMPLEMENT_LHASH_COMP_FN(name, o_type) \
114
+ int name##_LHASH_COMP(const void *arg1, const void *arg2) { \
115
+ const o_type *a = arg1; \
116
+ const o_type *b = arg2; \
117
+ return name##_cmp(a,b); }
118
+ # define LHASH_COMP_FN(name) name##_LHASH_COMP
119
+
120
+ /* Third: "doall" functions */
121
+ # define DECLARE_LHASH_DOALL_FN(name, o_type) \
122
+ void name##_LHASH_DOALL(void *);
123
+ # define IMPLEMENT_LHASH_DOALL_FN(name, o_type) \
124
+ void name##_LHASH_DOALL(void *arg) { \
125
+ o_type *a = arg; \
126
+ name##_doall(a); }
127
+ # define LHASH_DOALL_FN(name) name##_LHASH_DOALL
128
+
129
+ /* Fourth: "doall_arg" functions */
130
+ # define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
131
+ void name##_LHASH_DOALL_ARG(void *, void *);
132
+ # define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
133
+ void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \
134
+ o_type *a = arg1; \
135
+ a_type *b = arg2; \
136
+ name##_doall_arg(a, b); }
137
+ # define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG
138
+
139
+ typedef struct lhash_st {
140
+ LHASH_NODE **b;
141
+ LHASH_COMP_FN_TYPE comp;
142
+ LHASH_HASH_FN_TYPE hash;
143
+ unsigned int num_nodes;
144
+ unsigned int num_alloc_nodes;
145
+ unsigned int p;
146
+ unsigned int pmax;
147
+ unsigned long up_load; /* load times 256 */
148
+ unsigned long down_load; /* load times 256 */
149
+ unsigned long num_items;
150
+ unsigned long num_expands;
151
+ unsigned long num_expand_reallocs;
152
+ unsigned long num_contracts;
153
+ unsigned long num_contract_reallocs;
154
+ unsigned long num_hash_calls;
155
+ unsigned long num_comp_calls;
156
+ unsigned long num_insert;
157
+ unsigned long num_replace;
158
+ unsigned long num_delete;
159
+ unsigned long num_no_delete;
160
+ unsigned long num_retrieve;
161
+ unsigned long num_retrieve_miss;
162
+ unsigned long num_hash_comps;
163
+ int error;
164
+ } _LHASH; /* Do not use _LHASH directly, use LHASH_OF
165
+ * and friends */
166
+
167
+ # define LH_LOAD_MULT 256
168
+
169
+ /*
170
+ * Indicates a malloc() error in the last call, this is only bad in
171
+ * lh_insert().
172
+ */
173
+ # define lh_error(lh) ((lh)->error)
174
+
175
+ _LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c);
176
+ void lh_free(_LHASH *lh);
177
+ void *lh_insert(_LHASH *lh, void *data);
178
+ void *lh_delete(_LHASH *lh, const void *data);
179
+ void *lh_retrieve(_LHASH *lh, const void *data);
180
+ void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func);
181
+ void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg);
182
+ unsigned long lh_strhash(const char *c);
183
+ unsigned long lh_num_items(const _LHASH *lh);
184
+
185
+ # ifndef OPENSSL_NO_FP_API
186
+ void lh_stats(const _LHASH *lh, FILE *out);
187
+ void lh_node_stats(const _LHASH *lh, FILE *out);
188
+ void lh_node_usage_stats(const _LHASH *lh, FILE *out);
189
+ # endif
190
+
191
+ # ifndef OPENSSL_NO_BIO
192
+ void lh_stats_bio(const _LHASH *lh, BIO *out);
193
+ void lh_node_stats_bio(const _LHASH *lh, BIO *out);
194
+ void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out);
195
+ # endif
196
+
197
+ /* Type checking... */
198
+
199
+ # define LHASH_OF(type) struct lhash_st_##type
200
+
201
+ # define DECLARE_LHASH_OF(type) LHASH_OF(type) { int dummy; }
202
+
203
+ # define CHECKED_LHASH_OF(type,lh) \
204
+ ((_LHASH *)CHECKED_PTR_OF(LHASH_OF(type),lh))
205
+
206
+ /* Define wrapper functions. */
207
+ # define LHM_lh_new(type, name) \
208
+ ((LHASH_OF(type) *)lh_new(LHASH_HASH_FN(name), LHASH_COMP_FN(name)))
209
+ # define LHM_lh_error(type, lh) \
210
+ lh_error(CHECKED_LHASH_OF(type,lh))
211
+ # define LHM_lh_insert(type, lh, inst) \
212
+ ((type *)lh_insert(CHECKED_LHASH_OF(type, lh), \
213
+ CHECKED_PTR_OF(type, inst)))
214
+ # define LHM_lh_retrieve(type, lh, inst) \
215
+ ((type *)lh_retrieve(CHECKED_LHASH_OF(type, lh), \
216
+ CHECKED_PTR_OF(type, inst)))
217
+ # define LHM_lh_delete(type, lh, inst) \
218
+ ((type *)lh_delete(CHECKED_LHASH_OF(type, lh), \
219
+ CHECKED_PTR_OF(type, inst)))
220
+ # define LHM_lh_doall(type, lh,fn) lh_doall(CHECKED_LHASH_OF(type, lh), fn)
221
+ # define LHM_lh_doall_arg(type, lh, fn, arg_type, arg) \
222
+ lh_doall_arg(CHECKED_LHASH_OF(type, lh), fn, CHECKED_PTR_OF(arg_type, arg))
223
+ # define LHM_lh_num_items(type, lh) lh_num_items(CHECKED_LHASH_OF(type, lh))
224
+ # define LHM_lh_down_load(type, lh) (CHECKED_LHASH_OF(type, lh)->down_load)
225
+ # define LHM_lh_node_stats_bio(type, lh, out) \
226
+ lh_node_stats_bio(CHECKED_LHASH_OF(type, lh), out)
227
+ # define LHM_lh_node_usage_stats_bio(type, lh, out) \
228
+ lh_node_usage_stats_bio(CHECKED_LHASH_OF(type, lh), out)
229
+ # define LHM_lh_stats_bio(type, lh, out) \
230
+ lh_stats_bio(CHECKED_LHASH_OF(type, lh), out)
231
+ # define LHM_lh_free(type, lh) lh_free(CHECKED_LHASH_OF(type, lh))
232
+
233
+ DECLARE_LHASH_OF(OPENSSL_STRING);
234
+ DECLARE_LHASH_OF(OPENSSL_CSTRING);
235
+
236
+ #ifdef __cplusplus
237
+ }
238
+ #endif
239
+
240
+ #endif
Binary file
Binary file
Binary file
@@ -0,0 +1,119 @@
1
+ /* crypto/md4/md4.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_MD4_H
60
+ # define HEADER_MD4_H
61
+
62
+ # include <openssl/e_os2.h>
63
+ # include <stddef.h>
64
+
65
+ #ifdef __cplusplus
66
+ extern "C" {
67
+ #endif
68
+
69
+ # ifdef OPENSSL_NO_MD4
70
+ # error MD4 is disabled.
71
+ # endif
72
+
73
+ /*-
74
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
75
+ * ! MD4_LONG has to be at least 32 bits wide. If it's wider, then !
76
+ * ! MD4_LONG_LOG2 has to be defined along. !
77
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
78
+ */
79
+
80
+ # if defined(__LP32__)
81
+ # define MD4_LONG unsigned long
82
+ # elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
83
+ # define MD4_LONG unsigned long
84
+ # define MD4_LONG_LOG2 3
85
+ /*
86
+ * _CRAY note. I could declare short, but I have no idea what impact
87
+ * does it have on performance on none-T3E machines. I could declare
88
+ * int, but at least on C90 sizeof(int) can be chosen at compile time.
89
+ * So I've chosen long...
90
+ * <appro@fy.chalmers.se>
91
+ */
92
+ # else
93
+ # define MD4_LONG unsigned int
94
+ # endif
95
+
96
+ # define MD4_CBLOCK 64
97
+ # define MD4_LBLOCK (MD4_CBLOCK/4)
98
+ # define MD4_DIGEST_LENGTH 16
99
+
100
+ typedef struct MD4state_st {
101
+ MD4_LONG A, B, C, D;
102
+ MD4_LONG Nl, Nh;
103
+ MD4_LONG data[MD4_LBLOCK];
104
+ unsigned int num;
105
+ } MD4_CTX;
106
+
107
+ # ifdef OPENSSL_FIPS
108
+ int private_MD4_Init(MD4_CTX *c);
109
+ # endif
110
+ int MD4_Init(MD4_CTX *c);
111
+ int MD4_Update(MD4_CTX *c, const void *data, size_t len);
112
+ int MD4_Final(unsigned char *md, MD4_CTX *c);
113
+ unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md);
114
+ void MD4_Transform(MD4_CTX *c, const unsigned char *b);
115
+ #ifdef __cplusplus
116
+ }
117
+ #endif
118
+
119
+ #endif