Nuke RSAREF support from orbit.
It's the only way to be sure.
This commit is contained in:
parent
5340642a2e
commit
690a362571
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=65653
@ -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);
|
||||
|
@ -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 */
|
@ -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 */
|
@ -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
|
@ -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
|
@ -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
|
||||
|
||||
}
|
||||
}
|
@ -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
|
@ -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
|
||||
|
@ -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 */
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>
|
@ -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>
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user