Compare commits
97 Commits
OpenSSL_0_
...
OpenSSL_0_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b61c27287 | ||
|
|
aaf7b47abe | ||
|
|
af0b30e77c | ||
|
|
9494e3cc40 | ||
|
|
a272f7eb08 | ||
|
|
b3dd9f3bb5 | ||
|
|
bb9104f0ee | ||
|
|
ae0b7667a9 | ||
|
|
fabf7d3a67 | ||
|
|
54307ce955 | ||
|
|
2589b74fd8 | ||
|
|
d9090acdfb | ||
|
|
72951df799 | ||
|
|
a9b41af71c | ||
|
|
a0ed612fef | ||
|
|
afdec73ca5 | ||
|
|
2e70cb6506 | ||
|
|
1794904a4a | ||
|
|
fd28279a62 | ||
|
|
6b27ae1d94 | ||
|
|
a6ee8fe26a | ||
|
|
e758ce69a3 | ||
|
|
38b085902f | ||
|
|
27498a3330 | ||
|
|
49cd4b7316 | ||
|
|
a067cba35b | ||
|
|
2905015c6e | ||
|
|
610abd4c52 | ||
|
|
ddc6ea162f | ||
|
|
b8804bf15d | ||
|
|
d03ad453a5 | ||
|
|
3f71579dfc | ||
|
|
f217439ee2 | ||
|
|
9d8f3cfb7f | ||
|
|
d5c79928ef | ||
|
|
db3758923b | ||
|
|
37529750e2 | ||
|
|
5e4a75e79f | ||
|
|
c9ea7400b4 | ||
|
|
43d601641f | ||
|
|
9fa15b6ff8 | ||
|
|
55f78baf32 | ||
|
|
9c44ebc1e2 | ||
|
|
6c359479d7 | ||
|
|
75e3026a14 | ||
|
|
4579924b7e | ||
|
|
2047bda6fb | ||
|
|
406c6f6962 | ||
|
|
0a3af9a403 | ||
|
|
3a08cf3bfb | ||
|
|
df29cc8f77 | ||
|
|
ec7164133d | ||
|
|
8826087a97 | ||
|
|
8aa09a245c | ||
|
|
ba8ad07490 | ||
|
|
17582ccf21 | ||
|
|
a5fd84de41 | ||
|
|
31be2daa06 | ||
|
|
dc199cfaa2 | ||
|
|
de868e0b94 | ||
|
|
b81ef84227 | ||
|
|
15994b034a | ||
|
|
922fa76e26 | ||
|
|
19aa370573 | ||
|
|
d020e701bb | ||
|
|
91203a9482 | ||
|
|
364ff369d1 | ||
|
|
134fea9d0f | ||
|
|
8a09b3866a | ||
|
|
137445140b | ||
|
|
6a8afe2201 | ||
|
|
a153c46d7f | ||
|
|
1e3a9b650f | ||
|
|
8faad520ae | ||
|
|
229dc0ee31 | ||
|
|
fcc764639d | ||
|
|
8f89ae928b | ||
|
|
821385ad00 | ||
|
|
25ff76d565 | ||
|
|
9801fb61d0 | ||
|
|
20199ca809 | ||
|
|
711f1a3c26 | ||
|
|
a1d85309ee | ||
|
|
450cee5c3a | ||
|
|
a2dbcf3644 | ||
|
|
4663355496 | ||
|
|
9dc610495c | ||
|
|
055076cd4f | ||
|
|
527497a722 | ||
|
|
32d21c1ef6 | ||
|
|
629b58b7fb | ||
|
|
7fa2a81d34 | ||
|
|
7f66ab4783 | ||
|
|
95189389b0 | ||
|
|
b4b82ab465 | ||
|
|
89618e7a0d | ||
|
|
b87e2576b5 |
27
CHANGES
27
CHANGES
@@ -4,6 +4,16 @@
|
||||
|
||||
Changes between 0.9.6h and 0.9.7 [XX xxx 2002]
|
||||
|
||||
*) In asn1_d2i_read_bio() repeatedly call BIO_read() until all content
|
||||
octets have been read, EOF or an error occurs. Without this change
|
||||
some truncated ASN1 structures will not produce an error.
|
||||
[Steve Henson]
|
||||
|
||||
*) Disable Heimdal support, since it hasn't been fully implemented.
|
||||
Still give the possibility to force the use of Heimdal, but with
|
||||
warnings and a request that patches get sent to openssl-dev.
|
||||
[Richard Levitte]
|
||||
|
||||
*) Add the VC-CE target, introduce the WINCE sysname, and add
|
||||
INSTALL.WCE and appropriate conditionals to make it build.
|
||||
[Steven Reddie <smr@essemer.com.au> via Richard Levitte]
|
||||
@@ -1778,7 +1788,22 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
|
||||
*) Clean old EAY MD5 hack from e_os.h.
|
||||
[Richard Levitte]
|
||||
|
||||
Changes between 0.9.6g and 0.9.6h [xx XXX xxxx]
|
||||
Changes between 0.9.6g and 0.9.6h [5 Dec 2002]
|
||||
|
||||
*) New function OPENSSL_cleanse(), which is used to cleanse a section of
|
||||
memory from it's contents. This is done with a counter that will
|
||||
place alternating values in each byte. This can be used to solve
|
||||
two issues: 1) the removal of calls to memset() by highly optimizing
|
||||
compilers, and 2) cleansing with other values than 0, since those can
|
||||
be read through on certain media, for example a swap space on disk.
|
||||
[Geoff Thorpe]
|
||||
|
||||
*) Bugfix: client side session caching did not work with external caching,
|
||||
because the session->cipher setting was not restored when reloading
|
||||
from the external cache. This problem was masked, when
|
||||
SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG (part of SSL_OP_ALL) was set.
|
||||
(Found by Steve Haslam <steve@araqnid.ddts.net>.)
|
||||
[Lutz Jaenicke]
|
||||
|
||||
*) Fix client_certificate (ssl/s2_clnt.c): The permissible total
|
||||
length of the REQUEST-CERTIFICATE message is 18 .. 34, not 17 .. 33.
|
||||
|
||||
12
Configure
12
Configure
@@ -392,6 +392,7 @@ my %table=(
|
||||
"linux-s390", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-s390x", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"linux-x86_64", "gcc:-DL_ENDIAN -DNO_ASM ::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"NetBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"NetBSD-m68", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
"NetBSD-x86", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
|
||||
@@ -973,6 +974,17 @@ else
|
||||
my ($lresolv, $lpath, $lext);
|
||||
if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/)
|
||||
{
|
||||
die "Sorry, Heimdal is currently not supported\n";
|
||||
}
|
||||
##### HACK to force use of Heimdal.
|
||||
##### WARNING: Since we don't really have adequate support for Heimdal,
|
||||
##### using this will break the build. You'll have to make
|
||||
##### changes to the source, and if you do, please send
|
||||
##### patches to openssl-dev@openssl.org
|
||||
if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/)
|
||||
{
|
||||
warn "Heimdal isn't really supported. Your build WILL break\n";
|
||||
warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n";
|
||||
$withargs{"krb5-dir"} = "/usr/heimdal"
|
||||
if $withargs{"krb5-dir"} eq "";
|
||||
$withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
|
||||
|
||||
2
FAQ
2
FAQ
@@ -66,7 +66,7 @@ OpenSSL - Frequently Asked Questions
|
||||
* Which is the current version of OpenSSL?
|
||||
|
||||
The current version is available from <URL: http://www.openssl.org>.
|
||||
OpenSSL 0.9.6g was released on August 9, 2002.
|
||||
OpenSSL 0.9.6h was released on December 5, 2002.
|
||||
|
||||
In addition to the current stable release, you can also access daily
|
||||
snapshots of the OpenSSL development version at <URL:
|
||||
|
||||
@@ -12,12 +12,14 @@
|
||||
latest versions of DJGPP, GCC, BINUTILS, BASH, etc. This package
|
||||
requires that PERL and BC also be installed.
|
||||
|
||||
All of these can be obtained from the usual DJGPP mirror sites, such as
|
||||
"ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp". You also need to have
|
||||
the WATT-32 networking package installed before you try to compile
|
||||
openssl. This can be obtained from "http://www.bgnett.no/~giva/". The
|
||||
Makefile assumes that the WATT-32 code is in directory "watt32" under
|
||||
/dev/env/DJDIR.
|
||||
All of these can be obtained from the usual DJGPP mirror sites, such
|
||||
as "ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp". You also need to
|
||||
have the WATT-32 networking package installed before you try to compile
|
||||
openssl. This can be obtained from "http://www.bgnett.no/~giva/".
|
||||
The Makefile assumes that the WATT-32 code is in the directory
|
||||
specified by the environment variable WATT_ROOT. If you have watt-32
|
||||
in directory "watt32" under your main DJGPP directory, specify
|
||||
WATT_ROOT="/dev/env/DJDIR/watt32".
|
||||
|
||||
To compile openssl, start your BASH shell. Then configure for DOS by
|
||||
running "./Configure" with appropriate arguments. The basic syntax for
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
You also need Perl for Win32. You will need ActiveState Perl, available
|
||||
from http://www.activestate.com/ActivePerl.
|
||||
|
||||
Windows CE support in OpenSSL relies on wcecompat. All Windows CE specific
|
||||
issues should be directed to www.essemer.com.au.
|
||||
|
||||
The C Runtime Library implementation for Windows CE that is included with
|
||||
Microsoft eMbedded Visual C++ 3.0 is incomplete and in some places
|
||||
incorrect. wcecompat plugs the holes and tries to bring the Windows CE
|
||||
|
||||
22
Makefile.org
22
Makefile.org
@@ -597,7 +597,8 @@ rehash.time: certs
|
||||
@(OPENSSL="`pwd`/apps/openssl"; OPENSSL_DEBUG_MEMORY=on; \
|
||||
export OPENSSL OPENSSL_DEBUG_MEMORY; \
|
||||
LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`"; LIBPATH="`pwd`"; \
|
||||
if [ "$(PLATFORM)" != "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
|
||||
if [ "$(PLATFORM)" == "DJGPP" ]; then PATH="`pwd`\;$$PATH"; \
|
||||
elif [ "$(PLATFORM)" != "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
|
||||
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
|
||||
$(PERL) tools/c_rehash certs)
|
||||
touch rehash.time
|
||||
@@ -608,7 +609,8 @@ tests: rehash
|
||||
@(cd test && echo "testing..." && \
|
||||
$(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests );
|
||||
@LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`"; LIBPATH="`pwd`"; \
|
||||
if [ "$(PLATFORM)" != "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
|
||||
if [ "$(PLATFORM)" == "DJGPP" ]; then PATH="`pwd`\;$$PATH"; \
|
||||
elif [ "$(PLATFORM)" != "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
|
||||
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
|
||||
apps/openssl version -a
|
||||
|
||||
@@ -770,22 +772,30 @@ install_docs:
|
||||
for i in doc/apps/*.pod; do \
|
||||
fn=`basename $$i .pod`; \
|
||||
if [ "$$fn" = "config" ]; then sec=5; else sec=1; fi; \
|
||||
echo "installing man$$sec/`basename $$i .pod`.$$sec"; \
|
||||
echo "installing man$$sec/$$fn.$$sec"; \
|
||||
(cd `$(PERL) util/dirname.pl $$i`; \
|
||||
sh -c "$$pod2man \
|
||||
--section=$$sec --center=OpenSSL \
|
||||
--release=$(VERSION) `basename $$i`") \
|
||||
> $(INSTALL_PREFIX)$(MANDIR)/man$$sec/`basename $$i .pod`.$$sec; \
|
||||
> $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
|
||||
$(PERL) util/extract-names.pl < $$i | grep -v "^$$fn" | \
|
||||
while read n; do \
|
||||
util/point.sh $$fn.$$sec $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$n.$$sec; \
|
||||
done; \
|
||||
done; \
|
||||
for i in doc/crypto/*.pod doc/ssl/*.pod; do \
|
||||
fn=`basename $$i .pod`; \
|
||||
if [ "$$fn" = "des_modes" ]; then sec=7; else sec=3; fi; \
|
||||
echo "installing man$$sec/`basename $$i .pod`.$$sec"; \
|
||||
echo "installing man$$sec/$$fn.$$sec"; \
|
||||
(cd `$(PERL) util/dirname.pl $$i`; \
|
||||
sh -c "$$pod2man \
|
||||
--section=$$sec --center=OpenSSL \
|
||||
--release=$(VERSION) `basename $$i`") \
|
||||
> $(INSTALL_PREFIX)$(MANDIR)/man$$sec/`basename $$i .pod`.$$sec; \
|
||||
> $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
|
||||
$(PERL) util/extract-names.pl < $$i | grep -v "^$$fn" | \
|
||||
while read n; do \
|
||||
util/point.sh $$fn.$$sec $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$n.$$sec; \
|
||||
done; \
|
||||
done
|
||||
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
|
||||
4
NEWS
4
NEWS
@@ -17,7 +17,8 @@
|
||||
a separate distribution.
|
||||
o New elliptic curve library section.
|
||||
o New AES (Rijndael) library section.
|
||||
o Support for new platforms: Windows CE, Tandem OSS, A/UX, AIX 64-bit
|
||||
o Support for new platforms: Windows CE, Tandem OSS, A/UX, AIX 64-bit,
|
||||
Linux x86_64
|
||||
o Extended support for some platforms: VxWorks
|
||||
o Enhanced support for shared libraries.
|
||||
o Support for pkg-config.
|
||||
@@ -42,6 +43,7 @@
|
||||
o SSL/TLS: allow optional cipher choice according to server's preference.
|
||||
o SSL/TLS: allow server to explicitly set new session ids.
|
||||
o SSL/TLS: support Kerberos cipher suites (RFC2712).
|
||||
Only supports MIT Kerberos for now.
|
||||
o SSL/TLS: allow more precise control of renegotiations and sessions.
|
||||
o SSL/TLS: add callback to retrieve SSL/TLS messages.
|
||||
o SSL/TLS: support AES cipher suites (RFC3268).
|
||||
|
||||
16
PROBLEMS
16
PROBLEMS
@@ -46,3 +46,19 @@ scripts use the same name for output and input files, which means different
|
||||
will interfere with each other and lead to test failure.
|
||||
|
||||
The solution is simple for now: don't run parallell make when testing.
|
||||
|
||||
|
||||
* Bugs in gcc 3.0 triggered
|
||||
|
||||
According to a problem report, there are bugs in gcc 3.0 that are
|
||||
triggered by some of the code in OpenSSL, more specifically in
|
||||
PEM_get_EVP_CIPHER_INFO(). The triggering code is the following:
|
||||
|
||||
header+=11;
|
||||
if (*header != '4') return(0); header++;
|
||||
if (*header != ',') return(0); header++;
|
||||
|
||||
What happens is that gcc might optimize a little too agressively, and
|
||||
you end up with an extra incrementation when *header != '4'.
|
||||
|
||||
We recommend that you upgrade gcc to as high a 3.x version as you can.
|
||||
|
||||
2
README
2
README
@@ -1,5 +1,5 @@
|
||||
|
||||
OpenSSL 0.9.7-beta4 19 Nov 2002
|
||||
OpenSSL 0.9.7-beta5 5 Dec 2002
|
||||
|
||||
Copyright (c) 1998-2002 The OpenSSL Project
|
||||
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
|
||||
|
||||
22
STATUS
22
STATUS
@@ -1,14 +1,16 @@
|
||||
|
||||
OpenSSL STATUS Last modified at
|
||||
______________ $Date: 2002/11/19 09:34:38 $
|
||||
______________ $Date: 2002/12/05 22:51:17 $
|
||||
|
||||
DEVELOPMENT STATE
|
||||
|
||||
o OpenSSL 0.9.8: Under development...
|
||||
o OpenSSL 0.9.7-beta5: Released on December 5th, 2002
|
||||
o OpenSSL 0.9.7-beta4: Released on November 19th, 2002
|
||||
o OpenSSL 0.9.7-beta3: Released on July 30th, 2002
|
||||
o OpenSSL 0.9.7-beta2: Released on June 16th, 2002
|
||||
o OpenSSL 0.9.7-beta1: Released on June 1st, 2002
|
||||
o OpenSSL 0.9.7-beta3: Released on July 30th, 2002
|
||||
o OpenSSL 0.9.7-beta2: Released on June 16th, 2002
|
||||
o OpenSSL 0.9.7-beta1: Released on June 1st, 2002
|
||||
o OpenSSL 0.9.6h: Released on December 5th, 2002
|
||||
o OpenSSL 0.9.6g: Released on August 9th, 2002
|
||||
o OpenSSL 0.9.6f: Released on August 8th, 2002
|
||||
o OpenSSL 0.9.6e: Released on July 30th, 2002
|
||||
@@ -32,6 +34,18 @@
|
||||
o BN_mod_mul verification fails for mips3-sgi-irix
|
||||
unless configured with no-asm
|
||||
|
||||
o [2002-11-21]
|
||||
PR 343 mentions that scrubbing memory with 'memset(ptr, 0, n)' may
|
||||
be optimized away in modern compilers. This is definitely not good
|
||||
and needs to be fixed immediately. The formula to use is presented
|
||||
in:
|
||||
|
||||
http://online.securityfocus.com/archive/82/297918/2002-10-27/2002-11-02/0
|
||||
|
||||
The problem report that mentions this is:
|
||||
|
||||
https://www.aet.TU-Cottbus.DE/rt2/Ticket/Display.html?id=343
|
||||
|
||||
AVAILABLE PATCHES
|
||||
|
||||
o
|
||||
|
||||
25
TABLE
25
TABLE
@@ -3375,6 +3375,31 @@ $shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
|
||||
$ranlib =
|
||||
$arflags =
|
||||
|
||||
*** linux-x86_64
|
||||
$cc = gcc
|
||||
$cflags = -DL_ENDIAN -DNO_ASM
|
||||
$unistd =
|
||||
$thread_cflag = -D_REENTRANT
|
||||
$sys_id =
|
||||
$lflags = -ldl
|
||||
$bn_ops = SIXTY_FOUR_BIT_LONG
|
||||
$bn_obj =
|
||||
$des_obj =
|
||||
$bf_obj =
|
||||
$md5_obj =
|
||||
$sha1_obj =
|
||||
$cast_obj =
|
||||
$rc4_obj =
|
||||
$rmd160_obj =
|
||||
$rc5_obj =
|
||||
$dso_scheme = dlfcn
|
||||
$shared_target= linux-shared
|
||||
$shared_cflag = -fPIC
|
||||
$shared_ldflag =
|
||||
$shared_extension = .so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
|
||||
$ranlib =
|
||||
$arflags =
|
||||
|
||||
*** ncr-scde
|
||||
$cc = cc
|
||||
$cflags = -O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw
|
||||
|
||||
@@ -148,7 +148,8 @@ $(PROGRAM): progs.h $(E_OBJ) $(PROGRAM).o $(DLIBCRYPTO) $(DLIBSSL)
|
||||
fi
|
||||
-(cd ..; OPENSSL="`pwd`/apps/openssl"; export OPENSSL; \
|
||||
LIBPATH="`pwd`"; LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`"; \
|
||||
if [ "$(PLATFORM)" != "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
|
||||
if [ "$(PLATFORM)" == "DJGPP" ]; then PATH="`pwd`\;$$PATH"; \
|
||||
elif [ "$(PLATFORM)" != "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
|
||||
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
|
||||
$(PERL) tools/c_rehash certs)
|
||||
|
||||
|
||||
@@ -615,7 +615,7 @@ int password_callback(char *buf, int bufsiz, int verify,
|
||||
|
||||
if (buff)
|
||||
{
|
||||
memset(buff,0,(unsigned int)bufsiz);
|
||||
OPENSSL_cleanse(buff,(unsigned int)bufsiz);
|
||||
OPENSSL_free(buff);
|
||||
}
|
||||
|
||||
@@ -625,13 +625,13 @@ int password_callback(char *buf, int bufsiz, int verify,
|
||||
{
|
||||
BIO_printf(bio_err, "User interface error\n");
|
||||
ERR_print_errors(bio_err);
|
||||
memset(buf,0,(unsigned int)bufsiz);
|
||||
OPENSSL_cleanse(buf,(unsigned int)bufsiz);
|
||||
res = 0;
|
||||
}
|
||||
if (ok == -2)
|
||||
{
|
||||
BIO_printf(bio_err,"aborted!\n");
|
||||
memset(buf,0,(unsigned int)bufsiz);
|
||||
OPENSSL_cleanse(buf,(unsigned int)bufsiz);
|
||||
res = 0;
|
||||
}
|
||||
UI_free(ui);
|
||||
|
||||
@@ -332,6 +332,6 @@ end:
|
||||
if (osk != NULL) sk_free(osk);
|
||||
OBJ_cleanup();
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -706,7 +706,7 @@ bad:
|
||||
}
|
||||
pkey = load_key(bio_err, keyfile, keyform, 0, key, e,
|
||||
"CA private key");
|
||||
if (key) memset(key,0,strlen(key));
|
||||
if (key) OPENSSL_cleanse(key,strlen(key));
|
||||
if (pkey == NULL)
|
||||
{
|
||||
/* load_key() has already printed an appropriate message */
|
||||
@@ -1647,7 +1647,7 @@ err:
|
||||
NCONF_free(conf);
|
||||
OBJ_cleanup();
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static void lookup_fail(char *name, char *tag)
|
||||
|
||||
@@ -203,6 +203,6 @@ end:
|
||||
if (ssl != NULL) SSL_free(ssl);
|
||||
if (STDout != NULL) BIO_free_all(STDout);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -377,7 +377,7 @@ end:
|
||||
X509_STORE_free(store);
|
||||
}
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static X509_CRL *load_crl(char *infile, int format)
|
||||
|
||||
@@ -280,7 +280,7 @@ end:
|
||||
if (crl != NULL) X509_CRL_free(crl);
|
||||
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -356,7 +356,7 @@ int MAIN(int argc, char **argv)
|
||||
end:
|
||||
if (buf != NULL)
|
||||
{
|
||||
memset(buf,0,BUFSIZE);
|
||||
OPENSSL_cleanse(buf,BUFSIZE);
|
||||
OPENSSL_free(buf);
|
||||
}
|
||||
if (in != NULL) BIO_free(in);
|
||||
@@ -365,7 +365,7 @@ end:
|
||||
if(sigbuf) OPENSSL_free(sigbuf);
|
||||
if (bmd != NULL) BIO_free(bmd);
|
||||
apps_shutdown();
|
||||
EXIT(err);
|
||||
OPENSSL_EXIT(err);
|
||||
}
|
||||
|
||||
int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
|
||||
|
||||
@@ -333,6 +333,6 @@ end:
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
if (dh != NULL) DH_free(dh);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -519,7 +519,7 @@ end:
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
if (dh != NULL) DH_free(dh);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
/* dh_cb is identical to dsa_cb in apps/dsaparam.c */
|
||||
|
||||
@@ -314,6 +314,6 @@ end:
|
||||
if(passin) OPENSSL_free(passin);
|
||||
if(passout) OPENSSL_free(passout);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -372,7 +372,7 @@ end:
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
if (dsa != NULL) DSA_free(dsa);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static void MS_CALLBACK dsa_cb(int p, int n, void *arg)
|
||||
|
||||
@@ -481,9 +481,9 @@ bad:
|
||||
* bug picked up by
|
||||
* Larry J. Hughes Jr. <hughes@indiana.edu> */
|
||||
if (str == strbuf)
|
||||
memset(str,0,SIZE);
|
||||
OPENSSL_cleanse(str,SIZE);
|
||||
else
|
||||
memset(str,0,strlen(str));
|
||||
OPENSSL_cleanse(str,strlen(str));
|
||||
}
|
||||
if ((hiv != NULL) && !set_hex(hiv,iv,sizeof iv))
|
||||
{
|
||||
@@ -586,7 +586,7 @@ end:
|
||||
if (b64 != NULL) BIO_free(b64);
|
||||
if(pass) OPENSSL_free(pass);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
int set_hex(char *in, unsigned char *out, int size)
|
||||
|
||||
@@ -516,5 +516,5 @@ end:
|
||||
sk_pop_free(post_cmds, identity);
|
||||
if (bio_out != NULL) BIO_free_all(bio_out);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
@@ -122,5 +122,5 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ end:
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
if (dh != NULL) DH_free(dh);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static void MS_CALLBACK dh_cb(int p, int n, void *arg)
|
||||
|
||||
@@ -246,6 +246,6 @@ end:
|
||||
if (dsa != NULL) DSA_free(dsa);
|
||||
if(passout) OPENSSL_free(passout);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -258,7 +258,7 @@ err:
|
||||
if (ret != 0)
|
||||
ERR_print_errors(bio_err);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static void MS_CALLBACK genrsa_cb(int p, int n, void *arg)
|
||||
|
||||
@@ -102,7 +102,7 @@ int MAIN(int argc, char **argv)
|
||||
BIO_printf (bio_err, "-in file input file\n");
|
||||
BIO_printf (bio_err, "-out file output file\n");
|
||||
BIO_printf (bio_err, "-toseq output NS Sequence file\n");
|
||||
EXIT(1);
|
||||
OPENSSL_EXIT(1);
|
||||
}
|
||||
|
||||
if (infile) {
|
||||
@@ -162,6 +162,6 @@ end:
|
||||
BIO_free_all(out);
|
||||
NETSCAPE_CERT_SEQUENCE_free(seq);
|
||||
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -899,7 +899,7 @@ end:
|
||||
SSL_CTX_free(ctx);
|
||||
}
|
||||
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer,
|
||||
|
||||
@@ -358,7 +358,7 @@ end:
|
||||
BIO_free(bio_err);
|
||||
bio_err=NULL;
|
||||
}
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
#define LIST_STANDARD_COMMANDS "list-standard-commands"
|
||||
|
||||
@@ -292,7 +292,7 @@ err:
|
||||
if (out)
|
||||
BIO_free_all(out);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -505,6 +505,6 @@ err:
|
||||
int MAIN(int argc, char **argv)
|
||||
{
|
||||
fputs("Program not available.\n", stderr)
|
||||
EXIT(1);
|
||||
OPENSSL_EXIT(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -696,7 +696,7 @@ int MAIN(int argc, char **argv)
|
||||
if(passin) OPENSSL_free(passin);
|
||||
if(passout) OPENSSL_free(passout);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
int dump_certs_keys_p12 (BIO *out, PKCS12 *p12, char *pass,
|
||||
|
||||
@@ -301,5 +301,5 @@ end:
|
||||
if (in != NULL) BIO_free(in);
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
@@ -213,5 +213,5 @@ err:
|
||||
if (out)
|
||||
BIO_free_all(out);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
@@ -1075,7 +1075,7 @@ end:
|
||||
if (dsa_params != NULL) DSA_free(dsa_params);
|
||||
#endif
|
||||
apps_shutdown();
|
||||
EXIT(ex);
|
||||
OPENSSL_EXIT(ex);
|
||||
}
|
||||
|
||||
static int make_REQ(X509_REQ *req, EVP_PKEY *pkey, char *subj, int attribs,
|
||||
|
||||
@@ -369,7 +369,7 @@ end:
|
||||
if(passin) OPENSSL_free(passin);
|
||||
if(passout) OPENSSL_free(passout);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
#else /* !OPENSSL_NO_RSA */
|
||||
|
||||
|
||||
@@ -908,16 +908,16 @@ end:
|
||||
if (con != NULL) SSL_free(con);
|
||||
if (con2 != NULL) SSL_free(con2);
|
||||
if (ctx != NULL) SSL_CTX_free(ctx);
|
||||
if (cbuf != NULL) { memset(cbuf,0,BUFSIZZ); OPENSSL_free(cbuf); }
|
||||
if (sbuf != NULL) { memset(sbuf,0,BUFSIZZ); OPENSSL_free(sbuf); }
|
||||
if (mbuf != NULL) { memset(mbuf,0,BUFSIZZ); OPENSSL_free(mbuf); }
|
||||
if (cbuf != NULL) { OPENSSL_cleanse(cbuf,BUFSIZZ); OPENSSL_free(cbuf); }
|
||||
if (sbuf != NULL) { OPENSSL_cleanse(sbuf,BUFSIZZ); OPENSSL_free(sbuf); }
|
||||
if (mbuf != NULL) { OPENSSL_cleanse(mbuf,BUFSIZZ); OPENSSL_free(mbuf); }
|
||||
if (bio_c_out != NULL)
|
||||
{
|
||||
BIO_free(bio_c_out);
|
||||
bio_c_out=NULL;
|
||||
}
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -868,7 +868,7 @@ end:
|
||||
bio_s_out=NULL;
|
||||
}
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static void print_stats(BIO *bio, SSL_CTX *ssl_ctx)
|
||||
@@ -1184,7 +1184,7 @@ err:
|
||||
BIO_printf(bio_s_out,"CONNECTION CLOSED\n");
|
||||
if (buf != NULL)
|
||||
{
|
||||
memset(buf,0,bufsize);
|
||||
OPENSSL_cleanse(buf,bufsize);
|
||||
OPENSSL_free(buf);
|
||||
}
|
||||
if (ret >= 0)
|
||||
|
||||
@@ -642,7 +642,7 @@ end:
|
||||
tm_ctx=NULL;
|
||||
}
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
||||
@@ -273,7 +273,7 @@ end:
|
||||
if (out != NULL) BIO_free_all(out);
|
||||
if (x != NULL) SSL_SESSION_free(x);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static SSL_SESSION *load_sess_id(char *infile, int format)
|
||||
|
||||
@@ -1729,7 +1729,7 @@ end:
|
||||
DSA_free(dsa_key[i]);
|
||||
#endif
|
||||
apps_shutdown();
|
||||
EXIT(mret);
|
||||
OPENSSL_EXIT(mret);
|
||||
}
|
||||
|
||||
static void print_message(const char *s, long num, int length)
|
||||
|
||||
@@ -295,5 +295,5 @@ end:
|
||||
EVP_PKEY_free(pkey);
|
||||
if(passin) OPENSSL_free(passin);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
@@ -232,7 +232,7 @@ end:
|
||||
sk_X509_pop_free(untrusted, X509_free);
|
||||
sk_X509_pop_free(trusted, X509_free);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose, ENGINE *e)
|
||||
|
||||
@@ -200,5 +200,5 @@ int MAIN(int argc, char **argv)
|
||||
if (dir) printf("%s\n",SSLeay_version(SSLEAY_DIR));
|
||||
end:
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
@@ -1017,7 +1017,7 @@ end:
|
||||
sk_ASN1_OBJECT_pop_free(reject, ASN1_OBJECT_free);
|
||||
if (passin) OPENSSL_free(passin);
|
||||
apps_shutdown();
|
||||
EXIT(ret);
|
||||
OPENSSL_EXIT(ret);
|
||||
}
|
||||
|
||||
static ASN1_INTEGER *load_serial(char *CAfile, char *serialfile, int create)
|
||||
|
||||
1
config
1
config
@@ -585,6 +585,7 @@ EOF
|
||||
arm*-*-linux2) OUT="linux-elf-arm" ;;
|
||||
s390-*-linux2) OUT="linux-s390" ;;
|
||||
s390x-*-linux?) OUT="linux-s390x" ;;
|
||||
x86_64-*-linux?) OUT="linux-x86_64" ;;
|
||||
*-*-linux2) OUT="linux-elf"
|
||||
if [ "$GCCVER" -gt 28 ]; then
|
||||
if grep '^model.*Pentium' /proc/cpuinfo >/dev/null ; then
|
||||
|
||||
@@ -36,8 +36,8 @@ GENERAL=Makefile README crypto-lib.com install.com
|
||||
|
||||
LIB= $(TOP)/libcrypto.a
|
||||
SHARED_LIB= libcrypto$(SHLIB_EXT)
|
||||
LIBSRC= cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c
|
||||
LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o
|
||||
LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c
|
||||
LIBOBJ= cryptlib.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o
|
||||
|
||||
SRC= $(LIBSRC)
|
||||
|
||||
@@ -193,6 +193,10 @@ mem.o: ../include/openssl/err.h ../include/openssl/lhash.h
|
||||
mem.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
mem.o: ../include/openssl/safestack.h ../include/openssl/stack.h
|
||||
mem.o: ../include/openssl/symhacks.h cryptlib.h mem.c
|
||||
mem_clr.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
mem_clr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
|
||||
mem_clr.o: ../include/openssl/safestack.h ../include/openssl/stack.h
|
||||
mem_clr.o: ../include/openssl/symhacks.h mem_clr.c
|
||||
mem_dbg.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
|
||||
mem_dbg.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
|
||||
mem_dbg.o: ../include/openssl/err.h ../include/openssl/lhash.h
|
||||
|
||||
@@ -226,13 +226,18 @@ static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb)
|
||||
ASN1err(ASN1_F_ASN1_D2I_BIO,ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
i=BIO_read(in,&(b->data[len]),want);
|
||||
if (i <= 0)
|
||||
while (want > 0)
|
||||
{
|
||||
ASN1err(ASN1_F_ASN1_D2I_BIO,ASN1_R_NOT_ENOUGH_DATA);
|
||||
goto err;
|
||||
i=BIO_read(in,&(b->data[len]),want);
|
||||
if (i <= 0)
|
||||
{
|
||||
ASN1err(ASN1_F_ASN1_D2I_BIO,
|
||||
ASN1_R_NOT_ENOUGH_DATA);
|
||||
goto err;
|
||||
}
|
||||
len+=i;
|
||||
want -= i;
|
||||
}
|
||||
len+=i;
|
||||
}
|
||||
off+=(int)c.slen;
|
||||
if (eos <= 0)
|
||||
|
||||
@@ -204,9 +204,9 @@ int ASN1_sign(int (*i2d)(), X509_ALGOR *algor1, X509_ALGOR *algor2,
|
||||
err:
|
||||
EVP_MD_CTX_cleanup(&ctx);
|
||||
if (buf_in != NULL)
|
||||
{ memset((char *)buf_in,0,(unsigned int)inl); OPENSSL_free(buf_in); }
|
||||
{ OPENSSL_cleanse((char *)buf_in,(unsigned int)inl); OPENSSL_free(buf_in); }
|
||||
if (buf_out != NULL)
|
||||
{ memset((char *)buf_out,0,outll); OPENSSL_free(buf_out); }
|
||||
{ OPENSSL_cleanse((char *)buf_out,outll); OPENSSL_free(buf_out); }
|
||||
return(outl);
|
||||
}
|
||||
|
||||
@@ -287,8 +287,8 @@ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
|
||||
err:
|
||||
EVP_MD_CTX_cleanup(&ctx);
|
||||
if (buf_in != NULL)
|
||||
{ memset((char *)buf_in,0,(unsigned int)inl); OPENSSL_free(buf_in); }
|
||||
{ OPENSSL_cleanse((char *)buf_in,(unsigned int)inl); OPENSSL_free(buf_in); }
|
||||
if (buf_out != NULL)
|
||||
{ memset((char *)buf_out,0,outll); OPENSSL_free(buf_out); }
|
||||
{ OPENSSL_cleanse((char *)buf_out,outll); OPENSSL_free(buf_out); }
|
||||
return(outl);
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
int ASN1_TYPE_get(ASN1_TYPE *a)
|
||||
{
|
||||
if (a->value.ptr != NULL)
|
||||
if ((a->value.ptr != NULL) || (a->type == V_ASN1_NULL))
|
||||
return(a->type);
|
||||
else
|
||||
return(0);
|
||||
|
||||
@@ -103,7 +103,7 @@ int ASN1_verify(int (*i2d)(), X509_ALGOR *a, ASN1_BIT_STRING *signature,
|
||||
EVP_VerifyInit_ex(&ctx,type, NULL);
|
||||
EVP_VerifyUpdate(&ctx,(unsigned char *)buf_in,inl);
|
||||
|
||||
memset(buf_in,0,(unsigned int)inl);
|
||||
OPENSSL_cleanse(buf_in,(unsigned int)inl);
|
||||
OPENSSL_free(buf_in);
|
||||
|
||||
if (EVP_VerifyFinal(&ctx,(unsigned char *)signature->data,
|
||||
@@ -153,7 +153,7 @@ int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a, ASN1_BIT_STRING *signat
|
||||
EVP_VerifyInit_ex(&ctx,type, NULL);
|
||||
EVP_VerifyUpdate(&ctx,(unsigned char *)buf_in,inl);
|
||||
|
||||
memset(buf_in,0,(unsigned int)inl);
|
||||
OPENSSL_cleanse(buf_in,(unsigned int)inl);
|
||||
OPENSSL_free(buf_in);
|
||||
|
||||
if (EVP_VerifyFinal(&ctx,(unsigned char *)signature->data,
|
||||
|
||||
@@ -187,7 +187,7 @@ int i2d_RSA_NET(const RSA *a, unsigned char **pp, int (*cb)(), int sgckey)
|
||||
i2d_NETSCAPE_PKEY(pkey,&zz);
|
||||
|
||||
/* Wipe the private key encoding */
|
||||
memset(pkey->private_key->data, 0, rsalen);
|
||||
OPENSSL_cleanse(pkey->private_key->data, rsalen);
|
||||
|
||||
if (cb == NULL)
|
||||
cb=EVP_read_pw_string;
|
||||
@@ -206,7 +206,7 @@ int i2d_RSA_NET(const RSA *a, unsigned char **pp, int (*cb)(), int sgckey)
|
||||
}
|
||||
|
||||
EVP_BytesToKey(EVP_rc4(),EVP_md5(),NULL,buf,i,1,key,NULL);
|
||||
memset(buf,0,256);
|
||||
OPENSSL_cleanse(buf,256);
|
||||
|
||||
/* Encrypt private key in place */
|
||||
zz = enckey->enckey->digest->data;
|
||||
@@ -294,7 +294,7 @@ static RSA *d2i_RSA_NET_2(RSA **a, ASN1_OCTET_STRING *os,
|
||||
}
|
||||
|
||||
EVP_BytesToKey(EVP_rc4(),EVP_md5(),NULL,buf,i,1,key,NULL);
|
||||
memset(buf,0,256);
|
||||
OPENSSL_cleanse(buf,256);
|
||||
|
||||
EVP_CIPHER_CTX_init(&ctx);
|
||||
EVP_DecryptInit_ex(&ctx,EVP_rc4(),NULL, key,NULL);
|
||||
|
||||
@@ -68,8 +68,8 @@ static int pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
|
||||
if(operation == ASN1_OP_FREE_PRE) {
|
||||
PKCS8_PRIV_KEY_INFO *key = (PKCS8_PRIV_KEY_INFO *)*pval;
|
||||
if (key->pkey->value.octet_string)
|
||||
memset(key->pkey->value.octet_string->data,
|
||||
0, key->pkey->value.octet_string->length);
|
||||
OPENSSL_cleanse(key->pkey->value.octet_string->data,
|
||||
key->pkey->value.octet_string->length);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#ifdef OPENSSL_NO_BF
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -275,7 +277,7 @@ int main(int argc, char *argv[])
|
||||
else
|
||||
ret=test();
|
||||
|
||||
exit(ret);
|
||||
EXIT(ret);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.title vax_bn_mul_add_word unsigned multiply & add, 32*32+32+32=>64
|
||||
.title vax_bn_mul_add_words unsigned multiply & add, 32*32+32+32=>64
|
||||
;
|
||||
; w.j.m. 15-jan-1999
|
||||
;
|
||||
@@ -59,7 +59,7 @@ w=16 ;(AP) w by value (input)
|
||||
movl r6,r0 ; return c
|
||||
ret
|
||||
|
||||
.title vax_bn_mul_word unsigned multiply & add, 32*32+32=>64
|
||||
.title vax_bn_mul_words unsigned multiply & add, 32*32+32=>64
|
||||
;
|
||||
; w.j.m. 15-jan-1999
|
||||
;
|
||||
@@ -172,146 +172,148 @@ n=12 ;(AP) n by value (input)
|
||||
; }
|
||||
;
|
||||
; Using EDIV would be very easy, if it didn't do signed calculations.
|
||||
; Therefore, som extra things have to happen around it. The way to
|
||||
; handle that is to shift all operands right one step (basically dividing
|
||||
; them by 2) and handle the different cases depending on what the lowest
|
||||
; bit of each operand was.
|
||||
; Any time, any of the input numbers are signed, there are problems,
|
||||
; usually with integer overflow, at which point it returns useless
|
||||
; data (the quotient gets the value of l, and the remainder becomes 0).
|
||||
;
|
||||
; To start with, let's define the following:
|
||||
; If it was just for the dividend, it would be very easy, just divide
|
||||
; it by 2 (unsigned), do the division, multiply the resulting quotient
|
||||
; and remainder by 2, add the bit that was dropped when dividing by 2
|
||||
; to the remainder, and do some adjustment so the remainder doesn't
|
||||
; end up larger than the divisor. This method works as long as the
|
||||
; divisor is positive, so we'll keep that (with a small adjustment)
|
||||
; as the main method.
|
||||
; For some cases when the divisor is negative (from EDIV's point of
|
||||
; view, i.e. when the highest bit is set), dividing the dividend by
|
||||
; 2 isn't enough, it needs to be divided by 4. Furthermore, the
|
||||
; divisor needs to be divided by 2 (unsigned) as well, to avoid more
|
||||
; problems with the sign. In this case, a little extra fiddling with
|
||||
; the remainder is required.
|
||||
;
|
||||
; a' = l & 1
|
||||
; a2 = <h,l> >> 1 # UNSIGNED shift!
|
||||
; b' = d & 1
|
||||
; b2 = d >> 1 # UNSIGNED shift!
|
||||
; So, the simplest way to handle this is always to divide the dividend
|
||||
; by 4, and to divide the divisor by 2 if it's highest bit is set.
|
||||
; After EDIV has been used, the quotient gets multiplied by 4 if the
|
||||
; original divisor was positive, otherwise 2. The remainder, oddly
|
||||
; enough, is *always* multiplied by 4.
|
||||
;
|
||||
; Now, use EDIV to calculate a quotient and a remainder:
|
||||
; The routine ends with comparing the resulting remainder with the
|
||||
; original divisor and if the remainder is larger, subtract the
|
||||
; original divisor from it, and increase the quotient by 1. This is
|
||||
; done until the remainder is smaller than the divisor.
|
||||
;
|
||||
; q'' = a2/b2
|
||||
; r'' = a2 - q''*b2
|
||||
; The complete algorithm looks like this:
|
||||
;
|
||||
; If b' is 0, the quotient is already correct, we just need to adjust the
|
||||
; remainder:
|
||||
; d' = d
|
||||
; l' = l & 3
|
||||
; [h,l] = [h,l] >> 2
|
||||
; [q,r] = floor([h,l] / d) # This is the EDIV operation
|
||||
; if (q < 0) q = -q # I doubt this is necessary any more
|
||||
;
|
||||
; if (b' == 0)
|
||||
; r' = r >> 30
|
||||
; if (d' >= 0) q = q << 1
|
||||
; q = q << 1
|
||||
; r = (r << 2) + l'
|
||||
;
|
||||
; if (d' < 0)
|
||||
; {
|
||||
; r = 2*r'' + a'
|
||||
; q = q''
|
||||
; }
|
||||
;
|
||||
; If b' is 1, we need to do other adjustements. The first thought is the
|
||||
; following (note that r' will not always have the right value, but an
|
||||
; adjustement follows further down):
|
||||
;
|
||||
; if (b' == 1)
|
||||
; {
|
||||
; q' = q''
|
||||
; r' = a - q'*b
|
||||
;
|
||||
; However, one can note the folowing relationship:
|
||||
;
|
||||
; r'' = a2 - q''*b2
|
||||
; => 2*r'' = 2*a2 - 2*q''*b2
|
||||
; = { a = 2*a2 + a', b = 2*b2 + b' = 2*b2 + 1,
|
||||
; q' = q'' }
|
||||
; = a - a' - q'*(b - 1)
|
||||
; = a - q'*b - a' + q'
|
||||
; = r' - a' + q'
|
||||
; => r' = 2*r'' - q' + a'
|
||||
;
|
||||
; This enables us to use r'' instead of discarding and calculating another
|
||||
; modulo:
|
||||
;
|
||||
; if (b' == 1)
|
||||
; {
|
||||
; q' = q''
|
||||
; r' = (r'' << 1) - q' + a'
|
||||
;
|
||||
; Now, all we have to do is adjust r', because it might be < 0:
|
||||
;
|
||||
; while (r' < 0)
|
||||
; [r',r] = [r',r] - q
|
||||
; while ([r',r] < 0)
|
||||
; {
|
||||
; r' = r' + b
|
||||
; q' = q' - 1
|
||||
; [r',r] = [r',r] + d
|
||||
; q = q - 1
|
||||
; }
|
||||
; }
|
||||
;
|
||||
; return q'
|
||||
; while ([r',r] >= d)
|
||||
; {
|
||||
; [r',r] = [r',r] - d
|
||||
; q = q + 1
|
||||
; }
|
||||
;
|
||||
; return q
|
||||
|
||||
h=4 ;(AP) h by value (input)
|
||||
l=8 ;(AP) l by value (input)
|
||||
d=12 ;(AP) d by value (input)
|
||||
|
||||
;aprim=r5
|
||||
;a2=r6
|
||||
;a20=r6
|
||||
;a21=r7
|
||||
;bprim=r8
|
||||
;b2=r9
|
||||
;qprim=r10 ; initially used as q''
|
||||
;rprim=r11 ; initially used as r''
|
||||
;lprim=r5
|
||||
;rprim=r6
|
||||
;dprim=r7
|
||||
|
||||
|
||||
.psect code,nowrt
|
||||
|
||||
.entry bn_div_words,^m<r2,r3,r4,r5,r6,r7,r8,r9,r10,r11>
|
||||
.entry bn_div_words,^m<r2,r3,r4,r5,r6,r7>
|
||||
movl l(ap),r2
|
||||
movl h(ap),r3
|
||||
movl d(ap),r4
|
||||
|
||||
movl #0,r5
|
||||
movl #0,r8
|
||||
movl #0,r0
|
||||
; movl #0,r1
|
||||
bicl3 #^XFFFFFFFC,r2,r5 ; l' = l & 3
|
||||
bicl3 #^X00000003,r2,r2
|
||||
|
||||
rotl #-1,r2,r6 ; a20 = l >> 1 (almost)
|
||||
rotl #-1,r3,r7 ; a21 = h >> 1 (almost)
|
||||
rotl #-1,r4,r9 ; b2 = d >> 1 (almost)
|
||||
bicl3 #^XFFFFFFFC,r3,r6
|
||||
bicl3 #^X00000003,r3,r3
|
||||
|
||||
addl r6,r2
|
||||
rotl #-2,r2,r2 ; l = l >> 2
|
||||
rotl #-2,r3,r3 ; h = h >> 2
|
||||
|
||||
movl #0,r6
|
||||
movl r4,r7 ; d' = d
|
||||
|
||||
tstl r6
|
||||
bgeq 1$
|
||||
xorl2 #^X80000000,r6 ; fixup a20 so highest bit is 0
|
||||
incl r5 ; a' = 1
|
||||
1$:
|
||||
tstl r7
|
||||
bgeq 2$
|
||||
xorl2 #^X80000000,r6 ; fixup a20 so highest bit is 1,
|
||||
; since that's what was lowest in a21
|
||||
xorl2 #^X80000000,r7 ; fixup a21 so highest bit is 1
|
||||
2$:
|
||||
tstl r9
|
||||
tstl r4
|
||||
beql 666$ ; Uh-oh, the divisor is 0...
|
||||
bgtr 3$
|
||||
xorl2 #^X80000000,r9 ; fixup b2 so highest bit is 0
|
||||
incl r8 ; b' = 1
|
||||
3$:
|
||||
tstl r9
|
||||
bneq 4$ ; if b2 is 0, we know that b' is 1
|
||||
tstl r3
|
||||
bneq 666$ ; if higher half isn't 0, we overflow
|
||||
movl r2,r10 ; otherwise, we have our result
|
||||
brb 42$ ; This is a success, really.
|
||||
4$:
|
||||
ediv r9,r6,r10,r11
|
||||
bgtr 1$
|
||||
rotl #-1,r4,r4 ; If d is negative, shift it right.
|
||||
bicl2 #^X80000000,r4 ; Since d is then a large number, the
|
||||
; lowest bit is insignificant
|
||||
; (contradict that, and I'll fix the problem!)
|
||||
1$:
|
||||
ediv r4,r2,r2,r3 ; Do the actual division
|
||||
|
||||
tstl r2
|
||||
bgeq 3$
|
||||
mnegl r2,r2 ; if q < 0, negate it
|
||||
3$:
|
||||
tstl r7
|
||||
blss 4$
|
||||
ashl #1,r2,r2 ; q = q << 1
|
||||
4$:
|
||||
ashl #1,r2,r2 ; q = q << 1
|
||||
rotl #2,r3,r3 ; r = r << 2
|
||||
bicl3 #^XFFFFFFFC,r3,r6 ; r' gets the high bits from r
|
||||
bicl3 #^X00000003,r3,r3
|
||||
addl r5,r3 ; r = r + l'
|
||||
|
||||
tstl r7
|
||||
bgeq 5$
|
||||
bitl #1,r7
|
||||
beql 5$ ; if d < 0 && d & 1
|
||||
subl r2,r3 ; [r',r] = [r',r] - q
|
||||
sbwc #0,r6
|
||||
45$:
|
||||
bgeq 5$ ; while r < 0
|
||||
decl r2 ; q = q - 1
|
||||
addl r7,r3 ; [r',r] = [r',r] + d
|
||||
adwc #0,r6
|
||||
brb 45$
|
||||
|
||||
tstl r8
|
||||
bneq 5$ ; If b' != 0, go to the other part
|
||||
; addl3 r11,r11,r1
|
||||
; addl2 r5,r1
|
||||
brb 42$
|
||||
5$:
|
||||
ashl #1,r11,r11
|
||||
subl2 r10,r11
|
||||
addl2 r5,r11
|
||||
bgeq 7$
|
||||
tstl r6
|
||||
bneq 6$
|
||||
cmpl r3,r7
|
||||
blssu 42$ ; while [r',r] >= d'
|
||||
6$:
|
||||
decl r10
|
||||
addl2 r4,r11
|
||||
blss 6$
|
||||
7$:
|
||||
; movl r11,r1
|
||||
subl r7,r3 ; [r',r] = [r',r] - d
|
||||
sbwc #0,r6
|
||||
incl r2 ; q = q + 1
|
||||
brb 5$
|
||||
42$:
|
||||
movl r10,r0
|
||||
; movl r3,r1
|
||||
movl r2,r0
|
||||
ret
|
||||
666$:
|
||||
movl #^XFFFFFFFF,r0
|
||||
ret
|
||||
|
||||
.title vax_bn_add_words unsigned add of two arrays
|
||||
|
||||
@@ -263,12 +263,12 @@ void BN_clear_free(BIGNUM *a)
|
||||
if (a == NULL) return;
|
||||
if (a->d != NULL)
|
||||
{
|
||||
memset(a->d,0,a->dmax*sizeof(a->d[0]));
|
||||
OPENSSL_cleanse(a->d,a->dmax*sizeof(a->d[0]));
|
||||
if (!(BN_get_flags(a,BN_FLG_STATIC_DATA)))
|
||||
OPENSSL_free(a->d);
|
||||
}
|
||||
i=BN_get_flags(a,BN_FLG_MALLOCED);
|
||||
memset(a,0,sizeof(BIGNUM));
|
||||
OPENSSL_cleanse(a,sizeof(BIGNUM));
|
||||
if (i)
|
||||
OPENSSL_free(a);
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom)
|
||||
err:
|
||||
if (buf != NULL)
|
||||
{
|
||||
memset(buf,0,bytes);
|
||||
OPENSSL_cleanse(buf,bytes);
|
||||
OPENSSL_free(buf);
|
||||
}
|
||||
return(ret);
|
||||
|
||||
@@ -141,10 +141,10 @@ int main(int argc, char *argv[])
|
||||
|
||||
|
||||
ctx=BN_CTX_new();
|
||||
if (ctx == NULL) exit(1);
|
||||
if (ctx == NULL) EXIT(1);
|
||||
|
||||
out=BIO_new(BIO_s_file());
|
||||
if (out == NULL) exit(1);
|
||||
if (out == NULL) EXIT(1);
|
||||
if (outfile == NULL)
|
||||
{
|
||||
BIO_set_fp(out,stdout,BIO_NOCLOSE);
|
||||
@@ -154,7 +154,7 @@ int main(int argc, char *argv[])
|
||||
if (!BIO_write_filename(out,outfile))
|
||||
{
|
||||
perror(outfile);
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,14 +238,14 @@ int main(int argc, char *argv[])
|
||||
BIO_free(out);
|
||||
|
||||
/**/
|
||||
exit(0);
|
||||
EXIT(0);
|
||||
err:
|
||||
BIO_puts(out,"1\n"); /* make sure the Perl script fed by bc notices
|
||||
* the failure, see test_bn in test/Makefile.ssl*/
|
||||
BIO_flush(out);
|
||||
ERR_load_crypto_strings();
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@@ -488,7 +488,7 @@ int test_mul(BIO *bp)
|
||||
BN_CTX *ctx;
|
||||
|
||||
ctx = BN_CTX_new();
|
||||
if (ctx == NULL) exit(1);
|
||||
if (ctx == NULL) EXIT(1);
|
||||
|
||||
BN_init(&a);
|
||||
BN_init(&b);
|
||||
@@ -726,7 +726,7 @@ int test_mod_mul(BIO *bp, BN_CTX *ctx)
|
||||
while ((l=ERR_get_error()))
|
||||
fprintf(stderr,"ERROR:%s\n",
|
||||
ERR_error_string(l,NULL));
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
}
|
||||
if (bp != NULL)
|
||||
{
|
||||
|
||||
@@ -59,6 +59,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/rand.h>
|
||||
@@ -86,7 +89,7 @@ int main(int argc, char *argv[])
|
||||
ERR_load_BN_strings();
|
||||
|
||||
ctx=BN_CTX_new();
|
||||
if (ctx == NULL) exit(1);
|
||||
if (ctx == NULL) EXIT(1);
|
||||
r_mont=BN_new();
|
||||
r_recp=BN_new();
|
||||
r_simple=BN_new();
|
||||
@@ -99,7 +102,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
out=BIO_new(BIO_s_file());
|
||||
|
||||
if (out == NULL) exit(1);
|
||||
if (out == NULL) EXIT(1);
|
||||
BIO_set_fp(out,stdout,BIO_NOCLOSE);
|
||||
|
||||
for (i=0; i<200; i++)
|
||||
@@ -124,7 +127,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
printf("BN_mod_exp_mont() problems\n");
|
||||
ERR_print_errors(out);
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
}
|
||||
|
||||
ret=BN_mod_exp_recp(r_recp,a,b,m,ctx);
|
||||
@@ -132,7 +135,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
printf("BN_mod_exp_recp() problems\n");
|
||||
ERR_print_errors(out);
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
}
|
||||
|
||||
ret=BN_mod_exp_simple(r_simple,a,b,m,ctx);
|
||||
@@ -140,7 +143,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
printf("BN_mod_exp_simple() problems\n");
|
||||
ERR_print_errors(out);
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
}
|
||||
|
||||
if (BN_cmp(r_simple, r_mont) == 0
|
||||
@@ -163,7 +166,7 @@ int main(int argc, char *argv[])
|
||||
printf("\nrecp ="); BN_print(out,r_recp);
|
||||
printf("\nmont ="); BN_print(out,r_mont);
|
||||
printf("\n");
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
}
|
||||
}
|
||||
BN_free(r_mont);
|
||||
@@ -177,11 +180,11 @@ int main(int argc, char *argv[])
|
||||
CRYPTO_mem_leaks(out);
|
||||
BIO_free(out);
|
||||
printf(" done\n");
|
||||
exit(0);
|
||||
EXIT(0);
|
||||
err:
|
||||
ERR_load_crypto_strings();
|
||||
ERR_print_errors(out);
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#ifdef OPENSSL_NO_CAST
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -224,7 +226,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
#endif
|
||||
|
||||
exit(err);
|
||||
EXIT(err);
|
||||
return(err);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -158,7 +158,7 @@ $!
|
||||
$ APPS_DES = "DES/DES,CBC3_ENC"
|
||||
$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE"
|
||||
$
|
||||
$ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid,o_time"
|
||||
$ LIB_ = "cryptlib,mem,mem_clr,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid,o_time"
|
||||
$ LIB_MD2 = "md2_dgst,md2_one"
|
||||
$ LIB_MD4 = "md4_dgst,md4_one"
|
||||
$ LIB_MD5 = "md5_dgst,md5_one"
|
||||
|
||||
@@ -63,9 +63,6 @@
|
||||
|
||||
#ifndef OPENSSL_NO_FP_API
|
||||
#include <stdio.h>
|
||||
#ifdef OPENSSL_SYS_WINCE
|
||||
#include <stdio_extras.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <openssl/stack.h>
|
||||
@@ -390,6 +387,8 @@ void *CRYPTO_realloc_clean(void *addr,int old_num,int num,const char *file,
|
||||
int line);
|
||||
void *CRYPTO_remalloc(void *addr,int num, const char *file, int line);
|
||||
|
||||
void OPENSSL_cleanse(void *ptr, size_t len);
|
||||
|
||||
void CRYPTO_set_mem_debug_options(long bits);
|
||||
long CRYPTO_get_mem_debug_options(void);
|
||||
|
||||
|
||||
@@ -427,7 +427,7 @@ void doencryption(void)
|
||||
k2[i-8]=k;
|
||||
}
|
||||
DES_set_key_unchecked(&k2,&ks2);
|
||||
memset(k2,0,sizeof(k2));
|
||||
OPENSSL_cleanse(k2,sizeof(k2));
|
||||
}
|
||||
else if (longk || flag3)
|
||||
{
|
||||
@@ -435,7 +435,7 @@ void doencryption(void)
|
||||
{
|
||||
DES_string_to_2keys(key,&kk,&k2);
|
||||
DES_set_key_unchecked(&k2,&ks2);
|
||||
memset(k2,0,sizeof(k2));
|
||||
OPENSSL_cleanse(k2,sizeof(k2));
|
||||
}
|
||||
else
|
||||
DES_string_to_key(key,&kk);
|
||||
@@ -457,8 +457,8 @@ void doencryption(void)
|
||||
}
|
||||
|
||||
DES_set_key_unchecked(&kk,&ks);
|
||||
memset(key,0,sizeof(key));
|
||||
memset(kk,0,sizeof(kk));
|
||||
OPENSSL_cleanse(key,sizeof(key));
|
||||
OPENSSL_cleanse(kk,sizeof(kk));
|
||||
/* woops - A bug that does not showup under unix :-( */
|
||||
memset(iv,0,sizeof(iv));
|
||||
memset(iv2,0,sizeof(iv2));
|
||||
@@ -666,18 +666,18 @@ void doencryption(void)
|
||||
if (l) fclose(CKSUM_OUT);
|
||||
}
|
||||
problems:
|
||||
memset(buf,0,sizeof(buf));
|
||||
memset(obuf,0,sizeof(obuf));
|
||||
memset(&ks,0,sizeof(ks));
|
||||
memset(&ks2,0,sizeof(ks2));
|
||||
memset(iv,0,sizeof(iv));
|
||||
memset(iv2,0,sizeof(iv2));
|
||||
memset(kk,0,sizeof(kk));
|
||||
memset(k2,0,sizeof(k2));
|
||||
memset(uubuf,0,sizeof(uubuf));
|
||||
memset(b,0,sizeof(b));
|
||||
memset(bb,0,sizeof(bb));
|
||||
memset(cksum,0,sizeof(cksum));
|
||||
OPENSSL_cleanse(buf,sizeof(buf));
|
||||
OPENSSL_cleanse(obuf,sizeof(obuf));
|
||||
OPENSSL_cleanse(&ks,sizeof(ks));
|
||||
OPENSSL_cleanse(&ks2,sizeof(ks2));
|
||||
OPENSSL_cleanse(iv,sizeof(iv));
|
||||
OPENSSL_cleanse(iv2,sizeof(iv2));
|
||||
OPENSSL_cleanse(kk,sizeof(kk));
|
||||
OPENSSL_cleanse(k2,sizeof(k2));
|
||||
OPENSSL_cleanse(uubuf,sizeof(uubuf));
|
||||
OPENSSL_cleanse(b,sizeof(b));
|
||||
OPENSSL_cleanse(bb,sizeof(bb));
|
||||
OPENSSL_cleanse(cksum,sizeof(cksum));
|
||||
if (Exit) EXIT(Exit);
|
||||
}
|
||||
|
||||
|
||||
@@ -112,9 +112,6 @@
|
||||
#include <string.h>
|
||||
#include <openssl/des.h>
|
||||
#include <openssl/ui.h>
|
||||
#ifdef OPENSSL_SYS_WINCE
|
||||
#include <stdio_extras.h> /* BUFSIZ */
|
||||
#endif
|
||||
|
||||
int DES_read_password(DES_cblock *key, const char *prompt, int verify)
|
||||
{
|
||||
@@ -123,8 +120,8 @@ int DES_read_password(DES_cblock *key, const char *prompt, int verify)
|
||||
|
||||
if ((ok=UI_UTIL_read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
|
||||
DES_string_to_key(buf,key);
|
||||
memset(buf,0,BUFSIZ);
|
||||
memset(buff,0,BUFSIZ);
|
||||
OPENSSL_cleanse(buf,BUFSIZ);
|
||||
OPENSSL_cleanse(buff,BUFSIZ);
|
||||
return(ok);
|
||||
}
|
||||
|
||||
@@ -136,7 +133,7 @@ int DES_read_2passwords(DES_cblock *key1, DES_cblock *key2, const char *prompt,
|
||||
|
||||
if ((ok=UI_UTIL_read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
|
||||
DES_string_to_2keys(buf,key1,key2);
|
||||
memset(buf,0,BUFSIZ);
|
||||
memset(buff,0,BUFSIZ);
|
||||
OPENSSL_cleanse(buf,BUFSIZ);
|
||||
OPENSSL_cleanse(buff,BUFSIZ);
|
||||
return(ok);
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ int des_read_pw_string(char *buf, int length, const char *prompt,
|
||||
int ret;
|
||||
|
||||
ret=des_read_pw(buf,buff,(length>BUFSIZ)?BUFSIZ:length,prompt,verify);
|
||||
memset(buff,0,BUFSIZ);
|
||||
OPENSSL_cleanse(buff,BUFSIZ);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ void DES_string_to_key(const char *str, DES_cblock *key)
|
||||
DES_set_key_unchecked(key,&ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char*)str,key,length,&ks,key);
|
||||
memset(&ks,0,sizeof(ks));
|
||||
OPENSSL_cleanse(&ks,sizeof(ks));
|
||||
DES_set_odd_parity(key);
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2)
|
||||
DES_set_key_unchecked(key2,&ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char*)str,key2,length,&ks,key2);
|
||||
memset(&ks,0,sizeof(ks));
|
||||
OPENSSL_cleanse(&ks,sizeof(ks));
|
||||
DES_set_odd_parity(key1);
|
||||
DES_set_odd_parity(key2);
|
||||
}
|
||||
|
||||
@@ -59,6 +59,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#ifdef OPENSSL_SYS_WINDOWS
|
||||
#include "../bio/bss_file.c"
|
||||
#endif
|
||||
@@ -111,7 +114,7 @@ int main(int argc, char *argv[])
|
||||
RAND_seed(rnd_seed, sizeof rnd_seed);
|
||||
|
||||
out=BIO_new(BIO_s_file());
|
||||
if (out == NULL) exit(1);
|
||||
if (out == NULL) EXIT(1);
|
||||
BIO_set_fp(out,stdout,BIO_NOCLOSE);
|
||||
|
||||
a=DH_generate_parameters(64,DH_GENERATOR_5,cb,out);
|
||||
@@ -195,7 +198,7 @@ err:
|
||||
CRYPTO_cleanup_all_ex_data();
|
||||
ERR_remove_state(0);
|
||||
CRYPTO_mem_leaks_fp(stderr);
|
||||
exit(ret);
|
||||
EXIT(ret);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -224,11 +224,13 @@ int DSA_size(const DSA *r)
|
||||
{
|
||||
int ret,i;
|
||||
ASN1_INTEGER bs;
|
||||
unsigned char buf[4];
|
||||
unsigned char buf[4]; /* 4 bytes looks really small.
|
||||
However, i2d_ASN1_INTEGER() will not look
|
||||
beyond the first byte, as long as the second
|
||||
parameter is NULL. */
|
||||
|
||||
i=BN_num_bits(r->q);
|
||||
bs.length=(i+7)/8;
|
||||
OPENSSL_assert(bs.length <= sizeof buf);
|
||||
bs.data=buf;
|
||||
bs.type=V_ASN1_INTEGER;
|
||||
/* If the top bit is set the asn1 encoding is 1 larger. */
|
||||
|
||||
@@ -61,6 +61,9 @@
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/bio.h>
|
||||
@@ -212,10 +215,15 @@ end:
|
||||
BIO_free(bio_err);
|
||||
bio_err = NULL;
|
||||
}
|
||||
exit(!ret);
|
||||
EXIT(!ret);
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int cb_exit(int ec)
|
||||
{
|
||||
EXIT(ec);
|
||||
}
|
||||
|
||||
static void MS_CALLBACK dsa_cb(int p, int n, void *arg)
|
||||
{
|
||||
char c='*';
|
||||
@@ -231,7 +239,7 @@ static void MS_CALLBACK dsa_cb(int p, int n, void *arg)
|
||||
if (!ok && (p == 0) && (num > 1))
|
||||
{
|
||||
BIO_printf((BIO *)arg,"error in dsatest\n");
|
||||
exit(1);
|
||||
cb_exit(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -128,7 +128,7 @@ void EC_GROUP_clear_free(EC_GROUP *group)
|
||||
|
||||
EC_GROUP_clear_free_extra_data(group);
|
||||
|
||||
memset(group, 0, sizeof *group);
|
||||
OPENSSL_cleanse(group, sizeof *group);
|
||||
OPENSSL_free(group);
|
||||
}
|
||||
|
||||
@@ -357,7 +357,7 @@ void EC_POINT_clear_free(EC_POINT *point)
|
||||
point->meth->point_clear_finish(point);
|
||||
else if (point->meth != NULL && point->meth->point_finish != 0)
|
||||
point->meth->point_finish(point);
|
||||
memset(point, 0, sizeof *point);
|
||||
OPENSSL_cleanse(point, sizeof *point);
|
||||
OPENSSL_free(point);
|
||||
}
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ int main(int argc, char * argv[]) { puts("Elliptic curves are disabled."); retur
|
||||
fflush(stdout); \
|
||||
fprintf(stderr, "%s:%d: ABORT\n", __FILE__, __LINE__); \
|
||||
ERR_print_errors_fp(stderr); \
|
||||
exit(1); \
|
||||
EXIT(1); \
|
||||
} while (0)
|
||||
|
||||
#if 0
|
||||
|
||||
@@ -79,6 +79,21 @@
|
||||
/* #define TEST_ENG_OPENSSL_SHA_P_UPDATE */
|
||||
/* #define TEST_ENG_OPENSSL_SHA_P_FINAL */
|
||||
|
||||
/* Now check what of those algorithms are actually enabled */
|
||||
#ifdef OPENSSL_NO_RC4
|
||||
#undef TEST_ENG_OPENSSL_RC4
|
||||
#undef TEST_ENG_OPENSSL_RC4_OTHERS
|
||||
#undef TEST_ENG_OPENSSL_RC4_P_INIT
|
||||
#undef TEST_ENG_OPENSSL_RC4_P_CIPHER
|
||||
#endif
|
||||
#if defined(OPENSSL_NO_SHA) || defined(OPENSSL_NO_SHA0) || defined(OPENSSL_NO_SHA1)
|
||||
#undef TEST_ENG_OPENSSL_SHA
|
||||
#undef TEST_ENG_OPENSSL_SHA_OTHERS
|
||||
#undef TEST_ENG_OPENSSL_SHA_P_INIT
|
||||
#undef TEST_ENG_OPENSSL_SHA_P_UPDATE
|
||||
#undef TEST_ENG_OPENSSL_SHA_P_FINAL
|
||||
#endif
|
||||
|
||||
#ifdef TEST_ENG_OPENSSL_RC4
|
||||
static int openssl_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
|
||||
const int **nids, int nid);
|
||||
|
||||
@@ -58,9 +58,6 @@
|
||||
|
||||
#include <openssl/e_os2.h>
|
||||
#include <stdio.h>
|
||||
#ifdef OPENSSL_SYS_WINCE
|
||||
#include <stdlib_extras.h>
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <openssl/buffer.h>
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
@@ -717,7 +717,7 @@ static int cca_rsa_verify(int type, const unsigned char *m, unsigned int m_len,
|
||||
|
||||
if (type == NID_sha1 || type == NID_md5)
|
||||
{
|
||||
memset(hashBuffer, 0, keyLength+1);
|
||||
OPENSSL_cleanse(hashBuffer, keyLength+1);
|
||||
OPENSSL_free(hashBuffer);
|
||||
}
|
||||
|
||||
@@ -840,7 +840,7 @@ static int cca_rsa_sign(int type, const unsigned char *m, unsigned int m_len,
|
||||
|
||||
if (type == NID_sha1 || type == NID_md5)
|
||||
{
|
||||
memset(hashBuffer, 0, keyLength+1);
|
||||
OPENSSL_cleanse(hashBuffer, keyLength+1);
|
||||
OPENSSL_free(hashBuffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,18 @@ ENGINE_load_cryptodev(void)
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#if OpenBSD < 200112
|
||||
|
||||
void
|
||||
ENGINE_load_cryptodev(void)
|
||||
{
|
||||
/* This is a NOP unless we have release 3.0 (released december 2001) */
|
||||
return;
|
||||
}
|
||||
|
||||
#else /* OpenBSD 3.0 or above */
|
||||
|
||||
#include <crypto/cryptodev.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <errno.h>
|
||||
@@ -1114,4 +1126,5 @@ ENGINE_load_cryptodev(void)
|
||||
ERR_clear_error();
|
||||
}
|
||||
|
||||
#endif /* OpenBSD 3.0 or above */
|
||||
#endif /* __OpenBSD__ */
|
||||
|
||||
@@ -560,15 +560,23 @@ static int hwcrhk_init(ENGINE *e)
|
||||
|
||||
/* Check if the application decided to support dynamic locks,
|
||||
and if it does, use them. */
|
||||
if (disable_mutex_callbacks == 0 &&
|
||||
CRYPTO_get_dynlock_create_callback() != NULL &&
|
||||
CRYPTO_get_dynlock_lock_callback() != NULL &&
|
||||
CRYPTO_get_dynlock_destroy_callback() != NULL)
|
||||
if (disable_mutex_callbacks == 0)
|
||||
{
|
||||
hwcrhk_globals.mutex_init = hwcrhk_mutex_init;
|
||||
hwcrhk_globals.mutex_acquire = hwcrhk_mutex_lock;
|
||||
hwcrhk_globals.mutex_release = hwcrhk_mutex_unlock;
|
||||
hwcrhk_globals.mutex_destroy = hwcrhk_mutex_destroy;
|
||||
if (CRYPTO_get_dynlock_create_callback() != NULL &&
|
||||
CRYPTO_get_dynlock_lock_callback() != NULL &&
|
||||
CRYPTO_get_dynlock_destroy_callback() != NULL)
|
||||
{
|
||||
hwcrhk_globals.mutex_init = hwcrhk_mutex_init;
|
||||
hwcrhk_globals.mutex_acquire = hwcrhk_mutex_lock;
|
||||
hwcrhk_globals.mutex_release = hwcrhk_mutex_unlock;
|
||||
hwcrhk_globals.mutex_destroy = hwcrhk_mutex_destroy;
|
||||
}
|
||||
else if (CRYPTO_get_locking_callback() != NULL)
|
||||
{
|
||||
HWCRHKerr(HWCRHK_F_HWCRHK_INIT,HWCRHK_R_LOCKING_MISSING);
|
||||
ERR_add_error_data(1,"You HAVE to add dynamic locking callbacks via CRYPTO_set_dynlock_{create,lock,destroy}_callback()");
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
/* Try and get a context - if not, we may have a DSO but no
|
||||
@@ -1022,7 +1030,7 @@ static int hwcrhk_rsa_mod_exp(BIGNUM *r, const BIGNUM *I, RSA *rsa)
|
||||
|
||||
/* Perform the operation */
|
||||
ret = p_hwcrhk_ModExpCRT(hwcrhk_context, m_a, m_p, m_q,
|
||||
m_dmp1, m_dmq1, m_iqmp, &m_r, NULL);
|
||||
m_dmp1, m_dmq1, m_iqmp, &m_r, &rmsg);
|
||||
|
||||
/* Convert the response */
|
||||
r->top = m_r.size / sizeof(BN_ULONG);
|
||||
@@ -1320,7 +1328,7 @@ static void hwcrhk_log_message(void *logstr, const char *message)
|
||||
lstream=*(BIO **)logstr;
|
||||
if (lstream)
|
||||
{
|
||||
BIO_write(lstream, message, strlen(message));
|
||||
BIO_printf(lstream, "%s\n", message);
|
||||
}
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_BIO);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* hw_ncipher_err.c */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1999 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1999-2002 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
|
||||
@@ -86,6 +86,7 @@ static ERR_STRING_DATA HWCRHK_str_reasons[]=
|
||||
{HWCRHK_R_CHIL_ERROR ,"chil error"},
|
||||
{HWCRHK_R_CTRL_COMMAND_NOT_IMPLEMENTED ,"ctrl command not implemented"},
|
||||
{HWCRHK_R_DSO_FAILURE ,"dso failure"},
|
||||
{HWCRHK_R_LOCKING_MISSING ,"locking missing"},
|
||||
{HWCRHK_R_MISSING_KEY_COMPONENTS ,"missing key components"},
|
||||
{HWCRHK_R_NOT_INITIALISED ,"not initialised"},
|
||||
{HWCRHK_R_NOT_LOADED ,"not loaded"},
|
||||
|
||||
@@ -84,6 +84,7 @@ static void ERR_HWCRHK_error(int function, int reason, char *file, int line);
|
||||
#define HWCRHK_R_CHIL_ERROR 102
|
||||
#define HWCRHK_R_CTRL_COMMAND_NOT_IMPLEMENTED 103
|
||||
#define HWCRHK_R_DSO_FAILURE 104
|
||||
#define HWCRHK_R_LOCKING_MISSING 114
|
||||
#define HWCRHK_R_MISSING_KEY_COMPONENTS 105
|
||||
#define HWCRHK_R_NOT_INITIALISED 106
|
||||
#define HWCRHK_R_NOT_LOADED 107
|
||||
|
||||
@@ -907,7 +907,7 @@ static int surewarehk_rsa_priv_dec(int flen,const unsigned char *from,unsigned c
|
||||
err:
|
||||
if (buf)
|
||||
{
|
||||
memset(buf,0,tlen);
|
||||
OPENSSL_cleanse(buf,tlen);
|
||||
OPENSSL_free(buf);
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -132,7 +132,7 @@ static int enc_free(BIO *a)
|
||||
if (a == NULL) return(0);
|
||||
b=(BIO_ENC_CTX *)a->ptr;
|
||||
EVP_CIPHER_CTX_cleanup(&(b->cipher));
|
||||
memset(a->ptr,0,sizeof(BIO_ENC_CTX));
|
||||
OPENSSL_cleanse(a->ptr,sizeof(BIO_ENC_CTX));
|
||||
OPENSSL_free(a->ptr);
|
||||
a->ptr=NULL;
|
||||
a->init=0;
|
||||
|
||||
@@ -211,7 +211,7 @@ static int ok_free(BIO *a)
|
||||
{
|
||||
if (a == NULL) return(0);
|
||||
EVP_MD_CTX_cleanup(&((BIO_OK_CTX *)a->ptr)->md);
|
||||
memset(a->ptr,0,sizeof(BIO_OK_CTX));
|
||||
OPENSSL_cleanse(a->ptr,sizeof(BIO_OK_CTX));
|
||||
OPENSSL_free(a->ptr);
|
||||
a->ptr=NULL;
|
||||
a->init=0;
|
||||
|
||||
@@ -301,7 +301,7 @@ int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx)
|
||||
ctx->digest->cleanup(ctx);
|
||||
if (ctx->digest && ctx->digest->ctx_size && ctx->md_data)
|
||||
{
|
||||
memset(ctx->md_data,0,ctx->digest->ctx_size);
|
||||
OPENSSL_cleanse(ctx->md_data,ctx->digest->ctx_size);
|
||||
OPENSSL_free(ctx->md_data);
|
||||
}
|
||||
if(ctx->engine)
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/err.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <openssl/aes.h>
|
||||
#include "evp_locl.h"
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ static int idea_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
||||
|
||||
idea_set_encrypt_key(key,&tmp);
|
||||
idea_set_decrypt_key(&tmp,ctx->cipher_data);
|
||||
memset((unsigned char *)&tmp,0,
|
||||
OPENSSL_cleanse((unsigned char *)&tmp,
|
||||
sizeof(IDEA_KEY_SCHEDULE));
|
||||
}
|
||||
return 1;
|
||||
|
||||
@@ -454,9 +454,9 @@ int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c)
|
||||
{
|
||||
if(c->cipher->cleanup && !c->cipher->cleanup(c))
|
||||
return 0;
|
||||
/* Zero cipher context data */
|
||||
/* Cleanse cipher context data */
|
||||
if (c->cipher_data)
|
||||
memset(c->cipher_data, 0, c->cipher->ctx_size);
|
||||
OPENSSL_cleanse(c->cipher_data, c->cipher->ctx_size);
|
||||
}
|
||||
if (c->cipher_data)
|
||||
OPENSSL_free(c->cipher_data);
|
||||
|
||||
@@ -103,7 +103,7 @@ int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify)
|
||||
buff,0,(len>=BUFSIZ)?BUFSIZ-1:len,buf);
|
||||
ret = UI_process(ui);
|
||||
UI_free(ui);
|
||||
memset(buff,0,BUFSIZ);
|
||||
OPENSSL_cleanse(buff,BUFSIZ);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
|
||||
if ((nkey == 0) && (niv == 0)) break;
|
||||
}
|
||||
EVP_MD_CTX_cleanup(&c);
|
||||
memset(&(md_buf[0]),0,EVP_MAX_MD_SIZE);
|
||||
OPENSSL_cleanse(&(md_buf[0]),EVP_MAX_MD_SIZE);
|
||||
return(type->key_len);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,9 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/engine.h>
|
||||
#include <openssl/conf.h>
|
||||
@@ -78,7 +81,7 @@ static int convert(unsigned char *s)
|
||||
if(!s[1])
|
||||
{
|
||||
fprintf(stderr,"Odd number of hex digits!");
|
||||
exit(4);
|
||||
EXIT(4);
|
||||
}
|
||||
sscanf((char *)s,"%2x",&n);
|
||||
*d=(unsigned char)n;
|
||||
@@ -120,6 +123,11 @@ static char *sstrsep(char **string, const char *delim)
|
||||
static unsigned char *ustrsep(char **p,const char *sep)
|
||||
{ return (unsigned char *)sstrsep(p,sep); }
|
||||
|
||||
static int test1_exit(int ec)
|
||||
{
|
||||
EXIT(ec);
|
||||
}
|
||||
|
||||
static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
|
||||
const unsigned char *iv,int in,
|
||||
const unsigned char *plaintext,int pn,
|
||||
@@ -142,7 +150,7 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
|
||||
{
|
||||
fprintf(stderr,"Key length doesn't match, got %d expected %d\n",kn,
|
||||
c->key_len);
|
||||
exit(5);
|
||||
test1_exit(5);
|
||||
}
|
||||
EVP_CIPHER_CTX_init(&ctx);
|
||||
if (encdec != 0)
|
||||
@@ -150,26 +158,26 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
|
||||
if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv))
|
||||
{
|
||||
fprintf(stderr,"EncryptInit failed\n");
|
||||
exit(10);
|
||||
test1_exit(10);
|
||||
}
|
||||
EVP_CIPHER_CTX_set_padding(&ctx,0);
|
||||
|
||||
if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn))
|
||||
{
|
||||
fprintf(stderr,"Encrypt failed\n");
|
||||
exit(6);
|
||||
test1_exit(6);
|
||||
}
|
||||
if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2))
|
||||
{
|
||||
fprintf(stderr,"EncryptFinal failed\n");
|
||||
exit(7);
|
||||
test1_exit(7);
|
||||
}
|
||||
|
||||
if(outl+outl2 != cn)
|
||||
{
|
||||
fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n",
|
||||
outl+outl2,cn);
|
||||
exit(8);
|
||||
test1_exit(8);
|
||||
}
|
||||
|
||||
if(memcmp(out,ciphertext,cn))
|
||||
@@ -177,7 +185,7 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
|
||||
fprintf(stderr,"Ciphertext mismatch\n");
|
||||
hexdump(stderr,"Got",out,cn);
|
||||
hexdump(stderr,"Expected",ciphertext,cn);
|
||||
exit(9);
|
||||
test1_exit(9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,26 +194,26 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
|
||||
if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv))
|
||||
{
|
||||
fprintf(stderr,"DecryptInit failed\n");
|
||||
exit(11);
|
||||
test1_exit(11);
|
||||
}
|
||||
EVP_CIPHER_CTX_set_padding(&ctx,0);
|
||||
|
||||
if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn))
|
||||
{
|
||||
fprintf(stderr,"Decrypt failed\n");
|
||||
exit(6);
|
||||
test1_exit(6);
|
||||
}
|
||||
if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2))
|
||||
{
|
||||
fprintf(stderr,"DecryptFinal failed\n");
|
||||
exit(7);
|
||||
test1_exit(7);
|
||||
}
|
||||
|
||||
if(outl+outl2 != cn)
|
||||
{
|
||||
fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",
|
||||
outl+outl2,cn);
|
||||
exit(8);
|
||||
test1_exit(8);
|
||||
}
|
||||
|
||||
if(memcmp(out,plaintext,cn))
|
||||
@@ -213,7 +221,7 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
|
||||
fprintf(stderr,"Plaintext mismatch\n");
|
||||
hexdump(stderr,"Got",out,cn);
|
||||
hexdump(stderr,"Expected",plaintext,cn);
|
||||
exit(9);
|
||||
test1_exit(9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,24 +268,24 @@ static int test_digest(const char *digest,
|
||||
if(!EVP_DigestInit_ex(&ctx,d, NULL))
|
||||
{
|
||||
fprintf(stderr,"DigestInit failed\n");
|
||||
exit(100);
|
||||
EXIT(100);
|
||||
}
|
||||
if(!EVP_DigestUpdate(&ctx,plaintext,pn))
|
||||
{
|
||||
fprintf(stderr,"DigestUpdate failed\n");
|
||||
exit(101);
|
||||
EXIT(101);
|
||||
}
|
||||
if(!EVP_DigestFinal_ex(&ctx,md,&mdn))
|
||||
{
|
||||
fprintf(stderr,"DigestFinal failed\n");
|
||||
exit(101);
|
||||
EXIT(101);
|
||||
}
|
||||
EVP_MD_CTX_cleanup(&ctx);
|
||||
|
||||
if(mdn != cn)
|
||||
{
|
||||
fprintf(stderr,"Digest length mismatch, got %d expected %d\n",mdn,cn);
|
||||
exit(102);
|
||||
EXIT(102);
|
||||
}
|
||||
|
||||
if(memcmp(md,ciphertext,cn))
|
||||
@@ -285,7 +293,7 @@ static int test_digest(const char *digest,
|
||||
fprintf(stderr,"Digest mismatch\n");
|
||||
hexdump(stderr,"Got",md,cn);
|
||||
hexdump(stderr,"Expected",ciphertext,cn);
|
||||
exit(103);
|
||||
EXIT(103);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
@@ -303,7 +311,7 @@ int main(int argc,char **argv)
|
||||
if(argc != 2)
|
||||
{
|
||||
fprintf(stderr,"%s <test file>\n",argv[0]);
|
||||
exit(1);
|
||||
EXIT(1);
|
||||
}
|
||||
CRYPTO_malloc_debug_init();
|
||||
CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
|
||||
@@ -315,7 +323,7 @@ int main(int argc,char **argv)
|
||||
if(!f)
|
||||
{
|
||||
perror(szTestFile);
|
||||
exit(2);
|
||||
EXIT(2);
|
||||
}
|
||||
|
||||
/* Load up the software EVP_CIPHER and EVP_MD definitions */
|
||||
@@ -371,7 +379,7 @@ int main(int argc,char **argv)
|
||||
&& !test_digest(cipher,plaintext,pn,ciphertext,cn))
|
||||
{
|
||||
fprintf(stderr,"Can't find %s\n",cipher);
|
||||
exit(3);
|
||||
EXIT(3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -146,8 +146,8 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
|
||||
memcpy(iv, md_tmp + (16 - EVP_CIPHER_iv_length(cipher)),
|
||||
EVP_CIPHER_iv_length(cipher));
|
||||
EVP_CipherInit_ex(cctx, cipher, NULL, key, iv, en_de);
|
||||
memset(md_tmp, 0, EVP_MAX_MD_SIZE);
|
||||
memset(key, 0, EVP_MAX_KEY_LENGTH);
|
||||
memset(iv, 0, EVP_MAX_IV_LENGTH);
|
||||
OPENSSL_cleanse(md_tmp, EVP_MAX_MD_SIZE);
|
||||
OPENSSL_cleanse(key, EVP_MAX_KEY_LENGTH);
|
||||
OPENSSL_cleanse(iv, EVP_MAX_IV_LENGTH);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
|
||||
iter = ASN1_INTEGER_get(kdf->iter);
|
||||
PKCS5_PBKDF2_HMAC_SHA1(pass, passlen, salt, saltlen, iter, keylen, key);
|
||||
EVP_CipherInit_ex(ctx, NULL, NULL, key, NULL, en_de);
|
||||
memset(key, 0, keylen);
|
||||
OPENSSL_cleanse(key, keylen);
|
||||
PBKDF2PARAM_free(kdf);
|
||||
return 1;
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, unsigned char *ek,
|
||||
|
||||
ret=1;
|
||||
err:
|
||||
if (key != NULL) memset(key,0,size);
|
||||
if (key != NULL) OPENSSL_cleanse(key,size);
|
||||
OPENSSL_free(key);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#ifdef OPENSSL_NO_HMAC
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -68,12 +70,15 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
#else
|
||||
#include <openssl/hmac.h>
|
||||
#ifndef OPENSSL_NO_MD5
|
||||
#include <openssl/md5.h>
|
||||
#endif
|
||||
|
||||
#ifdef CHARSET_EBCDIC
|
||||
#include <openssl/ebcdic.h>
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_MD5
|
||||
static struct test_st
|
||||
{
|
||||
unsigned char key[16];
|
||||
@@ -113,13 +118,20 @@ static struct test_st
|
||||
(unsigned char *)"56be34521d144c88dbb8c733f0e8b3f6",
|
||||
},
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static char *pt(unsigned char *md);
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int i,err=0;
|
||||
#ifndef OPENSSL_NO_MD5
|
||||
int i;
|
||||
char *p;
|
||||
#endif
|
||||
int err=0;
|
||||
|
||||
#ifdef OPENSSL_NO_MD5
|
||||
printf("test skipped: MD5 disabled\n");
|
||||
#else
|
||||
|
||||
#ifdef CHARSET_EBCDIC
|
||||
ebcdic2ascii(test[0].data, test[0].data, test[0].data_len);
|
||||
@@ -144,10 +156,12 @@ int main(int argc, char *argv[])
|
||||
else
|
||||
printf("test %d ok\n",i);
|
||||
}
|
||||
exit(err);
|
||||
#endif /* OPENSSL_NO_MD5 */
|
||||
EXIT(err);
|
||||
return(0);
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_MD5
|
||||
static char *pt(unsigned char *md)
|
||||
{
|
||||
int i;
|
||||
@@ -158,3 +172,4 @@ static char *pt(unsigned char *md)
|
||||
return(buf);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#ifdef OPENSSL_NO_IDEA
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -167,7 +169,7 @@ int main(int argc, char *argv[])
|
||||
else
|
||||
printf("ok\n");
|
||||
|
||||
exit(err);
|
||||
EXIT(err);
|
||||
return(err);
|
||||
}
|
||||
|
||||
|
||||
@@ -79,8 +79,11 @@ clean:
|
||||
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
|
||||
md2_dgst.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h
|
||||
md2_dgst.o: ../../include/openssl/opensslv.h md2_dgst.c
|
||||
md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
|
||||
md2_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
md2_dgst.o: md2_dgst.c
|
||||
md2_one.o: ../../e_os.h ../../include/openssl/bio.h
|
||||
md2_one.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
|
||||
md2_one.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
#include <string.h>
|
||||
#include <openssl/md2.h>
|
||||
#include <openssl/opensslv.h>
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
const char *MD2_version="MD2" OPENSSL_VERSION_PTEXT;
|
||||
|
||||
@@ -196,7 +197,7 @@ static void md2_block(MD2_CTX *c, const unsigned char *d)
|
||||
t=(t+i)&0xff;
|
||||
}
|
||||
memcpy(sp1,state,16*sizeof(MD2_INT));
|
||||
memset(state,0,48*sizeof(MD2_INT));
|
||||
OPENSSL_cleanse(state,48*sizeof(MD2_INT));
|
||||
}
|
||||
|
||||
int MD2_Final(unsigned char *md, MD2_CTX *c)
|
||||
|
||||
@@ -88,6 +88,6 @@ unsigned char *MD2(const unsigned char *d, unsigned long n, unsigned char *md)
|
||||
}
|
||||
#endif
|
||||
MD2_Final(md,&c);
|
||||
memset(&c,0,sizeof(c)); /* Security consideration */
|
||||
OPENSSL_cleanse(&c,sizeof(c)); /* Security consideration */
|
||||
return(md);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,8 @@
|
||||
#include <string.h>
|
||||
#include <openssl/md2.h>
|
||||
|
||||
#include "../e_os.h"
|
||||
|
||||
#ifdef OPENSSL_NO_MD2
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -122,7 +124,7 @@ int main(int argc, char *argv[])
|
||||
R++;
|
||||
P++;
|
||||
}
|
||||
exit(err);
|
||||
EXIT(err);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* crypto/md32_common.h */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1999 The OpenSSL Project. All rights reserved.
|
||||
* Copyright (c) 1999-2002 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
|
||||
@@ -456,7 +456,10 @@ int HASH_UPDATE (HASH_CTX *c, const void *data_, unsigned long len)
|
||||
{
|
||||
ew=(c->num>>2);
|
||||
ec=(c->num&0x03);
|
||||
l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l;
|
||||
if (sc)
|
||||
l=p[sw];
|
||||
HOST_p_c2l(data,l,sc);
|
||||
p[sw++]=l;
|
||||
for (; sw < ew; sw++)
|
||||
{
|
||||
HOST_c2l(data,l); p[sw]=l;
|
||||
@@ -603,7 +606,7 @@ int HASH_FINAL (unsigned char *md, HASH_CTX *c)
|
||||
c->num=0;
|
||||
/* clear stuff, HASH_BLOCK may be leaving some stuff on the stack
|
||||
* but I'm not worried :-)
|
||||
memset((void *)c,0,sizeof(HASH_CTX));
|
||||
OPENSSL_cleanse((void *)c,sizeof(HASH_CTX));
|
||||
*/
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -84,5 +84,8 @@ md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md4.h
|
||||
md4_dgst.o: ../../include/openssl/opensslconf.h
|
||||
md4_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md4_dgst.c
|
||||
md4_dgst.o: md4_locl.h
|
||||
md4_one.o: ../../include/openssl/e_os2.h ../../include/openssl/md4.h
|
||||
md4_one.o: ../../include/openssl/opensslconf.h md4_one.c
|
||||
md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
|
||||
md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h
|
||||
md4_one.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
|
||||
md4_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
|
||||
md4_one.o: md4_one.c
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user