summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/crypto.h
diff options
context:
space:
mode:
authorryker <>1998-10-05 20:13:14 +0000
committerryker <>1998-10-05 20:13:14 +0000
commitaeeae06a79815dc190061534d47236cec09f9e32 (patch)
tree851692b9c2f9c04f077666855641900f19fdb217 /src/lib/libcrypto/crypto.h
parenta4f79641824cbf9f60ca9d1168d1fcc46717a82a (diff)
downloadopenbsd-aeeae06a79815dc190061534d47236cec09f9e32.tar.gz
openbsd-aeeae06a79815dc190061534d47236cec09f9e32.tar.bz2
openbsd-aeeae06a79815dc190061534d47236cec09f9e32.zip
Import of SSLeay-0.9.0b with RSA and IDEA stubbed + OpenBSD build
functionality for shared libs. Note that routines such as sslv2_init and friends that use RSA will not work due to lack of RSA in this library. Needs documentation and help from ports for easy upgrade to full functionality where legally possible.
Diffstat (limited to 'src/lib/libcrypto/crypto.h')
-rw-r--r--src/lib/libcrypto/crypto.h319
1 files changed, 319 insertions, 0 deletions
diff --git a/src/lib/libcrypto/crypto.h b/src/lib/libcrypto/crypto.h
new file mode 100644
index 0000000000..0a38b5b87c
--- /dev/null
+++ b/src/lib/libcrypto/crypto.h
@@ -0,0 +1,319 @@
1/* crypto/crypto.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_CRYPTO_H
60#define HEADER_CRYPTO_H
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
66#include "stack.h"
67
68/* This is more to be used to check the correct DLL is being used
69 * in the MS world. */
70#define SSLEAY_VERSION_NUMBER 0x0902 /* Version 0.5.1c would be 0513 */
71
72#define SSLEAY_VERSION 0
73/* #define SSLEAY_OPTIONS 1 no longer supported */
74#define SSLEAY_CFLAGS 2
75#define SSLEAY_BUILT_ON 3
76
77/* When changing the CRYPTO_LOCK_* list, be sure to maintin the text lock
78 * names in cryptlib.c
79 */
80
81#define CRYPTO_LOCK_ERR 1
82#define CRYPTO_LOCK_ERR_HASH 2
83#define CRYPTO_LOCK_X509 3
84#define CRYPTO_LOCK_X509_INFO 4
85#define CRYPTO_LOCK_X509_PKEY 5
86#define CRYPTO_LOCK_X509_CRL 6
87#define CRYPTO_LOCK_X509_REQ 7
88#define CRYPTO_LOCK_DSA 8
89#define CRYPTO_LOCK_RSA 9
90#define CRYPTO_LOCK_EVP_PKEY 10
91#define CRYPTO_LOCK_X509_STORE 11
92#define CRYPTO_LOCK_SSL_CTX 12
93#define CRYPTO_LOCK_SSL_CERT 13
94#define CRYPTO_LOCK_SSL_SESSION 14
95#define CRYPTO_LOCK_SSL 15
96#define CRYPTO_LOCK_RAND 16
97#define CRYPTO_LOCK_MALLOC 17
98#define CRYPTO_LOCK_BIO 18
99#define CRYPTO_LOCK_BIO_GETHOSTBYNAME 19
100#define CRYPTO_LOCK_RSA_BLINDING 20
101#define CRYPTO_NUM_LOCKS 21
102
103#define CRYPTO_LOCK 1
104#define CRYPTO_UNLOCK 2
105#define CRYPTO_READ 4
106#define CRYPTO_WRITE 8
107
108#ifndef CRYPTO_w_lock
109#define CRYPTO_w_lock(type) \
110 CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
111#define CRYPTO_w_unlock(type) \
112 CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
113#define CRYPTO_r_lock(type) \
114 CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__)
115#define CRYPTO_r_unlock(type) \
116 CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__)
117#define CRYPTO_add(addr,amount,type) \
118 CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__)
119
120#endif
121
122/* The following can be used to detect memory leaks in the SSLeay library.
123 * It used, it turns on malloc checking */
124
125#define CRYPTO_MEM_CHECK_OFF 0x0
126#define CRYPTO_MEM_CHECK_ON 0x1
127
128/*
129typedef struct crypto_mem_st
130 {
131 char *(*malloc_func)();
132 char *(*realloc_func)();
133 void (*free_func)();
134 } CRYPTO_MEM_FUNC;
135*/
136
137/* predec of the BIO type */
138typedef struct bio_st BIO_dummy;
139
140typedef struct crypto_ex_data_st
141 {
142 STACK *sk;
143 int dummy; /* gcc is screwing up this data structure :-( */
144 } CRYPTO_EX_DATA;
145
146/* This stuff is basically class callback functions
147 * The current classes are SSL_CTX, SSL, SSL_SESION, and a few more */
148typedef struct crypto_ex_data_func_st
149 {
150 long argl; /* Arbitary long */
151 char *argp; /* Arbitary char * */
152 /* Called when a new object is created */
153 int (*new_func)(/*char *obj,
154 char *item,int index,long argl,char *argp*/);
155 /* Called when this object is free()ed */
156 void (*free_func)(/*char *obj,
157 char *item,int index,long argl,char *argp*/);
158
159 /* Called when we need to dup this one */
160 int (*dup_func)(/*char *obj_to,char *obj_from,
161 char **new,int index,long argl,char *argp*/);
162 } CRYPTO_EX_DATA_FUNCS;
163
164/* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA
165 * entry.
166 */
167
168#define CRYPTO_EX_INDEX_BIO 0
169#define CRYPTO_EX_INDEX_SSL 1
170#define CRYPTO_EX_INDEX_SSL_CTX 2
171#define CRYPTO_EX_INDEX_SSL_SESSION 3
172#define CRYPTO_EX_INDEX_X509_STORE 4
173#define CRYPTO_EX_INDEX_X509_STORE_CTX 5
174
175/* Use this for win32 DLL's */
176#define CRYPTO_malloc_init() CRYPTO_set_mem_functions(\
177 (char *(*)())malloc,\
178 (char *(*)())realloc,\
179 (void (*)())free)
180
181#ifdef CRYPTO_MDEBUG
182#define Malloc(num) CRYPTO_dbg_malloc((int)num,__FILE__,__LINE__)
183#define Realloc(addr,num) \
184 CRYPTO_dbg_realloc((char *)addr,(int)num,__FILE__,__LINE__)
185#define Remalloc(addr,num) \
186 CRYPTO_dbg_remalloc((char **)addr,(int)num,__FILE__,__LINE__)
187#define FreeFunc CRYPTO_dbg_free
188#define Free(addr) CRYPTO_dbg_free((char *)(addr))
189#else
190#define Remalloc CRYPTO_remalloc
191#if defined(WIN32) || defined(MFUNC)
192#define Malloc CRYPTO_malloc
193#define Realloc(a,n) CRYPTO_realloc((char *)(a),(n))
194#define FreeFunc CRYPTO_free
195#define Free(addr) CRYPTO_free((char *)(addr))
196#else
197#define Malloc malloc
198#define Realloc realloc
199#define FreeFunc free
200#define Free(addr) free((char *)(addr))
201#endif /* WIN32 || MFUNC */
202#endif /* MDEBUG */
203
204/* Case insensiteve linking causes problems.... */
205#ifdef WIN16
206#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings
207#endif
208
209#ifndef NOPROTO
210
211char *SSLeay_version(int type);
212unsigned long SSLeay(void);
213
214int CRYPTO_get_ex_new_index(int idx,STACK **sk,long argl,char *argp,
215 int (*new_func)(),int (*dup_func)(),void (*free_func)());
216int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad,int idx,char *val);
217char *CRYPTO_get_ex_data(CRYPTO_EX_DATA *ad,int idx);
218int CRYPTO_dup_ex_data(STACK *meth,CRYPTO_EX_DATA *from,CRYPTO_EX_DATA *to);
219void CRYPTO_free_ex_data(STACK *meth,char *obj,CRYPTO_EX_DATA *ad);
220void CRYPTO_new_ex_data(STACK *meth, char *obj, CRYPTO_EX_DATA *ad);
221
222int CRYPTO_mem_ctrl(int mode);
223int CRYPTO_get_new_lockid(char *name);
224void CRYPTO_lock(int mode, int type,char *file,int line);
225void CRYPTO_set_locking_callback(void (*func)(int mode,int type,char *file,
226 int line));
227void (*CRYPTO_get_locking_callback(void))(int mode,int type,char *file,
228 int line);
229void CRYPTO_set_add_lock_callback(int (*func)(int *num,int mount,
230 int type,char *file, int line));
231int (*CRYPTO_get_add_lock_callback(void))(int *num,int mount,
232 int type,char *file,int line);
233void CRYPTO_set_id_callback(unsigned long (*func)(void));
234unsigned long (*CRYPTO_get_id_callback(void))(void);
235unsigned long CRYPTO_thread_id(void);
236char *CRYPTO_get_lock_name(int type);
237int CRYPTO_add_lock(int *pointer,int amount,int type, char *file,int line);
238
239void CRYPTO_set_mem_functions(char *(*m)(),char *(*r)(), void (*free_func)());
240void CRYPTO_get_mem_functions(char *(**m)(),char *(**r)(), void (**f)());
241
242char *CRYPTO_malloc(int num);
243char *CRYPTO_realloc(char *addr,int num);
244void CRYPTO_free(char *);
245char *CRYPTO_remalloc(char *addr,int num);
246
247char *CRYPTO_dbg_malloc(int num,char *file,int line);
248char *CRYPTO_dbg_realloc(char *addr,int num,char *file,int line);
249void CRYPTO_dbg_free(char *);
250char *CRYPTO_dbg_remalloc(char *addr,int num,char *file,int line);
251#ifndef NO_FP_API
252void CRYPTO_mem_leaks_fp(FILE *);
253#endif
254void CRYPTO_mem_leaks(struct bio_st *bio);
255/* unsigned long order, char *file, int line, int num_bytes, char *addr */
256void CRYPTO_mem_leaks_cb(void (*cb)());
257
258void ERR_load_CRYPTO_strings(void );
259
260#else
261
262int CRYPTO_get_ex_new_index();
263int CRYPTO_set_ex_data();
264char *CRYPTO_get_ex_data();
265int CRYPTO_dup_ex_data();
266void CRYPTO_free_ex_data();
267void CRYPTO_new_ex_data();
268
269int CRYPTO_mem_ctrl();
270char *SSLeay_version();
271unsigned long SSLeay();
272
273int CRYPTO_get_new_lockid();
274void CRYPTO_lock();
275void CRYPTO_set_locking_callback();
276void (*CRYPTO_get_locking_callback())();
277void CRYPTO_set_add_lock_callback();
278int (*CRYPTO_get_add_lock_callback())();
279void CRYPTO_set_id_callback();
280unsigned long (*CRYPTO_get_id_callback())();
281unsigned long CRYPTO_thread_id();
282char *CRYPTO_get_lock_name();
283int CRYPTO_add_lock();
284
285void CRYPTO_set_mem_functions();
286void CRYPTO_get_mem_functions();
287char *CRYPTO_malloc();
288char *CRYPTO_realloc();
289void CRYPTO_free();
290char *CRYPTO_remalloc();
291char *CRYPTO_dbg_remalloc();
292char *CRYPTO_dbg_malloc();
293char *CRYPTO_dbg_realloc();
294void CRYPTO_dbg_free();
295#ifndef NO_FP_API
296void CRYPTO_mem_leaks_fp();
297#endif
298void CRYPTO_mem_leaks();
299void CRYPTO_mem_leaks_cb();
300
301void ERR_load_CRYPTO_strings();
302
303#endif
304
305/* BEGIN ERROR CODES */
306/* Error codes for the CRYPTO functions. */
307
308/* Function codes. */
309#define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100
310#define CRYPTO_F_CRYPTO_GET_NEW_LOCKID 101
311#define CRYPTO_F_CRYPTO_SET_EX_DATA 102
312
313/* Reason codes. */
314
315#ifdef __cplusplus
316}
317#endif
318#endif
319