openssl: update ocf to 20080917
SVN-Revision: 13284
This commit is contained in:
		| @@ -1,5 +1,5 @@ | |||||||
| # | # | ||||||
| # Copyright (C) 2006 OpenWrt.org | # Copyright (C) 2006-2008 OpenWrt.org | ||||||
| # | # | ||||||
| # This is free software, licensed under the GNU General Public License v2. | # This is free software, licensed under the GNU General Public License v2. | ||||||
| # See /LICENSE for more information. | # See /LICENSE for more information. | ||||||
| @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk | |||||||
|  |  | ||||||
| PKG_NAME:=openssl | PKG_NAME:=openssl | ||||||
| PKG_VERSION:=0.9.8i | PKG_VERSION:=0.9.8i | ||||||
| PKG_RELEASE:=2 | PKG_RELEASE:=3 | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | ||||||
| PKG_SOURCE_URL:=http://www.openssl.org/source/ \ | PKG_SOURCE_URL:=http://www.openssl.org/source/ \ | ||||||
| @@ -19,6 +19,8 @@ PKG_SOURCE_URL:=http://www.openssl.org/source/ \ | |||||||
| 	ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/ | 	ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/ | ||||||
| PKG_MD5SUM:=561e00f18821c74b2b86c8c7786f9d8b | PKG_MD5SUM:=561e00f18821c74b2b86c8c7786f9d8b | ||||||
|  |  | ||||||
|  | PKG_BUILD_DEPENDS:=ocf-crypto-headers | ||||||
|  |  | ||||||
| include $(INCLUDE_DIR)/package.mk | include $(INCLUDE_DIR)/package.mk | ||||||
|  |  | ||||||
| define Package/openssl/Default | define Package/openssl/Default | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| diff -Naur openssl-0.9.8i.orig/Configure openssl-0.9.8i/Configure
 | --- a/Configure
 | ||||||
| --- openssl-0.9.8i.orig/Configure	2008-10-01 04:16:01.000000000 +0200
 | +++ b/Configure
 | ||||||
| +++ openssl-0.9.8i/Configure	2008-10-01 04:16:12.000000000 +0200
 | @@ -34,6 +34,8 @@ my $usage="Usage: Configure [no-<cipher>
 | ||||||
| @@ -34,6 +34,8 @@
 |  | ||||||
|  #		(Default: KRB5_DIR/include) |  #		(Default: KRB5_DIR/include) | ||||||
|  # --with-krb5-flavor  Declare what flavor of Kerberos 5 is used.  Currently |  # --with-krb5-flavor  Declare what flavor of Kerberos 5 is used.  Currently | ||||||
|  #		supported values are "MIT" and "Heimdal".  A value is required. |  #		supported values are "MIT" and "Heimdal".  A value is required. | ||||||
| @@ -10,7 +9,7 @@ diff -Naur openssl-0.9.8i.orig/Configure openssl-0.9.8i/Configure | |||||||
|  # |  # | ||||||
|  # --test-sanity Make a number of sanity checks on the data in this file. |  # --test-sanity Make a number of sanity checks on the data in this file. | ||||||
|  #               This is a debugging tool for OpenSSL developers. |  #               This is a debugging tool for OpenSSL developers. | ||||||
| @@ -540,6 +542,9 @@
 | @@ -540,6 +542,9 @@ my %table=(
 | ||||||
|  ##### Compaq Non-Stop Kernel (Tandem) |  ##### Compaq Non-Stop Kernel (Tandem) | ||||||
|  "tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::", |  "tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::", | ||||||
|   |   | ||||||
| @@ -20,7 +19,7 @@ diff -Naur openssl-0.9.8i.orig/Configure openssl-0.9.8i/Configure | |||||||
|  ); |  ); | ||||||
|   |   | ||||||
|  my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A |  my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A | ||||||
| @@ -589,6 +594,8 @@
 | @@ -589,6 +594,8 @@ my $montasm=1;   # but "no-montasm" is d
 | ||||||
|  my $no_asm=0; |  my $no_asm=0; | ||||||
|  my $no_dso=0; |  my $no_dso=0; | ||||||
|  my $no_gmp=0; |  my $no_gmp=0; | ||||||
| @@ -29,7 +28,7 @@ diff -Naur openssl-0.9.8i.orig/Configure openssl-0.9.8i/Configure | |||||||
|  my @skip=(); |  my @skip=(); | ||||||
|  my $Makefile="Makefile"; |  my $Makefile="Makefile"; | ||||||
|  my $des_locl="crypto/des/des_locl.h"; |  my $des_locl="crypto/des/des_locl.h"; | ||||||
| @@ -716,6 +723,14 @@
 | @@ -716,6 +723,14 @@ PROCESS_ARGS:
 | ||||||
|  			{ |  			{ | ||||||
|  			exit(&test_sanity()); |  			exit(&test_sanity()); | ||||||
|  			} |  			} | ||||||
| @@ -44,7 +43,7 @@ diff -Naur openssl-0.9.8i.orig/Configure openssl-0.9.8i/Configure | |||||||
|  		elsif (/^reconfigure/ || /^reconf/) |  		elsif (/^reconfigure/ || /^reconf/) | ||||||
|  			{ |  			{ | ||||||
|  			if (open(IN,"<$Makefile")) |  			if (open(IN,"<$Makefile")) | ||||||
| @@ -924,6 +939,7 @@
 | @@ -924,6 +939,7 @@ foreach (sort (keys %disabled))
 | ||||||
|  			print " OPENSSL_NO_$ALGO"; |  			print " OPENSSL_NO_$ALGO"; | ||||||
|  		 |  		 | ||||||
|  			if (/^err$/)	{ $flags .= "-DOPENSSL_NO_ERR "; } |  			if (/^err$/)	{ $flags .= "-DOPENSSL_NO_ERR "; } | ||||||
| @@ -52,7 +51,7 @@ diff -Naur openssl-0.9.8i.orig/Configure openssl-0.9.8i/Configure | |||||||
|  			elsif (/^asm$/)	{ $no_asm = 1; } |  			elsif (/^asm$/)	{ $no_asm = 1; } | ||||||
|  			} |  			} | ||||||
|  		else |  		else | ||||||
| @@ -1064,6 +1080,16 @@
 | @@ -1064,6 +1080,16 @@ if (!$no_krb5)
 | ||||||
|  		   $withargs{"krb5-dir"} ne ""; |  		   $withargs{"krb5-dir"} ne ""; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -69,9 +68,8 @@ diff -Naur openssl-0.9.8i.orig/Configure openssl-0.9.8i/Configure | |||||||
|  # The DSO code currently always implements all functions so that no |  # The DSO code currently always implements all functions so that no | ||||||
|  # applications will have to worry about that from a compilation point |  # applications will have to worry about that from a compilation point | ||||||
|  # of view. However, the "method"s may return zero unless that platform |  # of view. However, the "method"s may return zero unless that platform | ||||||
| diff -Naur openssl-0.9.8i.orig/INSTALL openssl-0.9.8i/INSTALL
 | --- a/INSTALL
 | ||||||
| --- openssl-0.9.8i.orig/INSTALL	2008-10-01 04:16:01.000000000 +0200
 | +++ b/INSTALL
 | ||||||
| +++ openssl-0.9.8i/INSTALL	2008-10-01 04:16:12.000000000 +0200
 |  | ||||||
| @@ -103,6 +103,12 @@
 | @@ -103,6 +103,12 @@
 | ||||||
|                  define preprocessor symbols, specify additional libraries, |                  define preprocessor symbols, specify additional libraries, | ||||||
|                  library directories or other compiler options. |                  library directories or other compiler options. | ||||||
| @@ -85,10 +83,9 @@ diff -Naur openssl-0.9.8i.orig/INSTALL openssl-0.9.8i/INSTALL | |||||||
|   |   | ||||||
|   Installation in Detail |   Installation in Detail | ||||||
|   ---------------------- |   ---------------------- | ||||||
| diff -Naur openssl-0.9.8i.orig/Makefile.org openssl-0.9.8i/Makefile.org
 | --- a/Makefile.org
 | ||||||
| --- openssl-0.9.8i.orig/Makefile.org	2008-10-01 04:16:02.000000000 +0200
 | +++ b/Makefile.org
 | ||||||
| +++ openssl-0.9.8i/Makefile.org	2008-10-01 04:16:12.000000000 +0200
 | @@ -367,7 +367,7 @@ files:
 | ||||||
| @@ -367,7 +367,7 @@
 |  | ||||||
|   |   | ||||||
|  links: |  links: | ||||||
|  	@$(PERL) $(TOP)/util/mkdir-p.pl include/openssl |  	@$(PERL) $(TOP)/util/mkdir-p.pl include/openssl | ||||||
| @@ -97,9 +94,8 @@ diff -Naur openssl-0.9.8i.orig/Makefile.org openssl-0.9.8i/Makefile.org | |||||||
|  	@set -e; target=links; $(RECURSIVE_BUILD_CMD) |  	@set -e; target=links; $(RECURSIVE_BUILD_CMD) | ||||||
|   |   | ||||||
|  gentests: |  gentests: | ||||||
| diff -Naur openssl-0.9.8i.orig/Makefile.shared openssl-0.9.8i/Makefile.shared
 | --- a/Makefile.shared
 | ||||||
| --- openssl-0.9.8i.orig/Makefile.shared	2008-10-01 04:16:01.000000000 +0200
 | +++ b/Makefile.shared
 | ||||||
| +++ openssl-0.9.8i/Makefile.shared	2008-10-01 04:16:12.000000000 +0200
 |  | ||||||
| @@ -6,13 +6,13 @@
 | @@ -6,13 +6,13 @@
 | ||||||
|  # properly |  # properly | ||||||
|   |   | ||||||
| @@ -118,9 +114,206 @@ diff -Naur openssl-0.9.8i.orig/Makefile.shared openssl-0.9.8i/Makefile.shared | |||||||
|   |   | ||||||
|  # LIBNAME contains just the name of the library, without prefix ("lib" |  # LIBNAME contains just the name of the library, without prefix ("lib" | ||||||
|  # on Unix, "cyg" for certain forms under Cygwin...) or suffix (.a, .so, |  # on Unix, "cyg" for certain forms under Cygwin...) or suffix (.a, .so, | ||||||
| diff -Naur openssl-0.9.8i.orig/apps/apps.h openssl-0.9.8i/apps/apps.h
 | --- a/config
 | ||||||
| --- openssl-0.9.8i.orig/apps/apps.h	2008-10-01 04:16:02.000000000 +0200
 | +++ b/config
 | ||||||
| +++ openssl-0.9.8i/apps/apps.h	2008-10-01 04:16:12.000000000 +0200
 | @@ -48,10 +48,10 @@ done
 | ||||||
|  |   | ||||||
|  |  # First get uname entries that we use below | ||||||
|  |   | ||||||
|  | -MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
 | ||||||
|  | -RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
 | ||||||
|  | -SYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
 | ||||||
|  | -VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
 | ||||||
|  | +[ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
 | ||||||
|  | +[ "$RELEASE" ] || RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
 | ||||||
|  | +[ "$SYSTEM" ]  || SYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
 | ||||||
|  | +[ "$VERSION" ] || VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  # Now test for ISC and SCO, since it is has a braindamaged uname. | ||||||
|  | @@ -270,7 +270,7 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${
 | ||||||
|  |  		echo "ppc-apple-darwin${VERSION}" | ||||||
|  |  		;; | ||||||
|  |  	    *) | ||||||
|  | -		echo "i386-apple-darwin${VERSION}"
 | ||||||
|  | +		echo "${MACHINE}-apple-darwin${VERSION}"
 | ||||||
|  |  		;; | ||||||
|  |  	esac | ||||||
|  |  	exit 0 | ||||||
|  | @@ -401,9 +401,9 @@ exit 0
 | ||||||
|  |   | ||||||
|  |  # figure out if gcc is available and if so we use it otherwise | ||||||
|  |  # we fallback to whatever cc does on the system | ||||||
|  | -GCCVER=`(gcc -dumpversion) 2>/dev/null`
 | ||||||
|  | +CC="${CC:-gcc}"
 | ||||||
|  | +GCCVER=`(${CC} -dumpversion) 2>/dev/null`
 | ||||||
|  |  if [ "$GCCVER" != "" ]; then | ||||||
|  | -  CC=gcc
 | ||||||
|  |    # then strip off whatever prefix egcs prepends the number with... | ||||||
|  |    # Hopefully, this will work for any future prefixes as well. | ||||||
|  |    GCCVER=`echo $GCCVER | LC_ALL=C sed 's/^[a-zA-Z]*\-//'` | ||||||
|  | @@ -413,7 +413,7 @@ if [ "$GCCVER" != "" ]; then
 | ||||||
|  |    # peak single digit before and after first dot, e.g. 2.95.1 gives 29 | ||||||
|  |    GCCVER=`echo $GCCVER | sed 's/\([0-9]\)\.\([0-9]\).*/\1\2/'` | ||||||
|  |  else | ||||||
|  | -  CC=cc
 | ||||||
|  | +  CC="${CC:-cc}"
 | ||||||
|  |  fi | ||||||
|  |  GCCVER=${GCCVER:-0} | ||||||
|  |  if [ "$SYSTEM" = "HP-UX" ];then | ||||||
|  | @@ -482,6 +482,9 @@ echo Operating system: $GUESSOS
 | ||||||
|  |  # script above so we end up with values in vars but that would take | ||||||
|  |  # more time that I want to waste at the moment | ||||||
|  |  case "$GUESSOS" in | ||||||
|  | +  uClinux*)
 | ||||||
|  | +    OUT=uClinux-dist
 | ||||||
|  | +	;;
 | ||||||
|  |    mips2-sgi-irix) | ||||||
|  |  	CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'` | ||||||
|  |  	CPU=${CPU:-0} | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/makefile-uclinuxdist
 | ||||||
|  | @@ -0,0 +1,138 @@
 | ||||||
|  | +#
 | ||||||
|  | +# this makefile gets recursed through by various bits of the build
 | ||||||
|  | +# so we need to only setup some things when invoked from outside
 | ||||||
|  | +# this directory.
 | ||||||
|  | +#
 | ||||||
|  | +# davidm@snapgear.com
 | ||||||
|  | +#
 | ||||||
|  | +
 | ||||||
|  | +IN_LIBSSL := true
 | ||||||
|  | +export IN_LIBSSL
 | ||||||
|  | +
 | ||||||
|  | +CONFIG_OPTS  := --prefix=// --install_prefix=$(shell pwd)/build/install
 | ||||||
|  | +
 | ||||||
|  | +ifdef CONFIG_USER_FLATFSD_FLATFSD
 | ||||||
|  | +CONFIG_OPTS += --openssldir=/etc/config
 | ||||||
|  | +else
 | ||||||
|  | +CONFIG_OPTS += --openssldir=/etc
 | ||||||
|  | +endif
 | ||||||
|  | +ifdef DISABLE_SHARED_SSL
 | ||||||
|  | +CONFIG_OPTS += no-shared
 | ||||||
|  | +else
 | ||||||
|  | +CONFIG_OPTS += shared
 | ||||||
|  | +endif
 | ||||||
|  | +
 | ||||||
|  | +CONFIG_OPTS += no-rc2
 | ||||||
|  | +CONFIG_OPTS += no-krb5
 | ||||||
|  | +CONFIG_OPTS += no-rc5
 | ||||||
|  | +CONFIG_OPTS += no-md2
 | ||||||
|  | +CONFIG_OPTS += no-idea
 | ||||||
|  | +#CONFIG_OPTS += no-pem
 | ||||||
|  | +#CONFIG_OPTS += no-md5
 | ||||||
|  | +#CONFIG_OPTS += no-sha
 | ||||||
|  | +#CONFIG_OPTS += no-hmac
 | ||||||
|  | +#CONFIG_OPTS += no-des
 | ||||||
|  | +#CONFIG_OPTS += no-aes
 | ||||||
|  | +#CONFIG_OPTS += no-bn
 | ||||||
|  | +CONFIG_OPTS += no-ec
 | ||||||
|  | +#CONFIG_OPTS += no-rsa
 | ||||||
|  | +#CONFIG_OPTS += no-dsa
 | ||||||
|  | +CONFIG_OPTS += no-ecdsa
 | ||||||
|  | +#CONFIG_OPTS += no-dh
 | ||||||
|  | +CONFIG_OPTS += no-ecdh
 | ||||||
|  | +CONFIG_OPTS += no-dso
 | ||||||
|  | +#CONFIG_OPTS += no-engine
 | ||||||
|  | +#CONFIG_OPTS += no-buffer
 | ||||||
|  | +#CONFIG_OPTS += no-bio
 | ||||||
|  | +#CONFIG_OPTS += no-stack
 | ||||||
|  | +#CONFIG_OPTS += no-lhash
 | ||||||
|  | +#CONFIG_OPTS += no-rand
 | ||||||
|  | +CONFIG_OPTS += no-err
 | ||||||
|  | +#CONFIG_OPTS += no-evp
 | ||||||
|  | +#CONFIG_OPTS += no-asn1
 | ||||||
|  | +#CONFIG_OPTS += no-x509
 | ||||||
|  | +#CONFIG_OPTS += no-x509v3
 | ||||||
|  | +#CONFIG_OPTS += no-txt_db
 | ||||||
|  | +#CONFIG_OPTS += no-pkcs7
 | ||||||
|  | +#CONFIG_OPTS += no-pkcs12
 | ||||||
|  | +#CONFIG_OPTS += no-comp
 | ||||||
|  | +#CONFIG_OPTS += no-ocsp
 | ||||||
|  | +#CONFIG_OPTS += no-ui
 | ||||||
|  | +#CONFIG_OPTS += no-store
 | ||||||
|  | +CONFIG_OPTS += no-pqueue
 | ||||||
|  | +
 | ||||||
|  | +# REVISIT: It would be better to have OPENSSL config options
 | ||||||
|  | +# which turn on this support as needed
 | ||||||
|  | +ifeq ($(CONFIG_USER_NESSUS_NASL)$(CONFIG_USER_SSH_SSH),)
 | ||||||
|  | +CONFIG_OPTS += no-ripemd
 | ||||||
|  | +CONFIG_OPTS += no-cast
 | ||||||
|  | +CONFIG_OPTS += no-rc4
 | ||||||
|  | +endif
 | ||||||
|  | +
 | ||||||
|  | +ifeq ($(CONFIG_USER_NESSUS_NASL)$(CONFIG_USER_SSH_SSH)$(CONFIG_PROP_SSCEP_SSCEP),)
 | ||||||
|  | +CONFIG_OPTS += no-bf
 | ||||||
|  | +endif
 | ||||||
|  | +
 | ||||||
|  | +ifeq ($(CONFIG_USER_OPENVPN_OPENVPN)$(CONFIG_USER_WGET),)
 | ||||||
|  | +CONFIG_OPTS += no-md4
 | ||||||
|  | +endif
 | ||||||
|  | +
 | ||||||
|  | +ifdef CONFIG_OCF_OCF
 | ||||||
|  | +CONFIG_OPTS += --with-cryptodev
 | ||||||
|  | +#CONFIG_OPTS += --with-cryptodev-digests
 | ||||||
|  | +endif
 | ||||||
|  | +
 | ||||||
|  | +#
 | ||||||
|  | +# if you want engines (they are dl loaded),  a few things
 | ||||||
|  | +# need to be setup,  you will also need to mod everything
 | ||||||
|  | +# to link against -ldl if it uses libcrypto.  By default we
 | ||||||
|  | +# disable it (cryptodev suport is still included).
 | ||||||
|  | +#
 | ||||||
|  | +ifdef YOU_WANT_DYNAMIC_HW_ENGINES_ENABLED
 | ||||||
|  | +LIBSSL_dlfcn = dlfcn
 | ||||||
|  | +else
 | ||||||
|  | +CONFIG_OPTS += no-hw
 | ||||||
|  | +LIBSSL_dlfcn =
 | ||||||
|  | +endif
 | ||||||
|  | +
 | ||||||
|  | +#
 | ||||||
|  | +# our libs aren't in the default location yet
 | ||||||
|  | +#
 | ||||||
|  | +LDFLAGS += -L$(ROOTDIR)/lib/libssl/build
 | ||||||
|  | +export LDFLAGS
 | ||||||
|  | +
 | ||||||
|  | +all: build/configured
 | ||||||
|  | +	$(MAKE) -C build
 | ||||||
|  | +	$(MAKE) -C build install_sw
 | ||||||
|  | +
 | ||||||
|  | +build/configured: makefile config Configure
 | ||||||
|  | +	rm -rf build
 | ||||||
|  | +	find . -type d > .dirs
 | ||||||
|  | +	find . ! -type d | grep -v ./makefile > .files
 | ||||||
|  | +	while read t; do mkdir -p build/$$t; done < .dirs
 | ||||||
|  | +	while read t; do ln -s `pwd`/$$t build/$$t; done < .files
 | ||||||
|  | +	rm -f .dirs .files
 | ||||||
|  | +	chmod +x build/config
 | ||||||
|  | +	cd build; MACHINE=uClinux-dist ./config $(CONFIG_OPTS)
 | ||||||
|  | +	$(MAKE) -C build depend
 | ||||||
|  | +	$(MAKE) -C build links
 | ||||||
|  | +	touch build/configured
 | ||||||
|  | +
 | ||||||
|  | +clean:
 | ||||||
|  | +	-rm -rf build
 | ||||||
|  | +
 | ||||||
|  | +romfs:
 | ||||||
|  | +	cd build/install/lib; \
 | ||||||
|  | +	for i in *.so*; do \
 | ||||||
|  | +		if [ -L $$i ]; then \
 | ||||||
|  | +			$(ROMFSINST) -s `find $$i -printf %l` /lib/$$i; \
 | ||||||
|  | +		elif [ -f $$i ]; then \
 | ||||||
|  | +			$(ROMFSINST) /lib/$$i; \
 | ||||||
|  | +		fi; \
 | ||||||
|  | +	done
 | ||||||
|  | +
 | ||||||
|  | +romfs_user:
 | ||||||
|  | +	$(ROMFSINST) -e CONFIG_USER_OPENSSL_APPS build/install/bin/openssl /bin/openssl
 | ||||||
|  | +	# $(ROMFSINST) -e CONFIG_USER_OPENSSL_APPS build/install/bin/c_rehash /bin/c_rehash
 | ||||||
|  | +
 | ||||||
|  | +
 | ||||||
|  | --- a/apps/apps.h
 | ||||||
|  | +++ b/apps/apps.h
 | ||||||
| @@ -112,7 +112,7 @@
 | @@ -112,7 +112,7 @@
 | ||||||
|  #ifndef HEADER_APPS_H |  #ifndef HEADER_APPS_H | ||||||
|  #define HEADER_APPS_H |  #define HEADER_APPS_H | ||||||
| @@ -130,10 +323,9 @@ diff -Naur openssl-0.9.8i.orig/apps/apps.h openssl-0.9.8i/apps/apps.h | |||||||
|   |   | ||||||
|  #include <openssl/bio.h> |  #include <openssl/bio.h> | ||||||
|  #include <openssl/x509.h> |  #include <openssl/x509.h> | ||||||
| diff -Naur openssl-0.9.8i.orig/apps/progs.h openssl-0.9.8i/apps/progs.h
 | --- a/apps/progs.h
 | ||||||
| --- openssl-0.9.8i.orig/apps/progs.h	2008-10-01 04:16:02.000000000 +0200
 | +++ b/apps/progs.h
 | ||||||
| +++ openssl-0.9.8i/apps/progs.h	2008-10-01 04:16:12.000000000 +0200
 | @@ -129,7 +129,9 @@ FUNCTION functions[] = {
 | ||||||
| @@ -129,7 +129,9 @@
 |  | ||||||
|  #ifndef OPENSSL_NO_ENGINE |  #ifndef OPENSSL_NO_ENGINE | ||||||
|  	{FUNC_TYPE_GENERAL,"engine",engine_main}, |  	{FUNC_TYPE_GENERAL,"engine",engine_main}, | ||||||
|  #endif |  #endif | ||||||
| @@ -143,10 +335,9 @@ diff -Naur openssl-0.9.8i.orig/apps/progs.h openssl-0.9.8i/apps/progs.h | |||||||
|  	{FUNC_TYPE_GENERAL,"prime",prime_main}, |  	{FUNC_TYPE_GENERAL,"prime",prime_main}, | ||||||
|  #ifndef OPENSSL_NO_MD2 |  #ifndef OPENSSL_NO_MD2 | ||||||
|  	{FUNC_TYPE_MD,"md2",dgst_main}, |  	{FUNC_TYPE_MD,"md2",dgst_main}, | ||||||
| diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c
 | --- a/apps/speed.c
 | ||||||
| --- openssl-0.9.8i.orig/apps/speed.c	2008-10-01 04:16:02.000000000 +0200
 | +++ b/apps/speed.c
 | ||||||
| +++ openssl-0.9.8i/apps/speed.c	2008-10-01 04:16:12.000000000 +0200
 | @@ -292,7 +292,7 @@ static const char *names[ALGOR_NUM]={
 | ||||||
| @@ -292,7 +292,7 @@
 |  | ||||||
|    "evp","sha256","sha512", |    "evp","sha256","sha512", | ||||||
|    "aes-128 ige","aes-192 ige","aes-256 ige"}; |    "aes-128 ige","aes-192 ige","aes-256 ige"}; | ||||||
|  static double results[ALGOR_NUM][SIZE_NUM]; |  static double results[ALGOR_NUM][SIZE_NUM]; | ||||||
| @@ -155,7 +346,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  static double rsa_results[RSA_NUM][2]; |  static double rsa_results[RSA_NUM][2]; | ||||||
|  static double dsa_results[DSA_NUM][2]; |  static double dsa_results[DSA_NUM][2]; | ||||||
|  #ifndef OPENSSL_NO_ECDSA |  #ifndef OPENSSL_NO_ECDSA | ||||||
| @@ -328,6 +328,79 @@
 | @@ -328,6 +328,79 @@ static SIGRETTYPE sig_done(int sig)
 | ||||||
|  #define START	0 |  #define START	0 | ||||||
|  #define STOP	1 |  #define STOP	1 | ||||||
|   |   | ||||||
| @@ -235,7 +426,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  #if defined(OPENSSL_SYS_NETWARE) |  #if defined(OPENSSL_SYS_NETWARE) | ||||||
|   |   | ||||||
|     /* for NetWare the best we can do is use clock() which returns the |     /* for NetWare the best we can do is use clock() which returns the | ||||||
| @@ -358,6 +431,11 @@
 | @@ -358,6 +431,11 @@ static double Time_F(int s)
 | ||||||
|  	{ |  	{ | ||||||
|  	double ret; |  	double ret; | ||||||
|   |   | ||||||
| @@ -247,7 +438,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  #ifdef USE_TOD |  #ifdef USE_TOD | ||||||
|  	if(usertime) |  	if(usertime) | ||||||
|  		{ |  		{ | ||||||
| @@ -832,6 +910,14 @@
 | @@ -832,6 +910,14 @@ int MAIN(int argc, char **argv)
 | ||||||
|  			j--;	/* Otherwise, -elapsed gets confused with |  			j--;	/* Otherwise, -elapsed gets confused with | ||||||
|  				   an algorithm. */ |  				   an algorithm. */ | ||||||
|  			} |  			} | ||||||
| @@ -262,7 +453,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  		else if	((argc > 0) && (strcmp(*argv,"-evp") == 0)) |  		else if	((argc > 0) && (strcmp(*argv,"-evp") == 0)) | ||||||
|  			{ |  			{ | ||||||
|  			argc--; |  			argc--; | ||||||
| @@ -1260,6 +1346,9 @@
 | @@ -1260,6 +1346,9 @@ int MAIN(int argc, char **argv)
 | ||||||
|  #ifdef HAVE_FORK |  #ifdef HAVE_FORK | ||||||
|  			BIO_printf(bio_err,"-multi n        run n benchmarks in parallel.\n"); |  			BIO_printf(bio_err,"-multi n        run n benchmarks in parallel.\n"); | ||||||
|  #endif |  #endif | ||||||
| @@ -272,7 +463,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  			goto end; |  			goto end; | ||||||
|  			} |  			} | ||||||
|  		argc--; |  		argc--; | ||||||
| @@ -1267,11 +1356,6 @@
 | @@ -1267,11 +1356,6 @@ int MAIN(int argc, char **argv)
 | ||||||
|  		j++; |  		j++; | ||||||
|  		} |  		} | ||||||
|   |   | ||||||
| @@ -284,7 +475,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  	if (j == 0) |  	if (j == 0) | ||||||
|  		{ |  		{ | ||||||
|  		for (i=0; i<ALGOR_NUM; i++) |  		for (i=0; i<ALGOR_NUM; i++) | ||||||
| @@ -1604,6 +1688,11 @@
 | @@ -1604,6 +1688,11 @@ int MAIN(int argc, char **argv)
 | ||||||
|  	signal(SIGALRM,sig_done); |  	signal(SIGALRM,sig_done); | ||||||
|  #endif /* SIGALRM */ |  #endif /* SIGALRM */ | ||||||
|   |   | ||||||
| @@ -296,7 +487,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  #ifndef OPENSSL_NO_MD2 |  #ifndef OPENSSL_NO_MD2 | ||||||
|  	if (doit[D_MD2]) |  	if (doit[D_MD2]) | ||||||
|  		{ |  		{ | ||||||
| @@ -2033,8 +2122,6 @@
 | @@ -2033,8 +2122,6 @@ int MAIN(int argc, char **argv)
 | ||||||
|  				/* -O3 -fschedule-insns messes up an |  				/* -O3 -fschedule-insns messes up an | ||||||
|  				 * optimization here!  names[D_EVP] |  				 * optimization here!  names[D_EVP] | ||||||
|  				 * somehow becomes NULL */ |  				 * somehow becomes NULL */ | ||||||
| @@ -305,7 +496,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|   |   | ||||||
|  				EVP_CIPHER_CTX_init(&ctx); |  				EVP_CIPHER_CTX_init(&ctx); | ||||||
|  				if(decrypt) |  				if(decrypt) | ||||||
| @@ -2043,6 +2130,9 @@
 | @@ -2043,6 +2130,9 @@ int MAIN(int argc, char **argv)
 | ||||||
|  					EVP_EncryptInit_ex(&ctx,evp_cipher,NULL,key16,iv); |  					EVP_EncryptInit_ex(&ctx,evp_cipher,NULL,key16,iv); | ||||||
|  				EVP_CIPHER_CTX_set_padding(&ctx, 0); |  				EVP_CIPHER_CTX_set_padding(&ctx, 0); | ||||||
|   |   | ||||||
| @@ -315,7 +506,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  				Time_F(START); |  				Time_F(START); | ||||||
|  				if(decrypt) |  				if(decrypt) | ||||||
|  					for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++) |  					for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++) | ||||||
| @@ -2107,6 +2197,8 @@
 | @@ -2107,6 +2197,8 @@ int MAIN(int argc, char **argv)
 | ||||||
|  					} |  					} | ||||||
|  				} |  				} | ||||||
|  			d=Time_F(STOP); |  			d=Time_F(STOP); | ||||||
| @@ -324,7 +515,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  			BIO_printf(bio_err,mr ? "+R1:%ld:%d:%.2f\n" |  			BIO_printf(bio_err,mr ? "+R1:%ld:%d:%.2f\n" | ||||||
|  				   : "%ld %d bit private RSA's in %.2fs\n", |  				   : "%ld %d bit private RSA's in %.2fs\n", | ||||||
|  				   count,rsa_bits[j],d); |  				   count,rsa_bits[j],d); | ||||||
| @@ -2142,6 +2234,8 @@
 | @@ -2142,6 +2234,8 @@ int MAIN(int argc, char **argv)
 | ||||||
|  					} |  					} | ||||||
|  				} |  				} | ||||||
|  			d=Time_F(STOP); |  			d=Time_F(STOP); | ||||||
| @@ -333,7 +524,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  			BIO_printf(bio_err,mr ? "+R2:%ld:%d:%.2f\n" |  			BIO_printf(bio_err,mr ? "+R2:%ld:%d:%.2f\n" | ||||||
|  				   : "%ld %d bit public RSA's in %.2fs\n", |  				   : "%ld %d bit public RSA's in %.2fs\n", | ||||||
|  				   count,rsa_bits[j],d); |  				   count,rsa_bits[j],d); | ||||||
| @@ -2201,6 +2295,8 @@
 | @@ -2201,6 +2295,8 @@ int MAIN(int argc, char **argv)
 | ||||||
|  					} |  					} | ||||||
|  				} |  				} | ||||||
|  			d=Time_F(STOP); |  			d=Time_F(STOP); | ||||||
| @@ -342,7 +533,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  			BIO_printf(bio_err,mr ? "+R3:%ld:%d:%.2f\n" |  			BIO_printf(bio_err,mr ? "+R3:%ld:%d:%.2f\n" | ||||||
|  				   : "%ld %d bit DSA signs in %.2fs\n", |  				   : "%ld %d bit DSA signs in %.2fs\n", | ||||||
|  				   count,dsa_bits[j],d); |  				   count,dsa_bits[j],d); | ||||||
| @@ -2236,6 +2332,8 @@
 | @@ -2236,6 +2332,8 @@ int MAIN(int argc, char **argv)
 | ||||||
|  					} |  					} | ||||||
|  				} |  				} | ||||||
|  			d=Time_F(STOP); |  			d=Time_F(STOP); | ||||||
| @@ -351,7 +542,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  			BIO_printf(bio_err,mr ? "+R4:%ld:%d:%.2f\n" |  			BIO_printf(bio_err,mr ? "+R4:%ld:%d:%.2f\n" | ||||||
|  				   : "%ld %d bit DSA verify in %.2fs\n", |  				   : "%ld %d bit DSA verify in %.2fs\n", | ||||||
|  				   count,dsa_bits[j],d); |  				   count,dsa_bits[j],d); | ||||||
| @@ -2530,14 +2628,23 @@
 | @@ -2530,14 +2628,23 @@ show_res:
 | ||||||
|  			fprintf(stdout,"The 'numbers' are in 1000s of bytes per second processed.\n");  |  			fprintf(stdout,"The 'numbers' are in 1000s of bytes per second processed.\n");  | ||||||
|  			fprintf(stdout,"type        "); |  			fprintf(stdout,"type        "); | ||||||
|  			} |  			} | ||||||
| @@ -376,7 +567,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  		if(mr) |  		if(mr) | ||||||
|  			fprintf(stdout,"+F:%d:%s",k,names[k]); |  			fprintf(stdout,"+F:%d:%s",k,names[k]); | ||||||
|  		else |  		else | ||||||
| @@ -2548,6 +2655,8 @@
 | @@ -2548,6 +2655,8 @@ show_res:
 | ||||||
|  				fprintf(stdout," %11.2fk",results[k][j]/1e3); |  				fprintf(stdout," %11.2fk",results[k][j]/1e3); | ||||||
|  			else |  			else | ||||||
|  				fprintf(stdout,mr ? ":%.2f" : " %11.2f ",results[k][j]); |  				fprintf(stdout,mr ? ":%.2f" : " %11.2f ",results[k][j]); | ||||||
| @@ -385,7 +576,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  			} |  			} | ||||||
|  		fprintf(stdout,"\n"); |  		fprintf(stdout,"\n"); | ||||||
|  		} |  		} | ||||||
| @@ -2562,13 +2671,18 @@
 | @@ -2562,13 +2671,18 @@ show_res:
 | ||||||
|  			j=0; |  			j=0; | ||||||
|  			} |  			} | ||||||
|  		if(mr) |  		if(mr) | ||||||
| @@ -411,7 +602,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  		} |  		} | ||||||
|  #endif |  #endif | ||||||
|  #ifndef OPENSSL_NO_DSA |  #ifndef OPENSSL_NO_DSA | ||||||
| @@ -2582,12 +2696,18 @@
 | @@ -2582,12 +2696,18 @@ show_res:
 | ||||||
|  			j=0; |  			j=0; | ||||||
|  			} |  			} | ||||||
|  		if(mr) |  		if(mr) | ||||||
| @@ -435,7 +626,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  		} |  		} | ||||||
|  #endif |  #endif | ||||||
|  #ifndef OPENSSL_NO_ECDSA |  #ifndef OPENSSL_NO_ECDSA | ||||||
| @@ -2712,8 +2832,10 @@
 | @@ -2712,8 +2832,10 @@ static void pkey_print_message(const cha
 | ||||||
|   |   | ||||||
|  static void print_result(int alg,int run_no,int count,double time_used) |  static void print_result(int alg,int run_no,int count,double time_used) | ||||||
|  	{ |  	{ | ||||||
| @@ -448,7 +639,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  	results[alg][run_no]=((double)count)/time_used*lengths[run_no]; |  	results[alg][run_no]=((double)count)/time_used*lengths[run_no]; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -2806,29 +2928,11 @@
 | @@ -2806,29 +2928,11 @@ static int do_multi(int multi)
 | ||||||
|  				p=buf+3; |  				p=buf+3; | ||||||
|  				alg=atoi(sstrsep(&p,sep)); |  				alg=atoi(sstrsep(&p,sep)); | ||||||
|  				sstrsep(&p,sep); |  				sstrsep(&p,sep); | ||||||
| @@ -481,7 +672,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  				} |  				} | ||||||
|  			else if(!strncmp(buf,"+F2:",4)) |  			else if(!strncmp(buf,"+F2:",4)) | ||||||
|  				{ |  				{ | ||||||
| @@ -2839,12 +2943,18 @@
 | @@ -2839,12 +2943,18 @@ static int do_multi(int multi)
 | ||||||
|  				k=atoi(sstrsep(&p,sep)); |  				k=atoi(sstrsep(&p,sep)); | ||||||
|  				sstrsep(&p,sep); |  				sstrsep(&p,sep); | ||||||
|   |   | ||||||
| @@ -500,7 +691,7 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  				d=atof(sstrsep(&p,sep)); |  				d=atof(sstrsep(&p,sep)); | ||||||
|  				if(n) |  				if(n) | ||||||
|  					rsa_results[k][1]=1/(1/rsa_results[k][1]+1/d); |  					rsa_results[k][1]=1/(1/rsa_results[k][1]+1/d); | ||||||
| @@ -2860,12 +2970,18 @@
 | @@ -2860,12 +2970,18 @@ static int do_multi(int multi)
 | ||||||
|  				k=atoi(sstrsep(&p,sep)); |  				k=atoi(sstrsep(&p,sep)); | ||||||
|  				sstrsep(&p,sep); |  				sstrsep(&p,sep); | ||||||
|   |   | ||||||
| @@ -519,67 +710,8 @@ diff -Naur openssl-0.9.8i.orig/apps/speed.c openssl-0.9.8i/apps/speed.c | |||||||
|  				d=atof(sstrsep(&p,sep)); |  				d=atof(sstrsep(&p,sep)); | ||||||
|  				if(n) |  				if(n) | ||||||
|  					dsa_results[k][1]=1/(1/dsa_results[k][1]+1/d); |  					dsa_results[k][1]=1/(1/dsa_results[k][1]+1/d); | ||||||
| diff -Naur openssl-0.9.8i.orig/config openssl-0.9.8i/config
 | --- a/crypto/cryptlib.h
 | ||||||
| --- openssl-0.9.8i.orig/config	2008-10-01 04:16:01.000000000 +0200
 | +++ b/crypto/cryptlib.h
 | ||||||
| +++ openssl-0.9.8i/config	2008-10-01 04:16:12.000000000 +0200
 |  | ||||||
| @@ -48,10 +48,10 @@
 |  | ||||||
|   |  | ||||||
|  # First get uname entries that we use below |  | ||||||
|   |  | ||||||
| -MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
 |  | ||||||
| -RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
 |  | ||||||
| -SYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
 |  | ||||||
| -VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
 |  | ||||||
| +[ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
 |  | ||||||
| +[ "$RELEASE" ] || RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
 |  | ||||||
| +[ "$SYSTEM" ]  || SYSTEM=`(uname -s) 2>/dev/null`  || SYSTEM="unknown"
 |  | ||||||
| +[ "$VERSION" ] || VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
 |  | ||||||
|   |  | ||||||
|   |  | ||||||
|  # Now test for ISC and SCO, since it is has a braindamaged uname. |  | ||||||
| @@ -270,7 +270,7 @@
 |  | ||||||
|  		echo "ppc-apple-darwin${VERSION}" |  | ||||||
|  		;; |  | ||||||
|  	    *) |  | ||||||
| -		echo "i386-apple-darwin${VERSION}"
 |  | ||||||
| +		echo "${MACHINE}-apple-darwin${VERSION}"
 |  | ||||||
|  		;; |  | ||||||
|  	esac |  | ||||||
|  	exit 0 |  | ||||||
| @@ -401,9 +401,9 @@
 |  | ||||||
|   |  | ||||||
|  # figure out if gcc is available and if so we use it otherwise |  | ||||||
|  # we fallback to whatever cc does on the system |  | ||||||
| -GCCVER=`(gcc -dumpversion) 2>/dev/null`
 |  | ||||||
| +CC="${CC:-gcc}"
 |  | ||||||
| +GCCVER=`(${CC} -dumpversion) 2>/dev/null`
 |  | ||||||
|  if [ "$GCCVER" != "" ]; then |  | ||||||
| -  CC=gcc
 |  | ||||||
|    # then strip off whatever prefix egcs prepends the number with... |  | ||||||
|    # Hopefully, this will work for any future prefixes as well. |  | ||||||
|    GCCVER=`echo $GCCVER | LC_ALL=C sed 's/^[a-zA-Z]*\-//'` |  | ||||||
| @@ -413,7 +413,7 @@
 |  | ||||||
|    # peak single digit before and after first dot, e.g. 2.95.1 gives 29 |  | ||||||
|    GCCVER=`echo $GCCVER | sed 's/\([0-9]\)\.\([0-9]\).*/\1\2/'` |  | ||||||
|  else |  | ||||||
| -  CC=cc
 |  | ||||||
| +  CC="${CC:-cc}"
 |  | ||||||
|  fi |  | ||||||
|  GCCVER=${GCCVER:-0} |  | ||||||
|  if [ "$SYSTEM" = "HP-UX" ];then |  | ||||||
| @@ -482,6 +482,9 @@
 |  | ||||||
|  # script above so we end up with values in vars but that would take |  | ||||||
|  # more time that I want to waste at the moment |  | ||||||
|  case "$GUESSOS" in |  | ||||||
| +  uClinux*)
 |  | ||||||
| +    OUT=uClinux-dist
 |  | ||||||
| +	;;
 |  | ||||||
|    mips2-sgi-irix) |  | ||||||
|  	CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'` |  | ||||||
|  	CPU=${CPU:-0} |  | ||||||
| diff -Naur openssl-0.9.8i.orig/crypto/cryptlib.h openssl-0.9.8i/crypto/cryptlib.h
 |  | ||||||
| --- openssl-0.9.8i.orig/crypto/cryptlib.h	2008-10-01 04:16:01.000000000 +0200
 |  | ||||||
| +++ openssl-0.9.8i/crypto/cryptlib.h	2008-10-01 04:16:12.000000000 +0200
 |  | ||||||
| @@ -62,7 +62,7 @@
 | @@ -62,7 +62,7 @@
 | ||||||
|  #include <stdlib.h> |  #include <stdlib.h> | ||||||
|  #include <string.h> |  #include <string.h> | ||||||
| @@ -589,10 +721,9 @@ diff -Naur openssl-0.9.8i.orig/crypto/cryptlib.h openssl-0.9.8i/crypto/cryptlib. | |||||||
|   |   | ||||||
|  #ifdef OPENSSL_USE_APPLINK |  #ifdef OPENSSL_USE_APPLINK | ||||||
|  #define BIO_FLAGS_UPLINK 0x8000 |  #define BIO_FLAGS_UPLINK 0x8000 | ||||||
| diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_all.c openssl-0.9.8i/crypto/engine/eng_all.c
 | --- a/crypto/engine/eng_all.c
 | ||||||
| --- openssl-0.9.8i.orig/crypto/engine/eng_all.c	2008-10-01 04:16:01.000000000 +0200
 | +++ b/crypto/engine/eng_all.c
 | ||||||
| +++ openssl-0.9.8i/crypto/engine/eng_all.c	2008-10-01 04:17:20.000000000 +0200
 | @@ -104,7 +104,7 @@ void ENGINE_load_builtin_engines(void)
 | ||||||
| @@ -104,7 +104,7 @@
 |  | ||||||
|  #endif |  #endif | ||||||
|  #endif |  #endif | ||||||
|  #ifndef OPENSSL_NO_HW |  #ifndef OPENSSL_NO_HW | ||||||
| @@ -601,7 +732,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_all.c openssl-0.9.8i/crypto/eng | |||||||
|  	ENGINE_load_cryptodev(); |  	ENGINE_load_cryptodev(); | ||||||
|  #endif |  #endif | ||||||
|  #if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG) |  #if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG) | ||||||
| @@ -113,7 +113,7 @@
 | @@ -113,7 +113,7 @@ void ENGINE_load_builtin_engines(void)
 | ||||||
|  #endif |  #endif | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -610,10 +741,9 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_all.c openssl-0.9.8i/crypto/eng | |||||||
|  void ENGINE_setup_bsd_cryptodev(void) { |  void ENGINE_setup_bsd_cryptodev(void) { | ||||||
|  	static int bsd_cryptodev_default_loaded = 0; |  	static int bsd_cryptodev_default_loaded = 0; | ||||||
|  	if (!bsd_cryptodev_default_loaded) { |  	if (!bsd_cryptodev_default_loaded) { | ||||||
| diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/crypto/engine/eng_cryptodev.c
 | --- a/crypto/engine/eng_cryptodev.c
 | ||||||
| --- openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c	2008-10-01 04:16:01.000000000 +0200
 | +++ b/crypto/engine/eng_cryptodev.c
 | ||||||
| +++ openssl-0.9.8i/crypto/engine/eng_cryptodev.c	2008-10-01 04:16:12.000000000 +0200
 | @@ -68,6 +68,16 @@ ENGINE_load_cryptodev(void)
 | ||||||
| @@ -68,6 +68,16 @@
 |  | ||||||
|  struct dev_crypto_state { |  struct dev_crypto_state { | ||||||
|  	struct session_op d_sess; |  	struct session_op d_sess; | ||||||
|  	int d_fd; |  	int d_fd; | ||||||
| @@ -630,7 +760,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  static u_int32_t cryptodev_asymfeat = 0; |  static u_int32_t cryptodev_asymfeat = 0; | ||||||
| @@ -75,9 +85,11 @@
 | @@ -75,9 +85,11 @@ static u_int32_t cryptodev_asymfeat = 0;
 | ||||||
|  static int get_asym_dev_crypto(void); |  static int get_asym_dev_crypto(void); | ||||||
|  static int open_dev_crypto(void); |  static int open_dev_crypto(void); | ||||||
|  static int get_dev_crypto(void); |  static int get_dev_crypto(void); | ||||||
| @@ -642,7 +772,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  static int get_cryptodev_ciphers(const int **cnids); |  static int get_cryptodev_ciphers(const int **cnids); | ||||||
|  static int get_cryptodev_digests(const int **cnids); |  static int get_cryptodev_digests(const int **cnids); | ||||||
|  static int cryptodev_usable_ciphers(const int **nids); |  static int cryptodev_usable_ciphers(const int **nids); | ||||||
| @@ -100,7 +112,7 @@
 | @@ -100,7 +112,7 @@ static int cryptodev_asym(struct crypt_k
 | ||||||
|  static int cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a, |  static int cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a, | ||||||
|      const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); |      const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); | ||||||
|  static int cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, |  static int cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, | ||||||
| @@ -651,15 +781,20 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  static int cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx); |  static int cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx); | ||||||
|  static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a, |  static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a, | ||||||
|      const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); |      const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); | ||||||
| @@ -133,6 +145,7 @@
 | @@ -130,9 +142,12 @@ static struct {
 | ||||||
|  |  	int	ivmax; | ||||||
|  |  	int	keylen; | ||||||
|  |  } ciphers[] = { | ||||||
|  | +	{ CRYPTO_ARC4,			NID_rc4,		0,	16, },
 | ||||||
|  	{ CRYPTO_DES_CBC,		NID_des_cbc,		8,	 8, }, |  	{ CRYPTO_DES_CBC,		NID_des_cbc,		8,	 8, }, | ||||||
|  	{ CRYPTO_3DES_CBC,		NID_des_ede3_cbc,	8,	24, }, |  	{ CRYPTO_3DES_CBC,		NID_des_ede3_cbc,	8,	24, }, | ||||||
|  	{ CRYPTO_AES_CBC,		NID_aes_128_cbc,	16,	16, }, |  	{ CRYPTO_AES_CBC,		NID_aes_128_cbc,	16,	16, }, | ||||||
|  | +	{ CRYPTO_AES_CBC,		NID_aes_192_cbc,	16,	24, },
 | ||||||
| +	{ CRYPTO_AES_CBC,		NID_aes_256_cbc,	16,	32, },
 | +	{ CRYPTO_AES_CBC,		NID_aes_256_cbc,	16,	32, },
 | ||||||
|  	{ CRYPTO_BLF_CBC,		NID_bf_cbc,		8,	16, }, |  	{ CRYPTO_BLF_CBC,		NID_bf_cbc,		8,	16, }, | ||||||
|  	{ CRYPTO_CAST_CBC,		NID_cast5_cbc,		8,	16, }, |  	{ CRYPTO_CAST_CBC,		NID_cast5_cbc,		8,	16, }, | ||||||
|  	{ CRYPTO_SKIPJACK_CBC,		NID_undef,		0,	 0, }, |  	{ CRYPTO_SKIPJACK_CBC,		NID_undef,		0,	 0, }, | ||||||
| @@ -142,14 +155,15 @@
 | @@ -142,14 +157,15 @@ static struct {
 | ||||||
|  static struct { |  static struct { | ||||||
|  	int	id; |  	int	id; | ||||||
|  	int	nid; |  	int	nid; | ||||||
| @@ -682,7 +817,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  /* |  /* | ||||||
| @@ -176,10 +190,17 @@
 | @@ -176,10 +192,17 @@ open_dev_crypto(void)
 | ||||||
|  static int |  static int | ||||||
|  get_dev_crypto(void) |  get_dev_crypto(void) | ||||||
|  { |  { | ||||||
| @@ -703,7 +838,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  	if (ioctl(fd, CRIOGET, &retfd) == -1) |  	if (ioctl(fd, CRIOGET, &retfd) == -1) | ||||||
|  		return (-1); |  		return (-1); | ||||||
|   |   | ||||||
| @@ -202,6 +223,7 @@
 | @@ -202,6 +225,7 @@ get_asym_dev_crypto(void)
 | ||||||
|  	return fd; |  	return fd; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -711,7 +846,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  /* |  /* | ||||||
|   * XXXX this needs to be set for each alg - and determined from |   * XXXX this needs to be set for each alg - and determined from | ||||||
|   * a running card. |   * a running card. | ||||||
| @@ -245,6 +267,7 @@
 | @@ -245,6 +269,7 @@ cipher_nid_to_cryptodev(int nid)
 | ||||||
|  			return (ciphers[i].id); |  			return (ciphers[i].id); | ||||||
|  	return (0); |  	return (0); | ||||||
|  } |  } | ||||||
| @@ -719,7 +854,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|   |   | ||||||
|  /* |  /* | ||||||
|   * Find out what ciphers /dev/crypto will let us have a session for. |   * Find out what ciphers /dev/crypto will let us have a session for. | ||||||
| @@ -264,7 +287,7 @@
 | @@ -264,7 +289,7 @@ get_cryptodev_ciphers(const int **cnids)
 | ||||||
|  		return (0); |  		return (0); | ||||||
|  	} |  	} | ||||||
|  	memset(&sess, 0, sizeof(sess)); |  	memset(&sess, 0, sizeof(sess)); | ||||||
| @@ -728,7 +863,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|   |   | ||||||
|  	for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { |  	for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { | ||||||
|  		if (ciphers[i].nid == NID_undef) |  		if (ciphers[i].nid == NID_undef) | ||||||
| @@ -303,10 +326,12 @@
 | @@ -303,10 +328,12 @@ get_cryptodev_digests(const int **cnids)
 | ||||||
|  		return (0); |  		return (0); | ||||||
|  	} |  	} | ||||||
|  	memset(&sess, 0, sizeof(sess)); |  	memset(&sess, 0, sizeof(sess)); | ||||||
| @@ -741,7 +876,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  		sess.cipher = 0; |  		sess.cipher = 0; | ||||||
|  		if (ioctl(fd, CIOCGSESSION, &sess) != -1 && |  		if (ioctl(fd, CIOCGSESSION, &sess) != -1 && | ||||||
|  		    ioctl(fd, CIOCFSESSION, &sess.ses) != -1) |  		    ioctl(fd, CIOCFSESSION, &sess.ses) != -1) | ||||||
| @@ -351,6 +376,9 @@
 | @@ -351,6 +378,9 @@ cryptodev_usable_ciphers(const int **nid
 | ||||||
|  static int |  static int | ||||||
|  cryptodev_usable_digests(const int **nids) |  cryptodev_usable_digests(const int **nids) | ||||||
|  { |  { | ||||||
| @@ -751,7 +886,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  	/* |  	/* | ||||||
|  	 * XXXX just disable all digests for now, because it sucks. |  	 * XXXX just disable all digests for now, because it sucks. | ||||||
|  	 * we need a better way to decide this - i.e. I may not |  	 * we need a better way to decide this - i.e. I may not | ||||||
| @@ -365,6 +393,7 @@
 | @@ -365,6 +395,7 @@ cryptodev_usable_digests(const int **nid
 | ||||||
|  	 */ |  	 */ | ||||||
|  	*nids = NULL; |  	*nids = NULL; | ||||||
|  	return (0); |  	return (0); | ||||||
| @@ -759,16 +894,16 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static int |  static int | ||||||
| @@ -427,16 +456,20 @@
 | @@ -427,16 +458,20 @@ cryptodev_init_key(EVP_CIPHER_CTX *ctx, 
 | ||||||
|  { |  { | ||||||
|  	struct dev_crypto_state *state = ctx->cipher_data; |  	struct dev_crypto_state *state = ctx->cipher_data; | ||||||
|  	struct session_op *sess = &state->d_sess; |  	struct session_op *sess = &state->d_sess; | ||||||
| -	int cipher;
 | -	int cipher;
 | ||||||
| -
 |  | ||||||
| -	if ((cipher = cipher_nid_to_cryptodev(ctx->cipher->nid)) == NID_undef)
 |  | ||||||
| -		return (0);
 |  | ||||||
| +	int cipher, i;
 | +	int cipher, i;
 | ||||||
|   |   | ||||||
|  | -	if ((cipher = cipher_nid_to_cryptodev(ctx->cipher->nid)) == NID_undef)
 | ||||||
|  | -		return (0);
 | ||||||
|  | -
 | ||||||
| -	if (ctx->cipher->iv_len > cryptodev_max_iv(cipher))
 | -	if (ctx->cipher->iv_len > cryptodev_max_iv(cipher))
 | ||||||
| -		return (0);
 | -		return (0);
 | ||||||
| +	for (i = 0; ciphers[i].id; i++)
 | +	for (i = 0; ciphers[i].id; i++)
 | ||||||
| @@ -787,10 +922,44 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|   |   | ||||||
|  	memset(sess, 0, sizeof(struct session_op)); |  	memset(sess, 0, sizeof(struct session_op)); | ||||||
|   |   | ||||||
| @@ -563,6 +596,19 @@
 | @@ -496,6 +531,20 @@ cryptodev_cleanup(EVP_CIPHER_CTX *ctx)
 | ||||||
|  |   * gets called when libcrypto requests a cipher NID. | ||||||
|  |   */ | ||||||
|  |   | ||||||
|  | +/* RC4 */
 | ||||||
|  | +const EVP_CIPHER cryptodev_rc4 = {
 | ||||||
|  | +	NID_rc4,
 | ||||||
|  | +	1, 16, 0,
 | ||||||
|  | +	EVP_CIPH_VARIABLE_LENGTH,
 | ||||||
|  | +	cryptodev_init_key,
 | ||||||
|  | +	cryptodev_cipher,
 | ||||||
|  | +	cryptodev_cleanup,
 | ||||||
|  | +	sizeof(struct dev_crypto_state),
 | ||||||
|  | +	NULL,
 | ||||||
|  | +	NULL,
 | ||||||
|  | +	NULL
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  |  /* DES CBC EVP */ | ||||||
|  |  const EVP_CIPHER cryptodev_des_cbc = { | ||||||
|  |  	NID_des_cbc, | ||||||
|  | @@ -563,6 +612,32 @@ const EVP_CIPHER cryptodev_aes_cbc = {
 | ||||||
|  	NULL |  	NULL | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  | +const EVP_CIPHER cryptodev_aes_192_cbc = {
 | ||||||
|  | +	NID_aes_192_cbc,
 | ||||||
|  | +	16, 24, 16,
 | ||||||
|  | +	EVP_CIPH_CBC_MODE,
 | ||||||
|  | +	cryptodev_init_key,
 | ||||||
|  | +	cryptodev_cipher,
 | ||||||
|  | +	cryptodev_cleanup,
 | ||||||
|  | +	sizeof(struct dev_crypto_state),
 | ||||||
|  | +	EVP_CIPHER_set_asn1_iv,
 | ||||||
|  | +	EVP_CIPHER_get_asn1_iv,
 | ||||||
|  | +	NULL
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
| +const EVP_CIPHER cryptodev_aes_256_cbc = {
 | +const EVP_CIPHER cryptodev_aes_256_cbc = {
 | ||||||
| +	NID_aes_256_cbc,
 | +	NID_aes_256_cbc,
 | ||||||
| +	16, 32, 16,
 | +	16, 32, 16,
 | ||||||
| @@ -807,17 +976,30 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  /* |  /* | ||||||
|   * Registered by the ENGINE when used to find out how to deal with |   * Registered by the ENGINE when used to find out how to deal with | ||||||
|   * a particular NID in the ENGINE. this says what we'll do at the |   * a particular NID in the ENGINE. this says what we'll do at the | ||||||
| @@ -591,6 +637,9 @@
 | @@ -576,6 +651,9 @@ cryptodev_engine_ciphers(ENGINE *e, cons
 | ||||||
|  |  		return (cryptodev_usable_ciphers(nids)); | ||||||
|  |   | ||||||
|  |  	switch (nid) { | ||||||
|  | +	case NID_rc4:
 | ||||||
|  | +		*cipher = &cryptodev_rc4;
 | ||||||
|  | +		break;
 | ||||||
|  |  	case NID_des_ede3_cbc: | ||||||
|  |  		*cipher = &cryptodev_3des_cbc; | ||||||
|  |  		break; | ||||||
|  | @@ -591,6 +669,12 @@ cryptodev_engine_ciphers(ENGINE *e, cons
 | ||||||
|  	case NID_aes_128_cbc: |  	case NID_aes_128_cbc: | ||||||
|  		*cipher = &cryptodev_aes_cbc; |  		*cipher = &cryptodev_aes_cbc; | ||||||
|  		break; |  		break; | ||||||
|  | +	case NID_aes_192_cbc:
 | ||||||
|  | +		*cipher = &cryptodev_aes_192_cbc;
 | ||||||
|  | +		break;
 | ||||||
| +	case NID_aes_256_cbc:
 | +	case NID_aes_256_cbc:
 | ||||||
| +		*cipher = &cryptodev_aes_256_cbc;
 | +		*cipher = &cryptodev_aes_256_cbc;
 | ||||||
| +		break;
 | +		break;
 | ||||||
|  	default: |  	default: | ||||||
|  		*cipher = NULL; |  		*cipher = NULL; | ||||||
|  		break; |  		break; | ||||||
| @@ -598,6 +647,234 @@
 | @@ -598,6 +682,234 @@ cryptodev_engine_ciphers(ENGINE *e, cons
 | ||||||
|  	return (*cipher != NULL); |  	return (*cipher != NULL); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1052,7 +1234,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  static int |  static int | ||||||
|  cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest, |  cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest, | ||||||
|      const int **nids, int nid) |      const int **nids, int nid) | ||||||
| @@ -606,10 +883,15 @@
 | @@ -606,10 +918,15 @@ cryptodev_engine_digests(ENGINE *e, cons
 | ||||||
|  		return (cryptodev_usable_digests(nids)); |  		return (cryptodev_usable_digests(nids)); | ||||||
|   |   | ||||||
|  	switch (nid) { |  	switch (nid) { | ||||||
| @@ -1069,7 +1251,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  		*digest = NULL; |  		*digest = NULL; | ||||||
|  		break; |  		break; | ||||||
|  	} |  	} | ||||||
| @@ -625,7 +907,7 @@
 | @@ -625,7 +942,7 @@ static int
 | ||||||
|  bn2crparam(const BIGNUM *a, struct crparam *crp) |  bn2crparam(const BIGNUM *a, struct crparam *crp) | ||||||
|  { |  { | ||||||
|  	int i, j, k; |  	int i, j, k; | ||||||
| @@ -1078,7 +1260,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  	u_char *b; |  	u_char *b; | ||||||
|   |   | ||||||
|  	crp->crp_p = NULL; |  	crp->crp_p = NULL; | ||||||
| @@ -637,6 +919,7 @@
 | @@ -637,6 +954,7 @@ bn2crparam(const BIGNUM *a, struct crpar
 | ||||||
|  	b = malloc(bytes); |  	b = malloc(bytes); | ||||||
|  	if (b == NULL) |  	if (b == NULL) | ||||||
|  		return (1); |  		return (1); | ||||||
| @@ -1086,7 +1268,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|   |   | ||||||
|  	crp->crp_p = b; |  	crp->crp_p = b; | ||||||
|  	crp->crp_nbits = bits; |  	crp->crp_nbits = bits; | ||||||
| @@ -681,7 +964,7 @@
 | @@ -681,7 +999,7 @@ zapparams(struct crypt_kop *kop)
 | ||||||
|  { |  { | ||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
| @@ -1095,7 +1277,7 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  		if (kop->crk_param[i].crp_p) |  		if (kop->crk_param[i].crp_p) | ||||||
|  			free(kop->crk_param[i].crp_p); |  			free(kop->crk_param[i].crp_p); | ||||||
|  		kop->crk_param[i].crp_p = NULL; |  		kop->crk_param[i].crp_p = NULL; | ||||||
| @@ -756,12 +1039,10 @@
 | @@ -756,12 +1074,10 @@ err:
 | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  static int |  static int | ||||||
| @@ -1110,22 +1292,9 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_cryptodev.c openssl-0.9.8i/cryp | |||||||
|  	r = cryptodev_bn_mod_exp(r0, I, rsa->d, rsa->n, ctx, NULL); |  	r = cryptodev_bn_mod_exp(r0, I, rsa->d, rsa->n, ctx, NULL); | ||||||
|  	BN_CTX_free(ctx); |  	BN_CTX_free(ctx); | ||||||
|  	return (r); |  	return (r); | ||||||
| diff -Naur openssl-0.9.8i.orig/crypto/engine/eng_table.c openssl-0.9.8i/crypto/engine/eng_table.c
 | --- a/crypto/engine/engine.h
 | ||||||
| --- openssl-0.9.8i.orig/crypto/engine/eng_table.c	2008-10-01 04:16:01.000000000 +0200
 | +++ b/crypto/engine/engine.h
 | ||||||
| +++ openssl-0.9.8i/crypto/engine/eng_table.c	2008-10-01 04:16:12.000000000 +0200
 | @@ -703,7 +703,7 @@ typedef int (*dynamic_bind_engine)(ENGIN
 | ||||||
| @@ -186,6 +186,8 @@
 |  | ||||||
|  		{ |  | ||||||
|  		engine_unlocked_finish(e, 0); |  | ||||||
|  		pile->funct = NULL; |  | ||||||
| +		/* "touch" this ENGINE_CIPHER */
 |  | ||||||
| +		pile->uptodate = 0;
 |  | ||||||
|  		} |  | ||||||
|  	} |  | ||||||
|  static IMPLEMENT_LHASH_DOALL_ARG_FN(int_unregister_cb,ENGINE_PILE *,ENGINE *) |  | ||||||
| diff -Naur openssl-0.9.8i.orig/crypto/engine/engine.h openssl-0.9.8i/crypto/engine/engine.h
 |  | ||||||
| --- openssl-0.9.8i.orig/crypto/engine/engine.h	2008-10-01 04:16:01.000000000 +0200
 |  | ||||||
| +++ openssl-0.9.8i/crypto/engine/engine.h	2008-10-01 04:16:12.000000000 +0200
 |  | ||||||
| @@ -703,7 +703,7 @@
 |  | ||||||
|   * values. */ |   * values. */ | ||||||
|  void *ENGINE_get_static_state(void); |  void *ENGINE_get_static_state(void); | ||||||
|   |   | ||||||
| @@ -1134,10 +1303,9 @@ diff -Naur openssl-0.9.8i.orig/crypto/engine/engine.h openssl-0.9.8i/crypto/engi | |||||||
|  void ENGINE_setup_bsd_cryptodev(void); |  void ENGINE_setup_bsd_cryptodev(void); | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
| diff -Naur openssl-0.9.8i.orig/crypto/evp/c_all.c openssl-0.9.8i/crypto/evp/c_all.c
 | --- a/crypto/evp/c_all.c
 | ||||||
| --- openssl-0.9.8i.orig/crypto/evp/c_all.c	2008-10-01 04:16:01.000000000 +0200
 | +++ b/crypto/evp/c_all.c
 | ||||||
| +++ openssl-0.9.8i/crypto/evp/c_all.c	2008-10-01 04:16:12.000000000 +0200
 | @@ -83,7 +83,7 @@ void OPENSSL_add_all_algorithms_noconf(v
 | ||||||
| @@ -83,7 +83,7 @@
 |  | ||||||
|  	OpenSSL_add_all_ciphers(); |  	OpenSSL_add_all_ciphers(); | ||||||
|  	OpenSSL_add_all_digests(); |  	OpenSSL_add_all_digests(); | ||||||
|  #ifndef OPENSSL_NO_ENGINE |  #ifndef OPENSSL_NO_ENGINE | ||||||
| @@ -1146,10 +1314,9 @@ diff -Naur openssl-0.9.8i.orig/crypto/evp/c_all.c openssl-0.9.8i/crypto/evp/c_al | |||||||
|  	ENGINE_setup_bsd_cryptodev(); |  	ENGINE_setup_bsd_cryptodev(); | ||||||
|  # endif |  # endif | ||||||
|  #endif |  #endif | ||||||
| diff -Naur openssl-0.9.8i.orig/crypto/evp/c_alld.c openssl-0.9.8i/crypto/evp/c_alld.c
 | --- a/crypto/evp/c_alld.c
 | ||||||
| --- openssl-0.9.8i.orig/crypto/evp/c_alld.c	2008-10-01 04:16:01.000000000 +0200
 | +++ b/crypto/evp/c_alld.c
 | ||||||
| +++ openssl-0.9.8i/crypto/evp/c_alld.c	2008-10-01 04:16:12.000000000 +0200
 | @@ -81,7 +81,7 @@ void OpenSSL_add_all_digests(void)
 | ||||||
| @@ -81,7 +81,7 @@
 |  | ||||||
|  	EVP_add_digest(EVP_dss()); |  	EVP_add_digest(EVP_dss()); | ||||||
|  #endif |  #endif | ||||||
|  #endif |  #endif | ||||||
| @@ -1158,10 +1325,9 @@ diff -Naur openssl-0.9.8i.orig/crypto/evp/c_alld.c openssl-0.9.8i/crypto/evp/c_a | |||||||
|  	EVP_add_digest(EVP_sha1()); |  	EVP_add_digest(EVP_sha1()); | ||||||
|  	EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); |  	EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); | ||||||
|  	EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); |  	EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); | ||||||
| diff -Naur openssl-0.9.8i.orig/engines/Makefile openssl-0.9.8i/engines/Makefile
 | --- a/engines/Makefile
 | ||||||
| --- openssl-0.9.8i.orig/engines/Makefile	2008-10-01 04:16:01.000000000 +0200
 | +++ b/engines/Makefile
 | ||||||
| +++ openssl-0.9.8i/engines/Makefile	2008-10-01 04:16:12.000000000 +0200
 | @@ -96,6 +96,7 @@ install:
 | ||||||
| @@ -96,6 +96,7 @@
 |  | ||||||
|  			( echo installing $$l; \ |  			( echo installing $$l; \ | ||||||
|  			  if [ "$(PLATFORM)" != "Cygwin" ]; then \ |  			  if [ "$(PLATFORM)" != "Cygwin" ]; then \ | ||||||
|  				case "$(CFLAGS)" in \ |  				case "$(CFLAGS)" in \ | ||||||
| @@ -1169,15 +1335,14 @@ diff -Naur openssl-0.9.8i.orig/engines/Makefile openssl-0.9.8i/engines/Makefile | |||||||
|  				*DSO_DLFCN*)	sfx="so";;	\ |  				*DSO_DLFCN*)	sfx="so";;	\ | ||||||
|  				*DSO_DL*)	sfx="sl";;	\ |  				*DSO_DL*)	sfx="sl";;	\ | ||||||
|  				*)		sfx="bad";;	\ |  				*)		sfx="bad";;	\ | ||||||
| diff -Naur openssl-0.9.8i.orig/util/domd openssl-0.9.8i/util/domd
 | --- a/util/domd
 | ||||||
| --- openssl-0.9.8i.orig/util/domd	2008-10-01 04:16:01.000000000 +0200
 | +++ b/util/domd
 | ||||||
| +++ openssl-0.9.8i/util/domd	2008-10-01 04:16:13.000000000 +0200
 | @@ -23,13 +23,17 @@ if [ "$D" = "gcc" ]; then
 | ||||||
| @@ -23,13 +23,17 @@
 |  | ||||||
|      done |      done | ||||||
|      sed -e '/^# DO NOT DELETE.*/,$d' < Makefile > Makefile.tmp |      sed -e '/^# DO NOT DELETE.*/,$d' < Makefile > Makefile.tmp | ||||||
|      echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp |      echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp | ||||||
| -    ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp
 | -    ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp
 | ||||||
| +    ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp &&
 | +    ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp && \
 | ||||||
|      ${PERL} $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new |      ${PERL} $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new | ||||||
| +      RC=$?
 | +      RC=$?
 | ||||||
|      rm -f Makefile.tmp |      rm -f Makefile.tmp | ||||||
| @@ -1,494 +0,0 @@ | |||||||
| diff -Nur openssl-0.9.8h/crypto/engine/cryptodev.h openssl-0.9.8h-ocf/crypto/engine/cryptodev.h |  | ||||||
| --- openssl-0.9.8h/crypto/engine/cryptodev.h	1970-01-01 01:00:00.000000000 +0100 |  | ||||||
| +++ openssl-0.9.8h-ocf/crypto/engine/cryptodev.h	2008-07-13 15:32:53.000000000 +0200 |  | ||||||
| @@ -0,0 +1,478 @@ |  | ||||||
| +/*	$FreeBSD: src/sys/opencrypto/cryptodev.h,v 1.25 2007/05/09 19:37:02 gnn Exp $	*/ |  | ||||||
| +/*	$OpenBSD: cryptodev.h,v 1.31 2002/06/11 11:14:29 beck Exp $	*/ |  | ||||||
| + |  | ||||||
| +/*- |  | ||||||
| + * Linux port done by David McCullough <david_mccullough@securecomputing.com> |  | ||||||
| + * Copyright (C) 2006-2007 David McCullough |  | ||||||
| + * Copyright (C) 2004-2005 Intel Corporation. |  | ||||||
| + * The license and original author are listed below. |  | ||||||
| + * |  | ||||||
| + * The author of this code is Angelos D. Keromytis (angelos@cis.upenn.edu) |  | ||||||
| + * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting |  | ||||||
| + * |  | ||||||
| + * This code was written by Angelos D. Keromytis in Athens, Greece, in |  | ||||||
| + * February 2000. Network Security Technologies Inc. (NSTI) kindly |  | ||||||
| + * supported the development of this code. |  | ||||||
| + * |  | ||||||
| + * Copyright (c) 2000 Angelos D. Keromytis |  | ||||||
| + * |  | ||||||
| + * Permission to use, copy, and modify this software with or without fee |  | ||||||
| + * is hereby granted, provided that this entire notice is included in |  | ||||||
| + * all source code copies of any software which is or includes a copy or |  | ||||||
| + * modification of this software. |  | ||||||
| + * |  | ||||||
| + * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR |  | ||||||
| + * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY |  | ||||||
| + * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE |  | ||||||
| + * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR |  | ||||||
| + * PURPOSE. |  | ||||||
| + * |  | ||||||
| + * Copyright (c) 2001 Theo de Raadt |  | ||||||
| + * |  | ||||||
| + * 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. The name of the author may not be used to endorse or promote products |  | ||||||
| + *   derived from this software without specific prior written permission. |  | ||||||
| + * |  | ||||||
| + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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. |  | ||||||
| + * |  | ||||||
| + * Effort sponsored in part by the Defense Advanced Research Projects |  | ||||||
| + * Agency (DARPA) and Air Force Research Laboratory, Air Force |  | ||||||
| + * Materiel Command, USAF, under agreement number F30602-01-2-0537. |  | ||||||
| + * |  | ||||||
| + */ |  | ||||||
| + |  | ||||||
| +#ifndef _CRYPTO_CRYPTO_H_ |  | ||||||
| +#define _CRYPTO_CRYPTO_H_ |  | ||||||
| + |  | ||||||
| +/* Some initial values */ |  | ||||||
| +#define CRYPTO_DRIVERS_INITIAL	4 |  | ||||||
| +#define CRYPTO_SW_SESSIONS	32 |  | ||||||
| + |  | ||||||
| +/* Hash values */ |  | ||||||
| +#define NULL_HASH_LEN		0 |  | ||||||
| +#define MD5_HASH_LEN		16 |  | ||||||
| +#define SHA1_HASH_LEN		20 |  | ||||||
| +#define RIPEMD160_HASH_LEN	20 |  | ||||||
| +#define SHA2_256_HASH_LEN	32 |  | ||||||
| +#define SHA2_384_HASH_LEN	48 |  | ||||||
| +#define SHA2_512_HASH_LEN	64 |  | ||||||
| +#define MD5_KPDK_HASH_LEN	16 |  | ||||||
| +#define SHA1_KPDK_HASH_LEN	20 |  | ||||||
| +/* Maximum hash algorithm result length */ |  | ||||||
| +#define HASH_MAX_LEN		SHA2_512_HASH_LEN /* Keep this updated */ |  | ||||||
| + |  | ||||||
| +/* HMAC values */ |  | ||||||
| +#define NULL_HMAC_BLOCK_LEN			1 |  | ||||||
| +#define MD5_HMAC_BLOCK_LEN			64 |  | ||||||
| +#define SHA1_HMAC_BLOCK_LEN			64 |  | ||||||
| +#define RIPEMD160_HMAC_BLOCK_LEN	64 |  | ||||||
| +#define SHA2_256_HMAC_BLOCK_LEN		64 |  | ||||||
| +#define SHA2_384_HMAC_BLOCK_LEN		128 |  | ||||||
| +#define SHA2_512_HMAC_BLOCK_LEN		128 |  | ||||||
| +/* Maximum HMAC block length */ |  | ||||||
| +#define HMAC_MAX_BLOCK_LEN		SHA2_512_HMAC_BLOCK_LEN /* Keep this updated */ |  | ||||||
| +#define HMAC_IPAD_VAL			0x36 |  | ||||||
| +#define HMAC_OPAD_VAL			0x5C |  | ||||||
| + |  | ||||||
| +/* Encryption algorithm block sizes */ |  | ||||||
| +#define NULL_BLOCK_LEN			1 |  | ||||||
| +#define DES_BLOCK_LEN			8 |  | ||||||
| +#define DES3_BLOCK_LEN			8 |  | ||||||
| +#define BLOWFISH_BLOCK_LEN		8 |  | ||||||
| +#define SKIPJACK_BLOCK_LEN		8 |  | ||||||
| +#define CAST128_BLOCK_LEN		8 |  | ||||||
| +#define RIJNDAEL128_BLOCK_LEN	16 |  | ||||||
| +#define AES_BLOCK_LEN			RIJNDAEL128_BLOCK_LEN |  | ||||||
| +#define CAMELLIA_BLOCK_LEN		16 |  | ||||||
| +#define ARC4_BLOCK_LEN			1 |  | ||||||
| +#define EALG_MAX_BLOCK_LEN		AES_BLOCK_LEN /* Keep this updated */ |  | ||||||
| + |  | ||||||
| +/* Encryption algorithm min and max key sizes */ |  | ||||||
| +#define NULL_MIN_KEY_LEN		0 |  | ||||||
| +#define NULL_MAX_KEY_LEN		0 |  | ||||||
| +#define DES_MIN_KEY_LEN			8 |  | ||||||
| +#define DES_MAX_KEY_LEN			8 |  | ||||||
| +#define DES3_MIN_KEY_LEN		24 |  | ||||||
| +#define DES3_MAX_KEY_LEN		24 |  | ||||||
| +#define BLOWFISH_MIN_KEY_LEN	4 |  | ||||||
| +#define BLOWFISH_MAX_KEY_LEN	56 |  | ||||||
| +#define SKIPJACK_MIN_KEY_LEN	10 |  | ||||||
| +#define SKIPJACK_MAX_KEY_LEN	10 |  | ||||||
| +#define CAST128_MIN_KEY_LEN		5 |  | ||||||
| +#define CAST128_MAX_KEY_LEN		16 |  | ||||||
| +#define RIJNDAEL128_MIN_KEY_LEN	16 |  | ||||||
| +#define RIJNDAEL128_MAX_KEY_LEN	32 |  | ||||||
| +#define AES_MIN_KEY_LEN			RIJNDAEL128_MIN_KEY_LEN |  | ||||||
| +#define AES_MAX_KEY_LEN			RIJNDAEL128_MAX_KEY_LEN |  | ||||||
| +#define CAMELLIA_MIN_KEY_LEN	16 |  | ||||||
| +#define CAMELLIA_MAX_KEY_LEN	32 |  | ||||||
| +#define ARC4_MIN_KEY_LEN		1 |  | ||||||
| +#define ARC4_MAX_KEY_LEN		256 |  | ||||||
| + |  | ||||||
| +/* Max size of data that can be processed */ |  | ||||||
| +#define CRYPTO_MAX_DATA_LEN		64*1024 - 1 |  | ||||||
| + |  | ||||||
| +#define CRYPTO_ALGORITHM_MIN	1 |  | ||||||
| +#define CRYPTO_DES_CBC			1 |  | ||||||
| +#define CRYPTO_3DES_CBC			2 |  | ||||||
| +#define CRYPTO_BLF_CBC			3 |  | ||||||
| +#define CRYPTO_CAST_CBC			4 |  | ||||||
| +#define CRYPTO_SKIPJACK_CBC		5 |  | ||||||
| +#define CRYPTO_MD5_HMAC			6 |  | ||||||
| +#define CRYPTO_SHA1_HMAC		7 |  | ||||||
| +#define CRYPTO_RIPEMD160_HMAC	8 |  | ||||||
| +#define CRYPTO_MD5_KPDK			9 |  | ||||||
| +#define CRYPTO_SHA1_KPDK		10 |  | ||||||
| +#define CRYPTO_RIJNDAEL128_CBC	11 /* 128 bit blocksize */ |  | ||||||
| +#define CRYPTO_AES_CBC			11 /* 128 bit blocksize -- the same as above */ |  | ||||||
| +#define CRYPTO_ARC4				12 |  | ||||||
| +#define CRYPTO_MD5				13 |  | ||||||
| +#define CRYPTO_SHA1				14 |  | ||||||
| +#define CRYPTO_NULL_HMAC		15 |  | ||||||
| +#define CRYPTO_NULL_CBC			16 |  | ||||||
| +#define CRYPTO_DEFLATE_COMP		17 /* Deflate compression algorithm */ |  | ||||||
| +#define CRYPTO_SHA2_256_HMAC	18 |  | ||||||
| +#define CRYPTO_SHA2_384_HMAC	19 |  | ||||||
| +#define CRYPTO_SHA2_512_HMAC	20 |  | ||||||
| +#define CRYPTO_CAMELLIA_CBC		21 |  | ||||||
| +#define CRYPTO_SHA2_256			22 |  | ||||||
| +#define CRYPTO_SHA2_384			23 |  | ||||||
| +#define CRYPTO_SHA2_512			24 |  | ||||||
| +#define CRYPTO_RIPEMD160		25 |  | ||||||
| +#define CRYPTO_ALGORITHM_MAX	25 /* Keep updated - see below */ |  | ||||||
| + |  | ||||||
| +/* Algorithm flags */ |  | ||||||
| +#define CRYPTO_ALG_FLAG_SUPPORTED	0x01 /* Algorithm is supported */ |  | ||||||
| +#define CRYPTO_ALG_FLAG_RNG_ENABLE	0x02 /* Has HW RNG for DH/DSA */ |  | ||||||
| +#define CRYPTO_ALG_FLAG_DSA_SHA		0x04 /* Can do SHA on msg */ |  | ||||||
| + |  | ||||||
| +/* |  | ||||||
| + * Crypto driver/device flags.  They can set in the crid |  | ||||||
| + * parameter when creating a session or submitting a key |  | ||||||
| + * op to affect the device/driver assigned.  If neither |  | ||||||
| + * of these are specified then the crid is assumed to hold |  | ||||||
| + * the driver id of an existing (and suitable) device that |  | ||||||
| + * must be used to satisfy the request. |  | ||||||
| + */ |  | ||||||
| +#define CRYPTO_FLAG_HARDWARE	0x01000000	/* hardware accelerated */ |  | ||||||
| +#define CRYPTO_FLAG_SOFTWARE	0x02000000	/* software implementation */ |  | ||||||
| + |  | ||||||
| +/* NB: deprecated */ |  | ||||||
| +struct session_op { |  | ||||||
| +	u_int32_t	cipher;		/* ie. CRYPTO_DES_CBC */ |  | ||||||
| +	u_int32_t	mac;		/* ie. CRYPTO_MD5_HMAC */ |  | ||||||
| + |  | ||||||
| +	u_int32_t	keylen;		/* cipher key */ |  | ||||||
| +	caddr_t		key; |  | ||||||
| +	int		mackeylen;	/* mac key */ |  | ||||||
| +	caddr_t		mackey; |  | ||||||
| + |  | ||||||
| +  	u_int32_t	ses;		/* returns: session # */  |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +struct session2_op { |  | ||||||
| +	u_int32_t	cipher;		/* ie. CRYPTO_DES_CBC */ |  | ||||||
| +	u_int32_t	mac;		/* ie. CRYPTO_MD5_HMAC */ |  | ||||||
| + |  | ||||||
| +	u_int32_t	keylen;		/* cipher key */ |  | ||||||
| +	caddr_t		key; |  | ||||||
| +	int		mackeylen;	/* mac key */ |  | ||||||
| +	caddr_t		mackey; |  | ||||||
| + |  | ||||||
| +  	u_int32_t	ses;		/* returns: session # */  |  | ||||||
| +	int		crid;		/* driver id + flags (rw) */ |  | ||||||
| +	int		pad[4];		/* for future expansion */ |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +struct crypt_op { |  | ||||||
| +	u_int32_t	ses; |  | ||||||
| +	u_int16_t	op;		/* i.e. COP_ENCRYPT */ |  | ||||||
| +#define COP_NONE	0 |  | ||||||
| +#define COP_ENCRYPT	1 |  | ||||||
| +#define COP_DECRYPT	2 |  | ||||||
| +	u_int16_t	flags; |  | ||||||
| +#define	COP_F_BATCH	0x0008		/* Batch op if possible */ |  | ||||||
| +	u_int		len; |  | ||||||
| +	caddr_t		src, dst;	/* become iov[] inside kernel */ |  | ||||||
| +	caddr_t		mac;		/* must be big enough for chosen MAC */ |  | ||||||
| +	caddr_t		iv; |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +/* |  | ||||||
| + * Parameters for looking up a crypto driver/device by |  | ||||||
| + * device name or by id.  The latter are returned for |  | ||||||
| + * created sessions (crid) and completed key operations. |  | ||||||
| + */ |  | ||||||
| +struct crypt_find_op { |  | ||||||
| +	int		crid;		/* driver id + flags */ |  | ||||||
| +	char		name[32];	/* device/driver name */ |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +/* bignum parameter, in packed bytes, ... */ |  | ||||||
| +struct crparam { |  | ||||||
| +	caddr_t		crp_p; |  | ||||||
| +	u_int		crp_nbits; |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +#define CRK_MAXPARAM	8 |  | ||||||
| + |  | ||||||
| +struct crypt_kop { |  | ||||||
| +	u_int		crk_op;		/* ie. CRK_MOD_EXP or other */ |  | ||||||
| +	u_int		crk_status;	/* return status */ |  | ||||||
| +	u_short		crk_iparams;	/* # of input parameters */ |  | ||||||
| +	u_short		crk_oparams;	/* # of output parameters */ |  | ||||||
| +	u_int		crk_crid;	/* NB: only used by CIOCKEY2 (rw) */ |  | ||||||
| +	struct crparam	crk_param[CRK_MAXPARAM]; |  | ||||||
| +}; |  | ||||||
| +#define CRK_ALGORITM_MIN	0 |  | ||||||
| +#define CRK_MOD_EXP		0 |  | ||||||
| +#define CRK_MOD_EXP_CRT		1 |  | ||||||
| +#define CRK_DSA_SIGN		2 |  | ||||||
| +#define CRK_DSA_VERIFY		3 |  | ||||||
| +#define CRK_DH_COMPUTE_KEY	4 |  | ||||||
| +#define CRK_ALGORITHM_MAX	4 /* Keep updated - see below */ |  | ||||||
| + |  | ||||||
| +#define CRF_MOD_EXP		(1 << CRK_MOD_EXP) |  | ||||||
| +#define CRF_MOD_EXP_CRT		(1 << CRK_MOD_EXP_CRT) |  | ||||||
| +#define CRF_DSA_SIGN		(1 << CRK_DSA_SIGN) |  | ||||||
| +#define CRF_DSA_VERIFY		(1 << CRK_DSA_VERIFY) |  | ||||||
| +#define CRF_DH_COMPUTE_KEY	(1 << CRK_DH_COMPUTE_KEY) |  | ||||||
| + |  | ||||||
| +/* |  | ||||||
| + * done against open of /dev/crypto, to get a cloned descriptor. |  | ||||||
| + * Please use F_SETFD against the cloned descriptor. |  | ||||||
| + */ |  | ||||||
| +#define CRIOGET		_IOWR('c', 100, u_int32_t) |  | ||||||
| +#define CRIOASYMFEAT	CIOCASYMFEAT |  | ||||||
| +#define CRIOFINDDEV	CIOCFINDDEV |  | ||||||
| + |  | ||||||
| +/* the following are done against the cloned descriptor */ |  | ||||||
| +#define CIOCGSESSION	_IOWR('c', 101, struct session_op) |  | ||||||
| +#define CIOCFSESSION	_IOW('c', 102, u_int32_t) |  | ||||||
| +#define CIOCCRYPT	_IOWR('c', 103, struct crypt_op) |  | ||||||
| +#define CIOCKEY		_IOWR('c', 104, struct crypt_kop) |  | ||||||
| +#define CIOCASYMFEAT	_IOR('c', 105, u_int32_t) |  | ||||||
| +#define CIOCGSESSION2	_IOWR('c', 106, struct session2_op) |  | ||||||
| +#define CIOCKEY2	_IOWR('c', 107, struct crypt_kop) |  | ||||||
| +#define CIOCFINDDEV	_IOWR('c', 108, struct crypt_find_op) |  | ||||||
| + |  | ||||||
| +struct cryptotstat { |  | ||||||
| +	struct timespec	acc;		/* total accumulated time */ |  | ||||||
| +	struct timespec	min;		/* min time */ |  | ||||||
| +	struct timespec	max;		/* max time */ |  | ||||||
| +	u_int32_t	count;		/* number of observations */ |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +struct cryptostats { |  | ||||||
| +	u_int32_t	cs_ops;		/* symmetric crypto ops submitted */ |  | ||||||
| +	u_int32_t	cs_errs;	/* symmetric crypto ops that failed */ |  | ||||||
| +	u_int32_t	cs_kops;	/* asymetric/key ops submitted */ |  | ||||||
| +	u_int32_t	cs_kerrs;	/* asymetric/key ops that failed */ |  | ||||||
| +	u_int32_t	cs_intrs;	/* crypto swi thread activations */ |  | ||||||
| +	u_int32_t	cs_rets;	/* crypto return thread activations */ |  | ||||||
| +	u_int32_t	cs_blocks;	/* symmetric op driver block */ |  | ||||||
| +	u_int32_t	cs_kblocks;	/* symmetric op driver block */ |  | ||||||
| +	/* |  | ||||||
| +	 * When CRYPTO_TIMING is defined at compile time and the |  | ||||||
| +	 * sysctl debug.crypto is set to 1, the crypto system will |  | ||||||
| +	 * accumulate statistics about how long it takes to process |  | ||||||
| +	 * crypto requests at various points during processing. |  | ||||||
| +	 */ |  | ||||||
| +	struct cryptotstat cs_invoke;	/* crypto_dipsatch -> crypto_invoke */ |  | ||||||
| +	struct cryptotstat cs_done;	/* crypto_invoke -> crypto_done */ |  | ||||||
| +	struct cryptotstat cs_cb;	/* crypto_done -> callback */ |  | ||||||
| +	struct cryptotstat cs_finis;	/* callback -> callback return */ |  | ||||||
| + |  | ||||||
| +	u_int32_t	cs_drops;		/* crypto ops dropped due to congestion */ |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +#ifdef __KERNEL__ |  | ||||||
| + |  | ||||||
| +/* Standard initialization structure beginning */ |  | ||||||
| +struct cryptoini { |  | ||||||
| +	int		cri_alg;	/* Algorithm to use */ |  | ||||||
| +	int		cri_klen;	/* Key length, in bits */ |  | ||||||
| +	int		cri_mlen;	/* Number of bytes we want from the |  | ||||||
| +					   entire hash. 0 means all. */ |  | ||||||
| +	caddr_t		cri_key;	/* key to use */ |  | ||||||
| +	u_int8_t	cri_iv[EALG_MAX_BLOCK_LEN];	/* IV to use */ |  | ||||||
| +	struct cryptoini *cri_next; |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +/* Describe boundaries of a single crypto operation */ |  | ||||||
| +struct cryptodesc { |  | ||||||
| +	int		crd_skip;	/* How many bytes to ignore from start */ |  | ||||||
| +	int		crd_len;	/* How many bytes to process */ |  | ||||||
| +	int		crd_inject;	/* Where to inject results, if applicable */ |  | ||||||
| +	int		crd_flags; |  | ||||||
| + |  | ||||||
| +#define CRD_F_ENCRYPT		0x01	/* Set when doing encryption */ |  | ||||||
| +#define CRD_F_IV_PRESENT	0x02	/* When encrypting, IV is already in |  | ||||||
| +					   place, so don't copy. */ |  | ||||||
| +#define CRD_F_IV_EXPLICIT	0x04	/* IV explicitly provided */ |  | ||||||
| +#define CRD_F_DSA_SHA_NEEDED	0x08	/* Compute SHA-1 of buffer for DSA */ |  | ||||||
| +#define CRD_F_KEY_EXPLICIT	0x10	/* Key explicitly provided */ |  | ||||||
| +#define CRD_F_COMP		0x0f    /* Set when doing compression */ |  | ||||||
| + |  | ||||||
| +	struct cryptoini	CRD_INI; /* Initialization/context data */ |  | ||||||
| +#define crd_iv		CRD_INI.cri_iv |  | ||||||
| +#define crd_key		CRD_INI.cri_key |  | ||||||
| +#define crd_alg		CRD_INI.cri_alg |  | ||||||
| +#define crd_klen	CRD_INI.cri_klen |  | ||||||
| + |  | ||||||
| +	struct cryptodesc *crd_next; |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +/* Structure describing complete operation */ |  | ||||||
| +struct cryptop { |  | ||||||
| +	struct list_head crp_next; |  | ||||||
| +	wait_queue_head_t crp_waitq; |  | ||||||
| + |  | ||||||
| +	u_int64_t	crp_sid;	/* Session ID */ |  | ||||||
| +	int		crp_ilen;	/* Input data total length */ |  | ||||||
| +	int		crp_olen;	/* Result total length */ |  | ||||||
| + |  | ||||||
| +	int		crp_etype;	/* |  | ||||||
| +					 * Error type (zero means no error). |  | ||||||
| +					 * All error codes except EAGAIN |  | ||||||
| +					 * indicate possible data corruption (as in, |  | ||||||
| +					 * the data have been touched). On all |  | ||||||
| +					 * errors, the crp_sid may have changed |  | ||||||
| +					 * (reset to a new one), so the caller |  | ||||||
| +					 * should always check and use the new |  | ||||||
| +					 * value on future requests. |  | ||||||
| +					 */ |  | ||||||
| +	int		crp_flags; |  | ||||||
| + |  | ||||||
| +#define CRYPTO_F_SKBUF		0x0001	/* Input/output are skbuf chains */ |  | ||||||
| +#define CRYPTO_F_IOV		0x0002	/* Input/output are uio */ |  | ||||||
| +#define CRYPTO_F_REL		0x0004	/* Must return data in same place */ |  | ||||||
| +#define CRYPTO_F_BATCH		0x0008	/* Batch op if possible */ |  | ||||||
| +#define CRYPTO_F_CBIMM		0x0010	/* Do callback immediately */ |  | ||||||
| +#define CRYPTO_F_DONE		0x0020	/* Operation completed */ |  | ||||||
| +#define CRYPTO_F_CBIFSYNC	0x0040	/* Do CBIMM if op is synchronous */ |  | ||||||
| + |  | ||||||
| +	caddr_t		crp_buf;	/* Data to be processed */ |  | ||||||
| +	caddr_t		crp_opaque;	/* Opaque pointer, passed along */ |  | ||||||
| +	struct cryptodesc *crp_desc;	/* Linked list of processing descriptors */ |  | ||||||
| + |  | ||||||
| +	int (*crp_callback)(struct cryptop *); /* Callback function */ |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +#define CRYPTO_BUF_CONTIG	0x0 |  | ||||||
| +#define CRYPTO_BUF_IOV		0x1 |  | ||||||
| +#define CRYPTO_BUF_SKBUF		0x2 |  | ||||||
| + |  | ||||||
| +#define CRYPTO_OP_DECRYPT	0x0 |  | ||||||
| +#define CRYPTO_OP_ENCRYPT	0x1 |  | ||||||
| + |  | ||||||
| +/* |  | ||||||
| + * Hints passed to process methods. |  | ||||||
| + */ |  | ||||||
| +#define CRYPTO_HINT_MORE	0x1	/* more ops coming shortly */ |  | ||||||
| + |  | ||||||
| +struct cryptkop { |  | ||||||
| +	struct list_head krp_next; |  | ||||||
| +	wait_queue_head_t krp_waitq; |  | ||||||
| + |  | ||||||
| +	int		krp_flags; |  | ||||||
| +#define CRYPTO_KF_DONE		0x0001	/* Operation completed */ |  | ||||||
| +#define CRYPTO_KF_CBIMM		0x0002	/* Do callback immediately */ |  | ||||||
| + |  | ||||||
| +	u_int		krp_op;		/* ie. CRK_MOD_EXP or other */ |  | ||||||
| +	u_int		krp_status;	/* return status */ |  | ||||||
| +	u_short		krp_iparams;	/* # of input parameters */ |  | ||||||
| +	u_short		krp_oparams;	/* # of output parameters */ |  | ||||||
| +	u_int		krp_crid;	/* desired device, etc. */ |  | ||||||
| +	u_int32_t	krp_hid; |  | ||||||
| +	struct crparam	krp_param[CRK_MAXPARAM];	/* kvm */ |  | ||||||
| +	int		(*krp_callback)(struct cryptkop *); |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +#include <ocf-compat.h> |  | ||||||
| + |  | ||||||
| +/* |  | ||||||
| + * Session ids are 64 bits.  The lower 32 bits contain a "local id" which |  | ||||||
| + * is a driver-private session identifier.  The upper 32 bits contain a |  | ||||||
| + * "hardware id" used by the core crypto code to identify the driver and |  | ||||||
| + * a copy of the driver's capabilities that can be used by client code to |  | ||||||
| + * optimize operation. |  | ||||||
| + */ |  | ||||||
| +#define CRYPTO_SESID2HID(_sid)	(((_sid) >> 32) & 0x00ffffff) |  | ||||||
| +#define CRYPTO_SESID2CAPS(_sid)	(((_sid) >> 32) & 0xff000000) |  | ||||||
| +#define CRYPTO_SESID2LID(_sid)	(((u_int32_t) (_sid)) & 0xffffffff) |  | ||||||
| + |  | ||||||
| +extern	int crypto_newsession(u_int64_t *sid, struct cryptoini *cri, int hard); |  | ||||||
| +extern	int crypto_freesession(u_int64_t sid); |  | ||||||
| +#define CRYPTOCAP_F_HARDWARE	CRYPTO_FLAG_HARDWARE |  | ||||||
| +#define CRYPTOCAP_F_SOFTWARE	CRYPTO_FLAG_SOFTWARE |  | ||||||
| +#define CRYPTOCAP_F_SYNC	0x04000000	/* operates synchronously */ |  | ||||||
| +extern	int32_t crypto_get_driverid(device_t dev, int flags); |  | ||||||
| +extern	int crypto_find_driver(const char *); |  | ||||||
| +extern	device_t crypto_find_device_byhid(int hid); |  | ||||||
| +extern	int crypto_getcaps(int hid); |  | ||||||
| +extern	int crypto_register(u_int32_t driverid, int alg, u_int16_t maxoplen, |  | ||||||
| +	    u_int32_t flags); |  | ||||||
| +extern	int crypto_kregister(u_int32_t, int, u_int32_t); |  | ||||||
| +extern	int crypto_unregister(u_int32_t driverid, int alg); |  | ||||||
| +extern	int crypto_unregister_all(u_int32_t driverid); |  | ||||||
| +extern	int crypto_dispatch(struct cryptop *crp); |  | ||||||
| +extern	int crypto_kdispatch(struct cryptkop *); |  | ||||||
| +#define CRYPTO_SYMQ	0x1 |  | ||||||
| +#define CRYPTO_ASYMQ	0x2 |  | ||||||
| +extern	int crypto_unblock(u_int32_t, int); |  | ||||||
| +extern	void crypto_done(struct cryptop *crp); |  | ||||||
| +extern	void crypto_kdone(struct cryptkop *); |  | ||||||
| +extern	int crypto_getfeat(int *); |  | ||||||
| + |  | ||||||
| +extern	void crypto_freereq(struct cryptop *crp); |  | ||||||
| +extern	struct cryptop *crypto_getreq(int num); |  | ||||||
| + |  | ||||||
| +extern  int crypto_usercrypto;      /* userland may do crypto requests */ |  | ||||||
| +extern  int crypto_userasymcrypto;  /* userland may do asym crypto reqs */ |  | ||||||
| +extern  int crypto_devallowsoft;    /* only use hardware crypto */ |  | ||||||
| + |  | ||||||
| +/* |  | ||||||
| + * random number support,  crypto_unregister_all will unregister |  | ||||||
| + */ |  | ||||||
| +extern int crypto_rregister(u_int32_t driverid, |  | ||||||
| +		int (*read_random)(void *arg, u_int32_t *buf, int len), void *arg); |  | ||||||
| +extern int crypto_runregister_all(u_int32_t driverid); |  | ||||||
| + |  | ||||||
| +/* |  | ||||||
| + * Crypto-related utility routines used mainly by drivers. |  | ||||||
| + * |  | ||||||
| + * XXX these don't really belong here; but for now they're |  | ||||||
| + *     kept apart from the rest of the system. |  | ||||||
| + */ |  | ||||||
| +struct uio; |  | ||||||
| +extern	void cuio_copydata(struct uio* uio, int off, int len, caddr_t cp); |  | ||||||
| +extern	void cuio_copyback(struct uio* uio, int off, int len, caddr_t cp); |  | ||||||
| +extern	struct iovec *cuio_getptr(struct uio *uio, int loc, int *off); |  | ||||||
| + |  | ||||||
| +extern	void crypto_copyback(int flags, caddr_t buf, int off, int size, |  | ||||||
| +	    caddr_t in); |  | ||||||
| +extern	void crypto_copydata(int flags, caddr_t buf, int off, int size, |  | ||||||
| +	    caddr_t out); |  | ||||||
| +extern	int crypto_apply(int flags, caddr_t buf, int off, int len, |  | ||||||
| +	    int (*f)(void *, void *, u_int), void *arg); |  | ||||||
| + |  | ||||||
| +#endif /* __KERNEL__ */ |  | ||||||
| +#endif /* _CRYPTO_CRYPTO_H_ */ |  | ||||||
| diff -Nur openssl-0.9.8h/crypto/engine/eng_cryptodev.c openssl-0.9.8h-ocf/crypto/engine/eng_cryptodev.c |  | ||||||
| --- openssl-0.9.8h/crypto/engine/eng_cryptodev.c	2008-07-13 15:32:53.000000000 +0200 |  | ||||||
| +++ openssl-0.9.8h-ocf/crypto/engine/eng_cryptodev.c	2008-07-13 15:34:19.000000000 +0200 |  | ||||||
| @@ -54,7 +54,7 @@ |  | ||||||
|  #else  |  | ||||||
|    |  | ||||||
|  #include <sys/types.h> |  | ||||||
| -#include <crypto/cryptodev.h> |  | ||||||
| +#include "cryptodev.h" |  | ||||||
|  #include <sys/ioctl.h> |  | ||||||
|  #include <errno.h> |  | ||||||
|  #include <stdio.h> |  | ||||||
		Reference in New Issue
	
	Block a user
	 Gabor Juhos
					Gabor Juhos