Nuke RSAREF support from orbit.

It's the only way to be sure.
This commit is contained in:
Kris Kennaway 2000-09-10 00:09:37 +00:00
parent 5340642a2e
commit 690a362571
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=65653
15 changed files with 3 additions and 1238 deletions

View File

@ -126,9 +126,6 @@ rsa_public_encrypt(BIGNUM *out, BIGNUM *in, RSA *key)
if ((len = RSA_public_encrypt(ilen, inbuf, outbuf, key,
RSA_PKCS1_PADDING)) <= 0)
if (BN_num_bits(key->n) > 1024 && RSA_libversion() == RSALIB_RSAREF)
fatal("rsa_private_encrypt() failed: RSAREF cannot handle keys larger than 1024 bits.");
else
fatal("rsa_private_encrypt() failed.");
BN_bin2bn(outbuf, len, out);
@ -154,9 +151,6 @@ rsa_private_decrypt(BIGNUM *out, BIGNUM *in, RSA *key)
if ((len = RSA_private_decrypt(ilen, inbuf, outbuf, key,
RSA_PKCS1_PADDING)) <= 0)
if (BN_num_bits(key->n) > 1024 && RSA_libversion() == RSALIB_RSAREF)
fatal("rsa_private_decrypt() failed: RSAREF cannot handle keys larger than 1024 bits.");
else
fatal("rsa_private_decrypt() failed.");
BN_bin2bn(outbuf, len, out);

View File

@ -1,39 +0,0 @@
/*-
* Copyright (c) 2000 Kris Kennaway <kris@FreeBSD.org>
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS 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 AUTHOR OR 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. SO THERE.
*
* $FreeBSD$
*/
#ifndef NO_RSA
#ifdef PIC
#include <openssl/rsa.h>
int RSA_libversion()
{
return RSALIB_OPENSSL;
}
#endif /* PIC */
#endif /* NO_RSA */

View File

@ -1,115 +0,0 @@
/*-
* Copyright (c) 2000 Peter Wemm <peter@FreeBSD.org>
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS 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 AUTHOR OR 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. SO THERE.
*
* $FreeBSD$
*/
#ifndef NO_RSA
#include <stdio.h>
#include <syslog.h>
#include <unistd.h>
#include "cryptlib.h"
#include <openssl/rsa.h>
#define VERBOSE_STUBS /* undef if you don't want missing rsaref reported */
#ifdef PIC
#include <dlfcn.h>
#define RSAUSA_SHLIB "librsaUSA.so"
#define RSAINTL_SHLIB "librsaINTL.so"
static void *
getsym(const char *sym)
{
static void *rsalib;
static int whined;
void *ret = NULL;
if (!rsalib)
rsalib = dlopen(RSAINTL_SHLIB, RTLD_LAZY);
if (!rsalib)
rsalib = dlopen(RSAUSA_SHLIB, RTLD_LAZY);
if (rsalib)
ret = dlsym(rsalib, sym);
#ifdef VERBOSE_STUBS
if (!ret && !whined) {
if (isatty(STDERR_FILENO)) {
fprintf(stderr, "** %s: Unable to find an RSA implementation shared library.\n", sym);
fprintf(stderr, "** Install either the USA (%s) or International (%s)\n", RSAUSA_SHLIB, RSAINTL_SHLIB);
fprintf(stderr, "** RSA library on your system and run this program again.\n");
fprintf(stderr, "** See the OpenSSL chapter in the FreeBSD Handbook, located at\n");
fprintf(stderr, "** http://www.freebsd.org/handbook/openssl.html, for more information.\n");
} else {
syslog(LOG_ERR, "%s: Unable to find an RSA implementation shared \
library. Install either the USA (%s) or International (%s) RSA library on \
your system and run this program again. See the OpenSSL chapter in the \
FreeBSD Handbook, located at http://www.freebsd.org/handbook/openssl.html, \
for more information.", sym, RSAUSA_SHLIB, RSAINTL_SHLIB);
}
whined = 1;
}
#endif
return ret;
}
RSA_METHOD *
RSA_PKCS1_stub(void)
{
static RSA_METHOD * (*sym)(void);
if (sym || (sym = getsym("RSA_PKCS1")))
return sym();
return NULL;
}
__weak_reference(RSA_PKCS1_stub, RSA_PKCS1);
void
ERR_load_RSA_strings_stub(void)
{
static void (*sym)(void);
if (sym || (sym = getsym("ERR_load_RSA_strings")))
sym();
}
__weak_reference(ERR_load_RSA_strings_stub, ERR_load_RSA_strings);
int
RSA_libversion_stub(void)
{
static void (*sym)(void);
if (sym || (sym = getsym("RSA_libversion")))
sym();
}
__weak_reference(RSA_libversion_stub, RSA_libversion);
#else /* !PIC */
/* Sigh, just get your own libs, ld(1) doesn't deal with weaks here */
#endif /* !PIC */
#endif /* NO_RSA */

View File

@ -1,99 +0,0 @@
#
# SSLeay/rsaref/Makefile
#
DIR= rsaref
TOP= ..
CC= cc
INCLUDES= -I../crypto -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 rsaref-lib.com install.com
TEST=
APPS=
LIB=$(TOP)/libRSAglue.a
LIBSRC= rsaref.c rsar_err.c
LIBOBJ= rsaref.o rsar_err.o
SRC= $(LIBSRC)
EXHEADER= rsaref.h
HEADER= $(EXHEADER)
ALL= $(GENERAL) $(SRC) $(HEADER)
top:
(cd ..; $(MAKE) DIRS=rsaref 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:
-@if [ "x`echo x $(EX_LIBS) | grep RSAglue`" != x ]; then \
echo "installing libRSAglue.a"; \
cp $(LIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \
$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \
fi
# @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) $(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 *.obj lib tags core .pure .nfs* *.old *.bak fluff
# DO NOT DELETE THIS LINE -- make depend depends on it.
rsar_err.o: ../include/openssl/bn.h ../include/openssl/crypto.h
rsar_err.o: ../include/openssl/err.h ../include/openssl/opensslconf.h
rsar_err.o: ../include/openssl/opensslv.h ../include/openssl/rsa.h
rsar_err.o: ../include/openssl/rsaref.h ../include/openssl/safestack.h
rsar_err.o: ../include/openssl/stack.h
rsaref.o: ../crypto/cryptlib.h ../include/openssl/bio.h ../include/openssl/bn.h
rsaref.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
rsaref.o: ../include/openssl/e_os.h ../include/openssl/e_os2.h
rsaref.o: ../include/openssl/err.h ../include/openssl/opensslconf.h
rsaref.o: ../include/openssl/opensslv.h ../include/openssl/rand.h
rsaref.o: ../include/openssl/rsa.h ../include/openssl/rsaref.h
rsaref.o: ../include/openssl/safestack.h ../include/openssl/stack.h

View File

@ -1,99 +0,0 @@
#
# SSLeay/rsaref/Makefile
#
DIR= rsaref
TOP= ..
CC= cc
INCLUDES= -I../crypto -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 rsaref-lib.com install.com
TEST=
APPS=
LIB=$(TOP)/libRSAglue.a
LIBSRC= rsaref.c rsar_err.c
LIBOBJ= rsaref.o rsar_err.o
SRC= $(LIBSRC)
EXHEADER= rsaref.h
HEADER= $(EXHEADER)
ALL= $(GENERAL) $(SRC) $(HEADER)
top:
(cd ..; $(MAKE) DIRS=rsaref 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:
-@if [ "x`echo x $(EX_LIBS) | grep RSAglue`" != x ]; then \
echo "installing libRSAglue.a"; \
cp $(LIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \
$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/libRSAglue.a; \
fi
# @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) $(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 *.obj lib tags core .pure .nfs* *.old *.bak fluff
# DO NOT DELETE THIS LINE -- make depend depends on it.
rsar_err.o: ../include/openssl/bn.h ../include/openssl/crypto.h
rsar_err.o: ../include/openssl/err.h ../include/openssl/opensslconf.h
rsar_err.o: ../include/openssl/opensslv.h ../include/openssl/rsa.h
rsar_err.o: ../include/openssl/rsaref.h ../include/openssl/safestack.h
rsar_err.o: ../include/openssl/stack.h
rsaref.o: ../crypto/cryptlib.h ../include/openssl/bio.h ../include/openssl/bn.h
rsaref.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
rsaref.o: ../include/openssl/e_os.h ../include/openssl/e_os2.h
rsaref.o: ../include/openssl/err.h ../include/openssl/opensslconf.h
rsaref.o: ../include/openssl/opensslv.h ../include/openssl/rand.h
rsaref.o: ../include/openssl/rsa.h ../include/openssl/rsaref.h
rsaref.o: ../include/openssl/safestack.h ../include/openssl/stack.h

View File

@ -1,120 +0,0 @@
/* rsaref/rsar_err.c */
/* $FreeBSD$ */
/* ====================================================================
* 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
* openssl-core@OpenSSL.org.
*
* 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
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
/* 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/rsaref.h>
/* BEGIN ERROR CODES */
#ifndef NO_ERR
static ERR_STRING_DATA RSAREF_str_functs[]=
{
{ERR_PACK(0,RSAREF_F_BN_REF_MOD_EXP,0), "BN_REF_MOD_EXP"},
{ERR_PACK(0,RSAREF_F_RSAREF_BN2BIN,0), "RSAREF_BN2BIN"},
{ERR_PACK(0,RSAREF_F_RSA_BN2BIN,0), "RSA_BN2BIN"},
{ERR_PACK(0,RSAREF_F_RSA_PRIVATE_DECRYPT,0), "RSA_private_decrypt"},
{ERR_PACK(0,RSAREF_F_RSA_PRIVATE_ENCRYPT,0), "RSA_private_encrypt"},
{ERR_PACK(0,RSAREF_F_RSA_PUBLIC_DECRYPT,0), "RSA_public_decrypt"},
{ERR_PACK(0,RSAREF_F_RSA_PUBLIC_ENCRYPT,0), "RSA_public_encrypt"},
{ERR_PACK(0,RSAREF_F_RSA_REF_BN2BIN,0), "RSA_REF_BN2BIN"},
{ERR_PACK(0,RSAREF_F_RSA_REF_MOD_EXP,0), "RSA_REF_MOD_EXP"},
{ERR_PACK(0,RSAREF_F_RSA_REF_PRIVATE_DECRYPT,0), "RSA_REF_PRIVATE_DECRYPT"},
{ERR_PACK(0,RSAREF_F_RSA_REF_PRIVATE_ENCRYPT,0), "RSA_REF_PRIVATE_ENCRYPT"},
{ERR_PACK(0,RSAREF_F_RSA_REF_PUBLIC_DECRYPT,0), "RSA_REF_PUBLIC_DECRYPT"},
{ERR_PACK(0,RSAREF_F_RSA_REF_PUBLIC_ENCRYPT,0), "RSA_REF_PUBLIC_ENCRYPT"},
{0,NULL}
};
static ERR_STRING_DATA RSAREF_str_reasons[]=
{
{RSAREF_R_CONTENT_ENCODING ,"content encoding"},
{RSAREF_R_DATA ,"data"},
{RSAREF_R_DIGEST_ALGORITHM ,"digest algorithm"},
{RSAREF_R_ENCODING ,"encoding"},
{RSAREF_R_ENCRYPTION_ALGORITHM ,"encryption algorithm"},
{RSAREF_R_KEY ,"key"},
{RSAREF_R_KEY_ENCODING ,"key encoding"},
{RSAREF_R_LEN ,"len"},
{RSAREF_R_MODULUS_LEN ,"modulus len"},
{RSAREF_R_NEED_RANDOM ,"need random"},
{RSAREF_R_PRIVATE_KEY ,"private key"},
{RSAREF_R_PUBLIC_KEY ,"public key"},
{RSAREF_R_SIGNATURE ,"signature"},
{RSAREF_R_SIGNATURE_ENCODING ,"signature encoding"},
{0,NULL}
};
#endif
void ERR_load_RSA_strings(void)
{
static int init=1;
if (init)
{
init=0;
#ifndef NO_ERR
ERR_load_strings(ERR_LIB_RSAREF,RSAREF_str_functs);
ERR_load_strings(ERR_LIB_RSAREF,RSAREF_str_reasons);
#endif
}
}

View File

@ -1,309 +0,0 @@
/* rsaref/rsaref.c */
/* $FreeBSD$ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* 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 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 acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS 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 AUTHOR OR 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.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#ifndef NO_RSA
#include <stdio.h>
#include "cryptlib.h"
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <openssl/rsaref.h>
#include <openssl/rand.h>
static int RSAref_bn2bin(BIGNUM * from, unsigned char* to, int max);
#ifdef undef
static BIGNUM* RSAref_bin2bn(unsigned char* from, BIGNUM * to, int max);
#endif
static int RSAref_Public_eay2ref(RSA * from, RSArefPublicKey * to);
static int RSAref_Private_eay2ref(RSA * from, RSArefPrivateKey * to);
int RSA_ref_private_decrypt(int len, unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
int RSA_ref_private_encrypt(int len, unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
int RSA_ref_public_encrypt(int len, unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
int RSA_ref_public_decrypt(int len, unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
static int BN_ref_mod_exp(BIGNUM *r,BIGNUM *a,const BIGNUM *p,const BIGNUM *m,
BN_CTX *ctx, BN_MONT_CTX *m_ctx);
static int RSA_ref_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa);
static RSA_METHOD rsa_pkcs1_ref_meth={
"RSAref PKCS#1 RSA",
RSA_ref_public_encrypt,
RSA_ref_public_decrypt,
RSA_ref_private_encrypt,
RSA_ref_private_decrypt,
RSA_ref_mod_exp,
BN_ref_mod_exp,
NULL,
NULL,
0,
NULL,
};
RSA_METHOD *RSA_PKCS1(void)
{
return(&rsa_pkcs1_ref_meth);
}
static int RSA_ref_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa)
{
RSAREFerr(RSAREF_F_RSA_REF_MOD_EXP,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
return(0);
}
static int BN_ref_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
{
RSAREFerr(RSAREF_F_BN_REF_MOD_EXP,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
return(0);
}
/* unsigned char *to: [max] */
static int RSAref_bn2bin(BIGNUM *from, unsigned char *to, int max)
{
int i;
i=BN_num_bytes(from);
if (i > max)
{
RSAREFerr(RSAREF_F_RSAREF_BN2BIN,RSAREF_R_LEN);
return(0);
}
memset(to,0,(unsigned int)max);
if (!BN_bn2bin(from,&(to[max-i])))
return(0);
return(1);
}
#ifdef undef
/* unsigned char *from: [max] */
static BIGNUM *RSAref_bin2bn(unsigned char *from, BIGNUM *to, int max)
{
int i;
BIGNUM *ret;
for (i=0; i<max; i++)
if (from[i]) break;
ret=BN_bin2bn(&(from[i]),max-i,to);
return(ret);
}
static int RSAref_Public_ref2eay(RSArefPublicKey *from, RSA *to)
{
to->n=RSAref_bin2bn(from->m,NULL,RSAref_MAX_LEN);
to->e=RSAref_bin2bn(from->e,NULL,RSAref_MAX_LEN);
if ((to->n == NULL) || (to->e == NULL)) return(0);
return(1);
}
#endif
static int RSAref_Public_eay2ref(RSA *from, RSArefPublicKey *to)
{
to->bits=BN_num_bits(from->n);
if (!RSAref_bn2bin(from->n,to->m,RSAref_MAX_LEN)) return(0);
if (!RSAref_bn2bin(from->e,to->e,RSAref_MAX_LEN)) return(0);
return(1);
}
#ifdef undef
static int RSAref_Private_ref2eay(RSArefPrivateKey *from, RSA *to)
{
if ((to->n=RSAref_bin2bn(from->m,NULL,RSAref_MAX_LEN)) == NULL)
return(0);
if ((to->e=RSAref_bin2bn(from->e,NULL,RSAref_MAX_LEN)) == NULL)
return(0);
if ((to->d=RSAref_bin2bn(from->d,NULL,RSAref_MAX_LEN)) == NULL)
return(0);
if ((to->p=RSAref_bin2bn(from->prime[0],NULL,RSAref_MAX_PLEN)) == NULL)
return(0);
if ((to->q=RSAref_bin2bn(from->prime[1],NULL,RSAref_MAX_PLEN)) == NULL)
return(0);
if ((to->dmp1=RSAref_bin2bn(from->pexp[0],NULL,RSAref_MAX_PLEN))
== NULL)
return(0);
if ((to->dmq1=RSAref_bin2bn(from->pexp[1],NULL,RSAref_MAX_PLEN))
== NULL)
return(0);
if ((to->iqmp=RSAref_bin2bn(from->coef,NULL,RSAref_MAX_PLEN)) == NULL)
return(0);
return(1);
}
#endif
static int RSAref_Private_eay2ref(RSA *from, RSArefPrivateKey *to)
{
to->bits=BN_num_bits(from->n);
if (!RSAref_bn2bin(from->n,to->m,RSAref_MAX_LEN)) return(0);
if (!RSAref_bn2bin(from->e,to->e,RSAref_MAX_LEN)) return(0);
if (!RSAref_bn2bin(from->d,to->d,RSAref_MAX_LEN)) return(0);
if (!RSAref_bn2bin(from->p,to->prime[0],RSAref_MAX_PLEN)) return(0);
if (!RSAref_bn2bin(from->q,to->prime[1],RSAref_MAX_PLEN)) return(0);
if (!RSAref_bn2bin(from->dmp1,to->pexp[0],RSAref_MAX_PLEN)) return(0);
if (!RSAref_bn2bin(from->dmq1,to->pexp[1],RSAref_MAX_PLEN)) return(0);
if (!RSAref_bn2bin(from->iqmp,to->coef,RSAref_MAX_PLEN)) return(0);
return(1);
}
int RSA_ref_private_decrypt(int len, unsigned char *from, unsigned char *to,
RSA *rsa, int padding)
{
int i,outlen= -1;
RSArefPrivateKey RSAkey;
if (!RSAref_Private_eay2ref(rsa,&RSAkey))
goto err;
if ((i=RSAPrivateDecrypt(to,&outlen,from,len,&RSAkey)) != 0)
{
RSAREFerr(RSAREF_F_RSA_REF_PRIVATE_DECRYPT,i);
outlen= -1;
}
err:
memset(&RSAkey,0,sizeof(RSAkey));
return(outlen);
}
int RSA_ref_private_encrypt(int len, unsigned char *from, unsigned char *to,
RSA *rsa, int padding)
{
int i,outlen= -1;
RSArefPrivateKey RSAkey;
if (padding != RSA_PKCS1_PADDING)
{
RSAREFerr(RSAREF_F_RSA_REF_PRIVATE_ENCRYPT, RSA_R_UNKNOWN_PADDING_TYPE);
goto err;
}
if (!RSAref_Private_eay2ref(rsa,&RSAkey))
goto err;
if ((i=RSAPrivateEncrypt(to,&outlen,from,len,&RSAkey)) != 0)
{
RSAREFerr(RSAREF_F_RSA_REF_PRIVATE_ENCRYPT,i);
outlen= -1;
}
err:
memset(&RSAkey,0,sizeof(RSAkey));
return(outlen);
}
int RSA_ref_public_decrypt(int len, unsigned char *from, unsigned char *to,
RSA *rsa, int padding)
{
int i,outlen= -1;
RSArefPublicKey RSAkey;
if (!RSAref_Public_eay2ref(rsa,&RSAkey))
goto err;
if ((i=RSAPublicDecrypt(to,&outlen,from,len,&RSAkey)) != 0)
{
RSAREFerr(RSAREF_F_RSA_REF_PUBLIC_DECRYPT,i);
outlen= -1;
}
err:
memset(&RSAkey,0,sizeof(RSAkey));
return(outlen);
}
int RSA_ref_public_encrypt(int len, unsigned char *from, unsigned char *to,
RSA *rsa, int padding)
{
int outlen= -1;
int i;
RSArefPublicKey RSAkey;
RSARandomState rnd;
unsigned char buf[16];
if (padding != RSA_PKCS1_PADDING && padding != RSA_SSLV23_PADDING)
{
RSAREFerr(RSAREF_F_RSA_REF_PUBLIC_ENCRYPT, RSA_R_UNKNOWN_PADDING_TYPE);
goto err;
}
R_RandomInit(&rnd);
R_GetRandomBytesNeeded((unsigned int *)&i,&rnd);
while (i > 0)
{
if (RAND_bytes(buf,16) <= 0)
goto err;
R_RandomUpdate(&rnd,buf,(unsigned int)((i>16)?16:i));
i-=16;
}
if (!RSAref_Public_eay2ref(rsa,&RSAkey))
goto err;
if ((i=RSAPublicEncrypt(to,&outlen,from,len,&RSAkey,&rnd)) != 0)
{
RSAREFerr(RSAREF_F_RSA_REF_PUBLIC_ENCRYPT,i);
outlen= -1;
goto err;
}
err:
memset(&RSAkey,0,sizeof(RSAkey));
R_RandomFinal(&rnd);
memset(&rnd,0,sizeof(rnd));
return(outlen);
}
#else /* !NO_RSA */
# if PEDANTIC
static void *dummy=&dummy;
# endif
#endif

View File

@ -1,181 +0,0 @@
/* rsaref/rsaref.h */
/* $FreeBSD$ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* 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 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 acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS 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 AUTHOR OR 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.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#ifndef HEADER_RSAREF_H
#define HEADER_RSAREF_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef NO_RSA
#include <openssl/rsa.h>
/* RSAeuro */
/*#define RSAref_MAX_BITS 2048*/
/* RSAref */
#define RSAref_MAX_BITS 1024
#define RSAref_MIN_BITS 508
#define RSAref_MAX_LEN ((RSAref_MAX_BITS+7)/8)
#define RSAref_MAX_PBITS (RSAref_MAX_BITS+1)/2
#define RSAref_MAX_PLEN ((RSAref_MAX_PBITS+7)/8)
typedef struct RSArefPublicKey_st
{
unsigned int bits;
unsigned char m[RSAref_MAX_LEN];
unsigned char e[RSAref_MAX_LEN];
} RSArefPublicKey;
typedef struct RSArefPrivateKey_st
{
unsigned int bits;
unsigned char m[RSAref_MAX_LEN];
unsigned char e[RSAref_MAX_LEN];
unsigned char d[RSAref_MAX_LEN];
unsigned char prime[2][RSAref_MAX_PLEN];/* p & q */
unsigned char pexp[2][RSAref_MAX_PLEN]; /* dmp1 & dmq1 */
unsigned char coef[RSAref_MAX_PLEN]; /* iqmp */
} RSArefPrivateKey;
typedef struct RSARandomState_st
{
unsigned int needed;
unsigned char state[16];
unsigned int outputnum;
unsigned char output[16];
} RSARandomState;
#define RE_CONTENT_ENCODING 0x0400
#define RE_DATA 0x0401
#define RE_DIGEST_ALGORITHM 0x0402
#define RE_ENCODING 0x0403
#define RE_KEY 0x0404
#define RE_KEY_ENCODING 0x0405
#define RE_LEN 0x0406
#define RE_MODULUS_LEN 0x0407
#define RE_NEED_RANDOM 0x0408
#define RE_PRIVATE_KEY 0x0409
#define RE_PUBLIC_KEY 0x040a
#define RE_SIGNATURE 0x040b
#define RE_SIGNATURE_ENCODING 0x040c
#define RE_ENCRYPTION_ALGORITHM 0x040d
int RSAPrivateDecrypt(unsigned char *to, int *outlen, unsigned char *from,
int len, RSArefPrivateKey *RSAkey);
int RSAPrivateEncrypt(unsigned char *to, int *outlen, unsigned char *from,
int len, RSArefPrivateKey *RSAkey);
int RSAPublicDecrypt(unsigned char *to, int *outlen, unsigned char *from,
int len, RSArefPublicKey *RSAkey);
int RSAPublicEncrypt(unsigned char *to, int *outlen, unsigned char *from,
int len, RSArefPublicKey *RSAkey,RSARandomState *rnd);
int R_RandomInit(RSARandomState *rnd);
int R_GetRandomBytesNeeded(unsigned int *,RSARandomState *rnd);
int R_RandomUpdate(RSARandomState *rnd, unsigned char *data, unsigned int n);
int R_RandomFinal(RSARandomState *rnd);
void ERR_load_RSA_strings(void );
RSA_METHOD *RSA_PKCS1(void );
#endif
/* 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 RSAREF functions. */
/* Function codes. */
#define RSAREF_F_BN_REF_MOD_EXP 100
#define RSAREF_F_RSAREF_BN2BIN 101
#define RSAREF_F_RSA_BN2BIN 102
#define RSAREF_F_RSA_PRIVATE_DECRYPT 103
#define RSAREF_F_RSA_PRIVATE_ENCRYPT 104
#define RSAREF_F_RSA_PUBLIC_DECRYPT 105
#define RSAREF_F_RSA_PUBLIC_ENCRYPT 106
#define RSAREF_F_RSA_REF_BN2BIN 107
#define RSAREF_F_RSA_REF_MOD_EXP 108
#define RSAREF_F_RSA_REF_PRIVATE_DECRYPT 109
#define RSAREF_F_RSA_REF_PRIVATE_ENCRYPT 110
#define RSAREF_F_RSA_REF_PUBLIC_DECRYPT 111
#define RSAREF_F_RSA_REF_PUBLIC_ENCRYPT 112
/* Reason codes. */
#define RSAREF_R_CONTENT_ENCODING 0x0400
#define RSAREF_R_DATA 0x0401
#define RSAREF_R_DIGEST_ALGORITHM 0x0402
#define RSAREF_R_ENCODING 0x0403
#define RSAREF_R_ENCRYPTION_ALGORITHM 0x040d
#define RSAREF_R_KEY 0x0404
#define RSAREF_R_KEY_ENCODING 0x0405
#define RSAREF_R_LEN 0x0406
#define RSAREF_R_MODULUS_LEN 0x0407
#define RSAREF_R_NEED_RANDOM 0x0408
#define RSAREF_R_PRIVATE_KEY 0x0409
#define RSAREF_R_PUBLIC_KEY 0x040a
#define RSAREF_R_SIGNATURE 0x040b
#define RSAREF_R_SIGNATURE_ENCODING 0x040c
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,193 +0,0 @@
/*
* $FreeBSD$
*
* Copyright (c) 2000
* Jordan Hubbard. All rights reserved.
*
* Stub functions for RSA code. If you link with this code, you will
* get a full set of weak symbol references to the rsaref library
* functions which are required by openssl. These can then be occluded
* by the real rsaref library by explicitly linking with it or, failing
* that, these stub functions will also attempt to find an appropriate
* rsaref library in the search path and do the link-up at runtime.
*
* 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,
* verbatim and that no modifications are made prior to this
* point in the file.
* 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.
*
* THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND ANY EXPRESS
* 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 JORDAN HUBBARD OR HIS PETS 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, LIFE 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. SO THERE.
*
*/
#ifndef NO_RSA
#include <stdio.h>
#include <syslog.h>
#include <unistd.h>
#include <openssl/rsa.h>
#define VERBOSE_STUBS /* undef if you don't want missing rsaref reported */
#ifdef PIC
#include <dlfcn.h>
#define RSA_SHLIB "librsaref.so" /* be more exact if you need to */
static void *
getsym(const char *sym)
{
static void *rsalib;
static int whined;
void *ret = NULL;
if (!rsalib)
rsalib = dlopen(RSA_SHLIB, RTLD_LAZY);
if (rsalib)
ret = dlsym(rsalib, sym);
#ifdef VERBOSE_STUBS
if (!ret && !whined) {
if (isatty(STDERR_FILENO)) {
fprintf(stderr, "** %s: Unable to find an RSAREF shared library (%s).\n", sym, RSA_SHLIB);
fprintf(stderr, "** Install the /usr/ports/security/rsaref port or package and run this\n");
fprintf(stderr, "** program again. See the OpenSSL chapter in the FreeBSD Handbook, located at\n");
fprintf(stderr, "** http://www.freebsd.org/handbook/openssl.html, for more information.\n");
} else {
syslog(LOG_ERR, "** %s: Unable to find an RSAREF shared library \
(%s). Install the /usr/ports/security/rsaref port or package and run this \
program again. See the OpenSSL chapter in the FreeBSD Handbook, located at \
http://www.freebsd.org/handbook/openssl.html, for more information.", \
sym, RSA_SHLIB);
}
whined = 1;
}
#endif
return ret;
}
int
RSAPrivateDecrypt_stub(unsigned char *output, unsigned int *outlen,
unsigned char *input, int inputlen, void *RSAkey)
{
static int (*sym)(unsigned char *, unsigned int *, unsigned char *, int, void *);
if (sym || (sym = getsym("RSAPrivateDecrypt")))
return sym(output, outlen, input, inputlen, RSAkey);
return 0;
}
__weak_reference(RSAPrivateDecrypt_stub, RSAPrivateDecrypt);
int
RSAPrivateEncrypt_stub(unsigned char *output, unsigned int *outlen,
unsigned char *input, int inputlen, void *RSAkey)
{
static int (*sym)(unsigned char *, unsigned int *, unsigned char *, int, void *);
if (sym || (sym = getsym("RSAPrivateEncrypt")))
return sym(output, outlen, input, inputlen, RSAkey);
return 0;
}
__weak_reference(RSAPrivateEncrypt_stub, RSAPrivateEncrypt);
int
RSAPublicDecrypt_stub(unsigned char *output, unsigned int *outlen,
unsigned char *input, int inputlen, void *RSAkey)
{
static int (*sym)(unsigned char *, unsigned int *, unsigned char *, int, void *);
if (sym || (sym = getsym("RSAPublicDecrypt")))
return sym(output, outlen, input, inputlen, RSAkey);
return 0;
}
__weak_reference(RSAPublicDecrypt_stub, RSAPublicDecrypt);
int
RSAPublicEncrypt_stub(unsigned char *output, unsigned int *outlen,
unsigned char *input, int inputlen, void *RSAkey, void *randomStruct)
{
static int (*sym)(unsigned char *, unsigned int *, unsigned char *, int,
void *, void *);
if (sym || (sym = getsym("RSAPublicEncrypt")))
return sym(output, outlen, input, inputlen, RSAkey, randomStruct);
return 0;
}
__weak_reference(RSAPublicEncrypt_stub, RSAPublicEncrypt);
int
R_GetRandomBytesNeeded_stub(unsigned int *bytesNeeded, void *randomStruct)
{
static int (*sym)(unsigned int *, void *);
if (sym || (sym = getsym("R_GetRandomBytesNeeded")))
return sym(bytesNeeded, randomStruct);
return 0;
}
__weak_reference(R_GetRandomBytesNeeded_stub, R_GetRandomBytesNeeded);
void
R_RandomFinal_stub(void *randomStruct)
{
static void (*sym)(void *);
if (sym || (sym = getsym("R_RandomFinal")))
sym(randomStruct);
}
__weak_reference(R_RandomFinal_stub, R_RandomFinal);
int
R_RandomInit_stub(void *randomStruct)
{
static int (*sym)(void *);
if (sym || (sym = getsym("R_RandomInit")))
sym(randomStruct);
return 0;
}
__weak_reference(R_RandomInit_stub, R_RandomInit);
int
R_RandomUpdate_stub(void *randomStruct,
unsigned char *block, unsigned int blockLen)
{
static int (*sym)(void *, unsigned char *, unsigned int);
if (sym || (sym = getsym("R_RandomUpdate")))
sym(randomStruct, block, blockLen);
return 0;
}
__weak_reference(R_RandomUpdate_stub, R_RandomUpdate);
int
RSA_libversion()
{
return RSALIB_RSAREF;
}
#else /* !PIC */
/* Failsafe glue for static linking. Link but complain like hell. */
/* actually, this creates all sorts of ld(1) problems, forget it for now */
#endif /* !PIC */
#endif /* !NO_RSA */

View File

@ -62,7 +62,6 @@ BDECFLAGS= -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align \
#NO_OBJC= true # do not build Objective C support
#NO_OPENSSH= true # do not build OpenSSH
#NO_OPENSSL= true # do not build OpenSSL (implies NO_OPENSSH)
#NO_RSAINTL= YES # do not build OpenSSL native RSA libraries
#NO_SENDMAIL= true # do not build sendmail and related programs
#NO_SHAREDOCS= true # do not build the 4.4BSD legacy docs
#NO_TCSH= true # do not build and install /bin/csh (which is tcsh)

View File

@ -5,14 +5,7 @@ SUBDIR= libcipher
SUBDIR+=libtelnet
.endif
.if !defined(NO_OPENSSL)
SUBDIR+=libcrypto librsaglue libssl
.if exists(${.CURDIR}/../../crypto/openssl/rsaref)
SUBDIR+=librsausa
.endif
.if exists(${.CURDIR}/../../crypto/openssl/crypto/rsa/rsa_eay.c) && \
!defined(NO_RSAINTL)
SUBDIR+=librsaintl
.endif
SUBDIR+=libcrypto libssl
.endif
.if !defined(NO_OPENSSH)
SUBDIR+=libssh

View File

@ -150,8 +150,8 @@ SRCS+= rmd_dgst.c rmd_one.c
# rsa
.if defined(WITH_RSA) && ${WITH_RSA} == YES
SRCS+= rsa_chk.c rsa_err.c rsa_gen.c rsa_lib.c rsa_none.c rsa_null.c \
rsa_oaep.c rsa_pk1.c rsa_saos.c rsa_sign.c rsa_ssl.c rsa_stubs.c
SRCS+= rsa_chk.c rsa_eay.c rsa_err.c rsa_gen.c rsa_lib.c rsa_none.c \
rsa_null.c rsa_oaep.c rsa_pk1.c rsa_saos.c rsa_sign.c rsa_ssl.c
.endif
# sha

View File

@ -1,32 +0,0 @@
# $FreeBSD$
.include "../libcrypto/Makefile.inc"
.PATH: ${LCRYPTO_SRC}/rsa
MAINTAINER= kris
LIB= rsaINTL
SHLIB_MAJOR= 1
CFLAGS+= -I${.OBJDIR}
LDADD+= -L${.OBJDIR}/../libcrypto -lcrypto
# rsaref
SRCS+= rsa_err.c rsa_eay.c rsa_intlstubs.c
HDRS= asn1/asn1.h asn1/asn1_mac.h bio/bio.h bf/blowfish.h bn/bn.h \
buffer/buffer.h cast/cast.h comp/comp.h conf/conf.h crypto.h \
des/des.h dh/dh.h dsa/dsa.h ../e_os.h ../e_os2.h ebcdic.h \
err/err.h evp/evp.h hmac/hmac.h lhash/lhash.h md2/md2.h \
md5/md5.h mdc2/mdc2.h objects/objects.h opensslv.h pem/pem.h \
pem/pem2.h pkcs12/pkcs12.h pkcs7/pkcs7.h rand/rand.h rc2/rc2.h \
rc4/rc4.h rc5/rc5.h ripemd/ripemd.h rsa/rsa.h ../rsaref/rsaref.h \
stack/safestack.h sha/sha.h stack/stack.h tmdiff.h txt_db/txt_db.h \
x509/x509.h x509/x509_vfy.h x509v3/x509v3.h
.for h in ${HDRS}
CRYPTO_HDRS+= ${LCRYPTO_SRC}/${h}
.endfor
.include <bsd.lib.mk>

View File

@ -1,33 +0,0 @@
# $FreeBSD$
.include "../libcrypto/Makefile.inc"
.PATH: ${LCRYPTO_SRC}/../rsaref
MAINTAINER= kris
LIB= rsaUSA
SHLIB_MAJOR= 1
CFLAGS+= -I${.OBJDIR}
LDADD+= -L${.OBJDIR}/../libcrypto -lcrypto
# rsaref
SRCS+= rsar_err.c rsaref.c rsaref_stubs.c
HDRS= asn1/asn1.h asn1/asn1_mac.h bio/bio.h bf/blowfish.h bn/bn.h \
buffer/buffer.h cast/cast.h comp/comp.h conf/conf.h crypto.h \
des/des.h dh/dh.h dsa/dsa.h ../e_os.h ../e_os2.h ebcdic.h \
err/err.h evp/evp.h hmac/hmac.h lhash/lhash.h md2/md2.h \
md5/md5.h mdc2/mdc2.h objects/objects.h opensslv.h pem/pem.h \
pem/pem2.h pkcs12/pkcs12.h pkcs7/pkcs7.h rand/rand.h rc2/rc2.h \
rc4/rc4.h rc5/rc5.h ripemd/ripemd.h rsa/rsa.h ../rsaref/rsaref.h \
stack/safestack.h sha/sha.h stack/stack.h tmdiff.h txt_db/txt_db.h \
x509/x509.h x509/x509_vfy.h x509v3/x509v3.h
.for h in ${HDRS}
CRYPTO_HDRS+= ${LCRYPTO_SRC}/${h}
.endfor
.include <bsd.lib.mk>

View File

@ -62,7 +62,6 @@ BDECFLAGS= -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align \
#NO_OBJC= true # do not build Objective C support
#NO_OPENSSH= true # do not build OpenSSH
#NO_OPENSSL= true # do not build OpenSSL (implies NO_OPENSSH)
#NO_RSAINTL= YES # do not build OpenSSL native RSA libraries
#NO_SENDMAIL= true # do not build sendmail and related programs
#NO_SHAREDOCS= true # do not build the 4.4BSD legacy docs
#NO_TCSH= true # do not build and install /bin/csh (which is tcsh)