diff options
Diffstat (limited to 'crypto/dso')
| -rw-r--r-- | crypto/dso/.cvsignore | 2 | ||||
| -rw-r--r-- | crypto/dso/Makefile.ssl | 122 | ||||
| -rw-r--r-- | crypto/dso/README | 22 | ||||
| -rw-r--r-- | crypto/dso/dso.h | 219 | ||||
| -rw-r--r-- | crypto/dso/dso_dl.c | 219 | ||||
| -rw-r--r-- | crypto/dso/dso_dlfcn.c | 224 | ||||
| -rw-r--r-- | crypto/dso/dso_err.c | 119 | ||||
| -rw-r--r-- | crypto/dso/dso_lib.c | 283 | ||||
| -rw-r--r-- | crypto/dso/dso_null.c | 84 | ||||
| -rw-r--r-- | crypto/dso/dso_openssl.c | 79 | ||||
| -rw-r--r-- | crypto/dso/dso_win32.c | 238 |
11 files changed, 0 insertions, 1611 deletions
diff --git a/crypto/dso/.cvsignore b/crypto/dso/.cvsignore deleted file mode 100644 index c6d03a9dbc6..00000000000 --- a/crypto/dso/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -lib -Makefile.save diff --git a/crypto/dso/Makefile.ssl b/crypto/dso/Makefile.ssl deleted file mode 100644 index c5510692048..00000000000 --- a/crypto/dso/Makefile.ssl +++ /dev/null @@ -1,122 +0,0 @@ -# -# SSLeay/crypto/dso/Makefile -# - -DIR= dso -TOP= ../.. -CC= cc -INCLUDES= -I.. -I../../include -CFLAG=-g -INSTALL_PREFIX= -OPENSSLDIR= /usr/local/ssl -INSTALLTOP=/usr/local/ssl -MAKE= make -f Makefile.ssl -MAKEDEPEND= $(TOP)/util/domd $(TOP) -MAKEFILE= Makefile.ssl -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile -TEST= -APPS= - -LIB=$(TOP)/libcrypto.a -LIBSRC= dso_dl.c dso_dlfcn.c dso_err.c dso_lib.c dso_null.c \ - dso_openssl.c dso_win32.c -LIBOBJ= dso_dl.o dso_dlfcn.o dso_err.o dso_lib.o dso_null.o \ - dso_openssl.o dso_win32.o - -SRC= $(LIBSRC) - -EXHEADER= dso.h -HEADER= $(EXHEADER) - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - $(AR) $(LIB) $(LIBOBJ) - $(RANLIB) $(LIB) - @touch lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO - -links: - @$(TOP)/util/point.sh Makefile.ssl Makefile - @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) - @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST) - @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS) - -install: - @for i in $(EXHEADER) ; \ - do \ - (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ - done; - -tags: - ctags $(SRC) - -tests: - -lint: - lint -DLINT $(INCLUDES) $(SRC)>fluff - -depend: - $(MAKEDEPEND) $(INCLUDES) $(DEPFLAG) $(PROGS) $(LIBSRC) - -dclean: - $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new - mv -f Makefile.new $(MAKEFILE) - -clean: - rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -dso_dl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h -dso_dl.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h -dso_dl.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h -dso_dl.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h -dso_dl.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h -dso_dl.o: ../../include/openssl/stack.h ../cryptlib.h -dso_dlfcn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h -dso_dlfcn.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h -dso_dlfcn.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h -dso_dlfcn.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h -dso_dlfcn.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h -dso_dlfcn.o: ../../include/openssl/stack.h ../cryptlib.h -dso_err.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h -dso_err.o: ../../include/openssl/err.h ../../include/openssl/opensslv.h -dso_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -dso_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h -dso_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h -dso_lib.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h -dso_lib.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h -dso_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h -dso_lib.o: ../../include/openssl/stack.h ../cryptlib.h -dso_null.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h -dso_null.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h -dso_null.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h -dso_null.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h -dso_null.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h -dso_null.o: ../../include/openssl/stack.h ../cryptlib.h -dso_openssl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h -dso_openssl.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h -dso_openssl.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h -dso_openssl.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h -dso_openssl.o: ../../include/openssl/opensslv.h -dso_openssl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h -dso_openssl.o: ../cryptlib.h -dso_win32.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h -dso_win32.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h -dso_win32.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h -dso_win32.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h -dso_win32.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h -dso_win32.o: ../../include/openssl/stack.h ../cryptlib.h diff --git a/crypto/dso/README b/crypto/dso/README deleted file mode 100644 index 5a9b86f4c34..00000000000 --- a/crypto/dso/README +++ /dev/null @@ -1,22 +0,0 @@ -TODO ----- - -Get a fix on how the paths should be handled. For now, flags == 0 -and this is currently just passing strings directly onto the -underlying system calls and letting them do what they want with -the paths. However, it may be desirable to implement flags that -control the way the loading is performed (or attempted), and I -invisage that DSO_ctrl() will be used to control this. - -NOTES ------ - -I've checked out HPUX (well, version 11 at least) and shl_t is -a pointer type so it's safe to use in the way it has been in -dso_dl.c. On the other hand, HPUX11 support dlfcn too and -according to their man page, prefer developers to move to that. -I'll leave Richard's changes there as I guess dso_dl is needed -for HPUX10.20. - -[G-T] - diff --git a/crypto/dso/dso.h b/crypto/dso/dso.h deleted file mode 100644 index 281af47c262..00000000000 --- a/crypto/dso/dso.h +++ /dev/null @@ -1,219 +0,0 @@ -/* dso.h */ -/* Written by Geoff Thorpe ([email protected]) for the OpenSSL - * project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -#ifndef HEADER_DSO_H -#define HEADER_DSO_H - -#include <openssl/crypto.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* These values are used as commands to DSO_ctrl() */ -#define DSO_CTRL_GET_FLAGS 1 -#define DSO_CTRL_SET_FLAGS 2 -#define DSO_CTRL_OR_FLAGS 3 - -/* These flags control the translation of file-names from canonical to - * native. Eg. in the CryptoSwift support, the "dl" and "dlfcn" - * methods will translate "swift" -> "libswift.so" whereas the "win32" - * method will translate "swift" -> "swift.dll". NB: Until I can figure - * out how to be more "conventional" with this, the methods will only - * honour this flag if it looks like it was passed a file without any - * path and if the filename is small enough. - */ -#define DSO_FLAG_NAME_TRANSLATION 0x01 - -typedef struct dso_st DSO; - -typedef struct dso_meth_st - { - const char *name; - /* Loads a shared library */ - int (*dso_load)(DSO *dso, const char *filename); - /* Unloads a shared library */ - int (*dso_unload)(DSO *dso); - /* Binds a function, variable, or whatever */ - int (*dso_bind)(DSO *dso, const char *symname, void **symptr); - -/* I don't think this would actually be used in any circumstances. */ -#if 0 - /* Unbinds a symbol */ - int (*dso_unbind)(DSO *dso, char *symname, void *symptr); -#endif - /* The generic (yuck) "ctrl()" function. NB: Negative return - * values (rather than zero) indicate errors. */ - long (*dso_ctrl)(DSO *dso, int cmd, long larg, void *parg); - - /* [De]Initialisation handlers. */ - int (*init)(DSO *dso); - int (*finish)(DSO *dso); - } DSO_METHOD; - -/**********************************************************************/ -/* The low-level handle type used to refer to a loaded shared library */ - -struct dso_st - { - DSO_METHOD *meth; - /* Standard dlopen uses a (void *). Win32 uses a HANDLE. VMS - * doesn't use anything but will need to cache the filename - * for use in the dso_bind handler. All in all, let each - * method control its own destiny. "Handles" and such go in - * a STACK. */ - STACK *meth_data; - int references; - int flags; - /* For use by applications etc ... use this for your bits'n'pieces, - * don't touch meth_data! */ - CRYPTO_EX_DATA ex_data; - }; - - -DSO * DSO_new(void); -DSO * DSO_new_method(DSO_METHOD *method); -int DSO_free(DSO *dso); -int DSO_flags(DSO *dso); -int DSO_up(DSO *dso); -long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg); - -void DSO_set_default_method(DSO_METHOD *meth); -DSO_METHOD *DSO_get_default_method(void); -DSO_METHOD *DSO_get_method(DSO *dso); -DSO_METHOD *DSO_set_method(DSO *dso, DSO_METHOD *meth); - -/* The all-singing all-dancing load function, you normally pass NULL - * for the first and third parameters. Use DSO_up and DSO_free for - * subsequent reference count handling. Any flags passed in will be set - * in the constructed DSO after its init() function but before the - * load operation. This will be done with; - * DSO_ctrl(dso, DSO_CTRL_SET_FLAGS, flags, NULL); */ -DSO *DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags); - -/* This function binds to a function, variable, whatever inside a - * shared library. */ -void *DSO_bind(DSO *dso, const char *symname); - -/* This method is the default, but will beg, borrow, or steal whatever - * method should be the default on any particular platform (including - * DSO_METH_null() if necessary). */ -DSO_METHOD *DSO_METHOD_openssl(void); - -/* This method is defined for all platforms - if a platform has no - * DSO support then this will be the only method! */ -DSO_METHOD *DSO_METHOD_null(void); - -/* If DSO_DLFCN is defined, the standard dlfcn.h-style functions - * (dlopen, dlclose, dlsym, etc) will be used and incorporated into - * this method. If not, this method will return NULL. */ -DSO_METHOD *DSO_METHOD_dlfcn(void); - -/* If DSO_DL is defined, the standard dl.h-style functions (shl_load, - * shl_unload, shl_findsym, etc) will be used and incorporated into - * this method. If not, this method will return NULL. */ -DSO_METHOD *DSO_METHOD_dl(void); - -/* If WIN32 is defined, use DLLs. If not, return NULL. */ -DSO_METHOD *DSO_METHOD_win32(void); - -void ERR_load_DSO_strings(void); - -/* BEGIN ERROR CODES */ -/* The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ - -/* Error codes for the DSO functions. */ - -/* Function codes. */ -#define DSO_F_DLFCN_BIND 100 -#define DSO_F_DLFCN_LOAD 101 -#define DSO_F_DLFCN_UNLOAD 102 -#define DSO_F_DLFCN_CTRL 103 -#define DSO_F_DL_BIND 104 -#define DSO_F_DL_LOAD 105 -#define DSO_F_DL_UNLOAD 106 -#define DSO_F_DL_CTRL 107 -#define DSO_F_DSO_BIND 108 -#define DSO_F_DSO_FREE 109 -#define DSO_F_DSO_LOAD 110 -#define DSO_F_DSO_NEW_METHOD 111 -#define DSO_F_DSO_UP 112 -#define DSO_F_DSO_CTRL 113 -#define DSO_F_WIN32_BIND 114 -#define DSO_F_WIN32_LOAD 115 -#define DSO_F_WIN32_UNLOAD 116 -#define DSO_F_WIN32_CTRL 117 - -/* Reason codes. */ -#define DSO_R_FINISH_FAILED 100 -#define DSO_R_LOAD_FAILED 101 -#define DSO_R_NULL_HANDLE 102 -#define DSO_R_STACK_ERROR 103 -#define DSO_R_SYM_FAILURE 104 -#define DSO_R_UNLOAD_FAILED 105 -#define DSO_R_UNSUPPORTED 106 -#define DSO_R_UNKNOWN_COMMAND 107 -#define DSO_R_CTRL_FAILED 108 - -#ifdef __cplusplus -} -#endif -#endif - diff --git a/crypto/dso/dso_dl.c b/crypto/dso/dso_dl.c deleted file mode 100644 index bb808ad6fba..00000000000 --- a/crypto/dso/dso_dl.c +++ /dev/null @@ -1,219 +0,0 @@ -/* dso_dl.c */ -/* Written by Richard Levitte ([email protected]) for the OpenSSL - * project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -#include <stdio.h> -#include "cryptlib.h" -#include <openssl/dso.h> - -#ifndef DSO_DL -DSO_METHOD *DSO_METHOD_dl(void) - { - return NULL; - } -#else - -#include <dl.h> - -/* Part of the hack in "dl_load" ... */ -#define DSO_MAX_TRANSLATED_SIZE 256 - -static int dl_load(DSO *dso, const char *filename); -static int dl_unload(DSO *dso); -static int dl_bind(DSO *dso, const char *symname, void **symptr); -#if 0 -static int dl_unbind(DSO *dso, char *symname, void *symptr); -static int dl_init(DSO *dso); -static int dl_finish(DSO *dso); -#endif -static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg); - -static DSO_METHOD dso_meth_dl = { - "OpenSSL 'dl' shared library method", - dl_load, - dl_unload, - dl_bind, -/* For now, "unbind" doesn't exist */ -#if 0 - NULL, /* unbind */ -#endif - dl_ctrl, - NULL, /* init */ - NULL /* finish */ - }; - -DSO_METHOD *DSO_METHOD_dl(void) - { - return(&dso_meth_dl); - } - -/* For this DSO_METHOD, our meth_data STACK will contain; - * (i) the handle (shl_t) returned from shl_load(). - * NB: I checked on HPUX11 and shl_t is itself a pointer - * type so the cast is safe. - */ - -static int dl_load(DSO *dso, const char *filename) - { - shl_t ptr; - char translated[DSO_MAX_TRANSLATED_SIZE]; - int len; - - /* The same comment as in dlfcn_load applies here. bleurgh. */ - len = strlen(filename); - if((dso->flags & DSO_FLAG_NAME_TRANSLATION) && - (len + 6 < DSO_MAX_TRANSLATED_SIZE) && - (strstr(filename, "/") == NULL)) - { - sprintf(translated, "lib%s.so", filename); - ptr = shl_load(translated, BIND_IMMEDIATE, NULL); - } - else - ptr = shl_load(filename, BIND_IMMEDIATE, NULL); - if(ptr == NULL) - { - DSOerr(DSO_F_DL_LOAD,DSO_R_LOAD_FAILED); - return(0); - } - if(!sk_push(dso->meth_data, (char *)ptr)) - { - DSOerr(DSO_F_DL_LOAD,DSO_R_STACK_ERROR); - shl_unload(ptr); - return(0); - } - return(1); - } - -static int dl_unload(DSO *dso) - { - shl_t ptr; - if(dso == NULL) - { - DSOerr(DSO_F_DL_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(sk_num(dso->meth_data) < 1) - return(1); - /* Is this statement legal? */ - ptr = (shl_t)sk_pop(dso->meth_data); - if(ptr == NULL) - { - DSOerr(DSO_F_DL_UNLOAD,DSO_R_NULL_HANDLE); - /* Should push the value back onto the stack in - * case of a retry. */ - sk_push(dso->meth_data, (char *)ptr); - return(0); - } - shl_unload(ptr); - return(1); - } - -static int dl_bind(DSO *dso, const char *symname, void **symptr) - { - shl_t ptr; - void *sym; - - if((dso == NULL) || (symptr == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_DL_BIND,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(sk_num(dso->meth_data) < 1) - { - DSOerr(DSO_F_DL_BIND,DSO_R_STACK_ERROR); - return(0); - } - ptr = (shl_t)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); - if(ptr == NULL) - { - DSOerr(DSO_F_DL_BIND,DSO_R_NULL_HANDLE); - return(0); - } - if (shl_findsym(ptr, symname, TYPE_UNDEFINED, &sym) < 0) - { - DSOerr(DSO_F_DL_BIND,DSO_R_SYM_FAILURE); - return(0); - } - *symptr = sym; - return(1); - } - -static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg) - { - if(dso == NULL) - { - DSOerr(DSO_F_DL_CTRL,ERR_R_PASSED_NULL_PARAMETER); - return(-1); - } - switch(cmd) - { - case DSO_CTRL_GET_FLAGS: - return dso->flags; - case DSO_CTRL_SET_FLAGS: - dso->flags = (int)larg; - return(0); - case DSO_CTRL_OR_FLAGS: - dso->flags |= (int)larg; - return(0); - default: - break; - } - DSOerr(DSO_F_DL_CTRL,DSO_R_UNKNOWN_COMMAND); - return(-1); - } - -#endif /* DSO_DL */ diff --git a/crypto/dso/dso_dlfcn.c b/crypto/dso/dso_dlfcn.c deleted file mode 100644 index 7638724f781..00000000000 --- a/crypto/dso/dso_dlfcn.c +++ /dev/null @@ -1,224 +0,0 @@ -/* dso_dlfcn.c */ -/* Written by Geoff Thorpe ([email protected]) for the OpenSSL - * project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -#include <stdio.h> -#include "cryptlib.h" -#include <openssl/dso.h> - -#ifndef DSO_DLFCN -DSO_METHOD *DSO_METHOD_dlfcn(void) - { - return NULL; - } -#else - -#ifdef HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -/* Part of the hack in "dlfcn_load" ... */ -#define DSO_MAX_TRANSLATED_SIZE 256 - -static int dlfcn_load(DSO *dso, const char *filename); -static int dlfcn_unload(DSO *dso); -static int dlfcn_bind(DSO *dso, const char *symname, void **symptr); -#if 0 -static int dlfcn_unbind(DSO *dso, char *symname, void *symptr); -static int dlfcn_init(DSO *dso); -static int dlfcn_finish(DSO *dso); -#endif -static long dlfcn_ctrl(DSO *dso, int cmd, long larg, void *parg); - -static DSO_METHOD dso_meth_dlfcn = { - "OpenSSL 'dlfcn' shared library method", - dlfcn_load, - dlfcn_unload, - dlfcn_bind, -/* For now, "unbind" doesn't exist */ -#if 0 - NULL, /* unbind */ -#endif - dlfcn_ctrl, - NULL, /* init */ - NULL /* finish */ - }; - -DSO_METHOD *DSO_METHOD_dlfcn(void) - { - return(&dso_meth_dlfcn); - } - -/* For this DSO_METHOD, our meth_data STACK will contain; - * (i) the handle (void*) returned from dlopen(). - */ - -static int dlfcn_load(DSO *dso, const char *filename) - { - void *ptr; - char translated[DSO_MAX_TRANSLATED_SIZE]; - int len; - - /* NB: This is a hideous hack, but I'm not yet sure what - * to replace it with. This attempts to convert any filename, - * that looks like it has no path information, into a - * translated form, e. "blah" -> "libblah.so" */ - len = strlen(filename); - if((dso->flags & DSO_FLAG_NAME_TRANSLATION) && - (len + 6 < DSO_MAX_TRANSLATED_SIZE) && - (strstr(filename, "/") == NULL)) - { - sprintf(translated, "lib%s.so", filename); - ptr = dlopen(translated, RTLD_NOW); - } - else - { - ptr = dlopen(filename, RTLD_NOW); - } - if(ptr == NULL) - { - DSOerr(DSO_F_DLFCN_LOAD,DSO_R_LOAD_FAILED); - return(0); - } - if(!sk_push(dso->meth_data, (char *)ptr)) - { - DSOerr(DSO_F_DLFCN_LOAD,DSO_R_STACK_ERROR); - dlclose(ptr); - return(0); - } - return(1); - } - -static int dlfcn_unload(DSO *dso) - { - void *ptr; - if(dso == NULL) - { - DSOerr(DSO_F_DLFCN_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(sk_num(dso->meth_data) < 1) - return(1); - ptr = (void *)sk_pop(dso->meth_data); - if(ptr == NULL) - { - DSOerr(DSO_F_DLFCN_UNLOAD,DSO_R_NULL_HANDLE); - /* Should push the value back onto the stack in - * case of a retry. */ - sk_push(dso->meth_data, (char *)ptr); - return(0); - } - /* For now I'm not aware of any errors associated with dlclose() */ - dlclose(ptr); - return(1); - } - -static int dlfcn_bind(DSO *dso, const char *symname, void **symptr) - { - void *ptr, *sym; - - if((dso == NULL) || (symptr == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_DLFCN_BIND,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(sk_num(dso->meth_data) < 1) - { - DSOerr(DSO_F_DLFCN_BIND,DSO_R_STACK_ERROR); - return(0); - } - ptr = (void *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); - if(ptr == NULL) - { - DSOerr(DSO_F_DLFCN_BIND,DSO_R_NULL_HANDLE); - return(0); - } - sym = dlsym(ptr, symname); - if(sym == NULL) - { - DSOerr(DSO_F_DLFCN_BIND,DSO_R_SYM_FAILURE); - return(0); - } - *symptr = sym; - return(1); - } - -static long dlfcn_ctrl(DSO *dso, int cmd, long larg, void *parg) - { - if(dso == NULL) - { - DSOerr(DSO_F_DLFCN_CTRL,ERR_R_PASSED_NULL_PARAMETER); - return(-1); - } - switch(cmd) - { - case DSO_CTRL_GET_FLAGS: - return dso->flags; - case DSO_CTRL_SET_FLAGS: - dso->flags = (int)larg; - return(0); - case DSO_CTRL_OR_FLAGS: - dso->flags |= (int)larg; - return(0); - default: - break; - } - DSOerr(DSO_F_DLFCN_CTRL,DSO_R_UNKNOWN_COMMAND); - return(-1); - } - -#endif /* DSO_DLFCN */ diff --git a/crypto/dso/dso_err.c b/crypto/dso/dso_err.c deleted file mode 100644 index 5d2457a9fff..00000000000 --- a/crypto/dso/dso_err.c +++ /dev/null @@ -1,119 +0,0 @@ -/* crypto/dso/dso_err.c */ -/* ==================================================================== - * Copyright (c) 1999 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -/* NOTE: this file was auto generated by the mkerr.pl script: any changes - * made to it will be overwritten when the script next updates this file, - * only reason strings will be preserved. - */ - -#include <stdio.h> -#include <openssl/err.h> -#include <openssl/dso.h> - -/* BEGIN ERROR CODES */ -#ifndef NO_ERR -static ERR_STRING_DATA DSO_str_functs[]= - { -{ERR_PACK(0,DSO_F_DLFCN_BIND,0), "dlfcn_bind"}, -{ERR_PACK(0,DSO_F_DLFCN_LOAD,0), "dlfcn_load"}, -{ERR_PACK(0,DSO_F_DLFCN_UNLOAD,0), "dlfcn_unload"}, -{ERR_PACK(0,DSO_F_DLFCN_CTRL,0), "dlfcn_ctrl"}, -{ERR_PACK(0,DSO_F_DL_BIND,0), "dl_bind"}, -{ERR_PACK(0,DSO_F_DL_LOAD,0), "dl_load"}, -{ERR_PACK(0,DSO_F_DL_UNLOAD,0), "dl_unload"}, -{ERR_PACK(0,DSO_F_DL_CTRL,0), "dl_ctrl"}, -{ERR_PACK(0,DSO_F_DSO_BIND,0), "DSO_bind"}, -{ERR_PACK(0,DSO_F_DSO_FREE,0), "DSO_free"}, -{ERR_PACK(0,DSO_F_DSO_LOAD,0), "DSO_load"}, -{ERR_PACK(0,DSO_F_DSO_NEW_METHOD,0), "DSO_new_method"}, -{ERR_PACK(0,DSO_F_DSO_UP,0), "DSO_up"}, -{ERR_PACK(0,DSO_F_DSO_CTRL,0), "DSO_ctrl"}, -{ERR_PACK(0,DSO_F_WIN32_BIND,0), "win32_bind"}, -{ERR_PACK(0,DSO_F_WIN32_LOAD,0), "win32_load"}, -{ERR_PACK(0,DSO_F_WIN32_UNLOAD,0), "win32_unload"}, -{ERR_PACK(0,DSO_F_WIN32_CTRL,0), "win32_ctrl"}, -{0,NULL} - }; - -static ERR_STRING_DATA DSO_str_reasons[]= - { -{DSO_R_FINISH_FAILED ,"cleanup method function failed"}, -{DSO_R_LOAD_FAILED ,"could not load the shared library"}, -{DSO_R_NULL_HANDLE ,"a null shared library handle was used"}, -{DSO_R_STACK_ERROR ,"the meth_data stack is corrupt"}, -{DSO_R_SYM_FAILURE ,"could not bind to the requested symbol name"}, -{DSO_R_UNLOAD_FAILED ,"could not unload the shared library"}, -{DSO_R_UNSUPPORTED ,"functionality not supported"}, -{DSO_R_UNKNOWN_COMMAND ,"unknown control command"}, -{DSO_R_CTRL_FAILED ,"control command failed"}, -{0,NULL} - }; - -#endif - -void ERR_load_DSO_strings(void) - { - static int init=1; - - if (init) - { - init=0; -#ifndef NO_ERR - ERR_load_strings(ERR_LIB_DSO,DSO_str_functs); - ERR_load_strings(ERR_LIB_DSO,DSO_str_reasons); -#endif - - } - } diff --git a/crypto/dso/dso_lib.c b/crypto/dso/dso_lib.c deleted file mode 100644 index f41ebf1aa47..00000000000 --- a/crypto/dso/dso_lib.c +++ /dev/null @@ -1,283 +0,0 @@ -/* dso_lib.c */ -/* Written by Geoff Thorpe ([email protected]) for the OpenSSL - * project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -#include <stdio.h> -#include <openssl/crypto.h> -#include "cryptlib.h" -#include <openssl/dso.h> - -static DSO_METHOD *default_DSO_meth = NULL; - -DSO *DSO_new(void) - { - return(DSO_new_method(NULL)); - } - -void DSO_set_default_method(DSO_METHOD *meth) - { - default_DSO_meth = meth; - } - -DSO_METHOD *DSO_get_default_method(void) - { - return(default_DSO_meth); - } - -DSO_METHOD *DSO_get_method(DSO *dso) - { - return(dso->meth); - } - -DSO_METHOD *DSO_set_method(DSO *dso, DSO_METHOD *meth) - { - DSO_METHOD *mtmp; - mtmp = dso->meth; - dso->meth = meth; - return(mtmp); - } - -DSO *DSO_new_method(DSO_METHOD *meth) - { - DSO *ret; - - if(default_DSO_meth == NULL) - /* We default to DSO_METH_openssl() which in turn defaults - * to stealing the "best available" method. Will fallback - * to DSO_METH_null() in the worst case. */ - default_DSO_meth = DSO_METHOD_openssl(); - ret = (DSO *)Malloc(sizeof(DSO)); - if(ret == NULL) - { - DSOerr(DSO_F_DSO_NEW_METHOD,ERR_R_MALLOC_FAILURE); - return(NULL); - } - memset(ret, 0, sizeof(DSO)); - ret->meth_data = sk_new(NULL); - if((ret->meth_data = sk_new(NULL)) == NULL) - { - /* sk_new doesn't generate any errors so we do */ - DSOerr(DSO_F_DSO_NEW_METHOD,ERR_R_MALLOC_FAILURE); - Free(ret); - return(NULL); - } - if(meth == NULL) - ret->meth = default_DSO_meth; - else - ret->meth = meth; - ret->references = 1; - if((ret->meth->init != NULL) && !ret->meth->init(ret)) - { - Free(ret); - ret=NULL; - } - return(ret); - } - -int DSO_free(DSO *dso) - { - int i; - - if(dso == NULL) - { - DSOerr(DSO_F_DSO_FREE,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - - i=CRYPTO_add(&dso->references,-1,CRYPTO_LOCK_DSO); -#ifdef REF_PRINT - REF_PRINT("DSO",dso); -#endif - if(i > 0) return(1); -#ifdef REF_CHECK - if(i < 0) - { - fprintf(stderr,"DSO_free, bad reference count\n"); - abort(); - } -#endif - - if((dso->meth->dso_unload != NULL) && !dso->meth->dso_unload(dso)) - { - DSOerr(DSO_F_DSO_FREE,DSO_R_UNLOAD_FAILED); - return(0); - } - - if((dso->meth->finish != NULL) && !dso->meth->finish(dso)) - { - DSOerr(DSO_F_DSO_FREE,DSO_R_FINISH_FAILED); - return(0); - } - - sk_free(dso->meth_data); - - Free(dso); - return(1); - } - -int DSO_flags(DSO *dso) - { - return((dso == NULL) ? 0 : dso->flags); - } - - -int DSO_up(DSO *dso) - { - if (dso == NULL) - { - DSOerr(DSO_F_DSO_UP,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - - CRYPTO_add(&dso->references,1,CRYPTO_LOCK_DSO); - return(1); - } - -DSO *DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags) - { - DSO *ret; - int allocated = 0; - - if(filename == NULL) - { - DSOerr(DSO_F_DSO_LOAD,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if(dso == NULL) - { - ret = DSO_new_method(meth); - if(ret == NULL) - { - DSOerr(DSO_F_DSO_LOAD,ERR_R_MALLOC_FAILURE); - return(NULL); - } - allocated = 1; - } - else - ret = dso; - /* Bleurgh ... have to check for negative return values for - * errors. <grimace> */ - if(DSO_ctrl(ret, DSO_CTRL_SET_FLAGS, flags, NULL) < 0) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_CTRL_FAILED); - if(allocated) - DSO_free(ret); - return(NULL); - } - if(ret->meth->dso_load == NULL) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_UNSUPPORTED); - if(allocated) - DSO_free(ret); - return(NULL); - } - if(!ret->meth->dso_load(ret, filename)) - { - DSOerr(DSO_F_DSO_LOAD,DSO_R_LOAD_FAILED); - if(allocated) - DSO_free(ret); - return(NULL); - } - /* Load succeeded */ - return(ret); - } - -void *DSO_bind(DSO *dso, const char *symname) - { - void *ret = NULL; - - if((dso == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_DSO_BIND,ERR_R_PASSED_NULL_PARAMETER); - return(NULL); - } - if(dso->meth->dso_bind == NULL) - { - DSOerr(DSO_F_DSO_BIND,DSO_R_UNSUPPORTED); - return(NULL); - } - if(!dso->meth->dso_bind(dso, symname, &ret)) - { - DSOerr(DSO_F_DSO_BIND,DSO_R_SYM_FAILURE); - return(NULL); - } - /* Success */ - return(ret); - } - -/* I don't really like these *_ctrl functions very much to be perfectly - * honest. For one thing, I think I have to return a negative value for - * any error because possible DSO_ctrl() commands may return values - * such as "size"s that can legitimately be zero (making the standard - * "if(DSO_cmd(...))" form that works almost everywhere else fail at - * odd times. I'd prefer "output" values to be passed by reference and - * the return value as success/failure like usual ... but we conform - * when we must... :-) */ -long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg) - { - if(dso == NULL) - { - DSOerr(DSO_F_DSO_CTRL,ERR_R_PASSED_NULL_PARAMETER); - return(-1); - } - if((dso->meth == NULL) || (dso->meth->dso_ctrl == NULL)) - { - DSOerr(DSO_F_DSO_CTRL,DSO_R_UNSUPPORTED); - return(-1); - } - return(dso->meth->dso_ctrl(dso,cmd,larg,parg)); - } diff --git a/crypto/dso/dso_null.c b/crypto/dso/dso_null.c deleted file mode 100644 index 79e6eddca29..00000000000 --- a/crypto/dso/dso_null.c +++ /dev/null @@ -1,84 +0,0 @@ -/* dso_null.c */ -/* Written by Geoff Thorpe ([email protected]) for the OpenSSL - * project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -/* This "NULL" method is provided as the fallback for systems that have - * no appropriate support for "shared-libraries". */ - -#include <stdio.h> -#include "cryptlib.h" -#include <openssl/dso.h> - -static DSO_METHOD dso_meth_null = { - "NULL shared library method", - NULL, /* load */ - NULL, /* unload */ - NULL, /* bind */ -/* For now, "unbind" doesn't exist */ -#if 0 - NULL, /* unbind */ -#endif - NULL, /* ctrl */ - NULL, /* init */ - NULL /* finish */ - }; - -DSO_METHOD *DSO_METHOD_null(void) - { - return(&dso_meth_null); - } - diff --git a/crypto/dso/dso_openssl.c b/crypto/dso/dso_openssl.c deleted file mode 100644 index fb12572311a..00000000000 --- a/crypto/dso/dso_openssl.c +++ /dev/null @@ -1,79 +0,0 @@ -/* dso_openssl.c */ -/* Written by Geoff Thorpe ([email protected]) for the OpenSSL - * project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -#include <stdio.h> -#include "cryptlib.h" -#include <openssl/dso.h> - -/* We just pinch the method from an appropriate "default" method. */ - -DSO_METHOD *DSO_METHOD_openssl(void) - { -#ifdef DEF_DSO_METHOD - return(DEF_DSO_METHOD()); -#elif defined(DSO_DLFCN) - return(DSO_METHOD_dlfcn()); -#elif defined(DSO_DL) - return(DSO_METHOD_dl()); -#elif defined(DSO_WIN32) - return(DSO_METHOD_win32()); -#else - return(DSO_METHOD_null()); -#endif - } - diff --git a/crypto/dso/dso_win32.c b/crypto/dso/dso_win32.c deleted file mode 100644 index c495840bd2f..00000000000 --- a/crypto/dso/dso_win32.c +++ /dev/null @@ -1,238 +0,0 @@ -/* dso_win32.c */ -/* Written by Geoff Thorpe ([email protected]) for the OpenSSL - * project 2000. - */ -/* ==================================================================== - * Copyright (c) 2000 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - -#include <stdio.h> -#include <string.h> -#include "cryptlib.h" -#include <openssl/dso.h> - -#ifndef WIN32 -DSO_METHOD *DSO_METHOD_win32(void) - { - return NULL; - } -#else - -/* Part of the hack in "win32_load" ... */ -#define DSO_MAX_TRANSLATED_SIZE 256 - -static int win32_load(DSO *dso, const char *filename); -static int win32_unload(DSO *dso); -static int win32_bind(DSO *dso, const char *symname, void **symptr); -#if 0 -static int win32_unbind(DSO *dso, char *symname, void *symptr); -static int win32_init(DSO *dso); -static int win32_finish(DSO *dso); -#endif -static long win32_ctrl(DSO *dso, int cmd, long larg, void *parg); - -static DSO_METHOD dso_meth_win32 = { - "OpenSSL 'win32' shared library method", - win32_load, - win32_unload, - win32_bind, -/* For now, "unbind" doesn't exist */ -#if 0 - NULL, /* unbind */ -#endif - win32_ctrl, - NULL, /* init */ - NULL /* finish */ - }; - -DSO_METHOD *DSO_METHOD_win32(void) - { - return(&dso_meth_win32); - } - -/* For this DSO_METHOD, our meth_data STACK will contain; - * (i) a pointer to the handle (HINSTANCE) returned from - * LoadLibrary(), and copied. - */ - -static int win32_load(DSO *dso, const char *filename) - { - HINSTANCE h, *p; - char translated[DSO_MAX_TRANSLATED_SIZE]; - int len; - - /* NB: This is a hideous hack, but I'm not yet sure what - * to replace it with. This attempts to convert any filename, - * that looks like it has no path information, into a - * translated form, e. "blah" -> "blah.dll" ... I'm more - * comfortable putting hacks into win32 code though ;-) */ - len = strlen(filename); - if((dso->flags & DSO_FLAG_NAME_TRANSLATION) && - (len + 4 < DSO_MAX_TRANSLATED_SIZE) && - (strstr(filename, "/") == NULL) - (strstr(filename, "\\") == NULL) - (strstr(filename, ":") == NULL)) - { - sprintf(translated, "%s.dll", filename); - h = LoadLibrary(translated); - } - else - h = LoadLibrary(filename); - if(h == NULL) - { - DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED); - return(0); - } - p = (HINSTANCE *)Malloc(sizeof(HINSTANCE)); - if(p == NULL) - { - DSOerr(DSO_F_WIN32_LOAD,ERR_R_MALLOC_FAILURE); - FreeLibrary(h); - return(0); - } - *p = h; - if(!sk_push(dso->meth_data, (char *)p)) - { - DSOerr(DSO_F_WIN32_LOAD,DSO_R_STACK_ERROR); - FreeLibrary(h); - Free(p); - return(0); - } - return(1); - } - -static int win32_unload(DSO *dso) - { - HINSTANCE *p; - if(dso == NULL) - { - DSOerr(DSO_F_WIN32_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(sk_num(dso->meth_data) < 1) - return(1); - p = (HINSTANCE *)sk_pop(dso->meth_data); - if(p == NULL) - { - DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_NULL_HANDLE); - return(0); - } - if(!FreeLibrary(p)) - { - DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_UNLOAD_FAILED); - /* We should push the value back onto the stack in - * case of a retry. */ - sk_push(dso->meth_data, (char *)p); - return(0); - } - /* Cleanup */ - Free(p); - return(1); - } - -static int win32_bind(DSO *dso, const char *symname, void **symptr) - { - HINSTANCE *ptr; - void *sym; - - if((dso == NULL) || (symptr == NULL) || (symname == NULL)) - { - DSOerr(DSO_F_WIN32_BIND,ERR_R_PASSED_NULL_PARAMETER); - return(0); - } - if(sk_num(dso->meth_data) < 1) - { - DSOerr(DSO_F_WIN32_BIND,DSO_R_STACK_ERROR); - return(0); - } - ptr = (HINSTANCE *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); - if(ptr == NULL) - { - DSOerr(DSO_F_WIN32_BIND,DSO_R_NULL_HANDLE); - return(0); - } - sym = GetProcAddress(*ptr, symname); - if(sym == NULL) - { - DSOerr(DSO_F_WIN32_BIND,DSO_R_SYM_FAILURE); - return(0); - } - *symptr = sym; - return(1); - } - -static int win32_ctrl(DSO *dso, int cmd, long larg, void *parg) - { - if(dso == NULL) - { - DSOerr(DSO_F_WIN32_CTRL,ERR_R_PASSED_NULL_PARAMETER); - return(-1); - } - switch(cmd) - { - case DSO_CTRL_GET_FLAGS: - return dso->flags; - case DSO_CTRL_SET_FLAGS: - dso->flags = (int)larg; - return(0); - case DSO_CTRL_OR_FLAGS: - dso->flags |= (int)larg; - return(0); - default: - break; - } - DSOerr(DSO_F_WIN32_CTRL,DSO_R_UNKNOWN_COMMAND); - return(-1); - } - -#endif /* WIN32 */ |
