summaryrefslogtreecommitdiff
path: root/beecrypt
diff options
context:
space:
mode:
authorjbj <devnull@localhost>2003-05-28 17:18:56 +0000
committerjbj <devnull@localhost>2003-05-28 17:18:56 +0000
commitb8772cff2dffaacf21fa91c07c1968f39bee3d59 (patch)
treef62e0c07310e1806fecf52d6ffe0dc4549a56be5 /beecrypt
parenta3a09742fe81e7875d9c3727c7fa3beaecec0ed7 (diff)
downloadlibrpm-tizen-b8772cff2dffaacf21fa91c07c1968f39bee3d59.tar.gz
librpm-tizen-b8772cff2dffaacf21fa91c07c1968f39bee3d59.tar.bz2
librpm-tizen-b8772cff2dffaacf21fa91c07c1968f39bee3d59.zip
Spliddles and diddles.
CVS patchset: 6877 CVS date: 2003/05/28 17:18:56
Diffstat (limited to 'beecrypt')
-rw-r--r--beecrypt/BUGS3
-rw-r--r--beecrypt/Doxyheader60
-rw-r--r--beecrypt/Makefile.am2
-rwxr-xr-xbeecrypt/autogen.sh2
-rw-r--r--beecrypt/beecrypt.c8
-rw-r--r--beecrypt/beecrypt.win.h5
-rw-r--r--beecrypt/configure.ac10
-rw-r--r--beecrypt/docs/Makefile.am2
-rw-r--r--beecrypt/docs/api.html133
-rw-r--r--beecrypt/docs/developing.html13
-rw-r--r--beecrypt/docs/index.html39
-rw-r--r--beecrypt/docs/installing.html139
-rw-r--r--beecrypt/docs/manual.css25
-rw-r--r--beecrypt/docs/using.html11
-rw-r--r--beecrypt/entropy.c2
-rw-r--r--beecrypt/memchunk.c8
-rw-r--r--beecrypt/memchunk.h8
-rw-r--r--beecrypt/mp.c13
-rw-r--r--beecrypt/mpbarrett.c4
-rw-r--r--beecrypt/python/Makefile.am8
-rw-r--r--beecrypt/python/mpw-py.c4
-rw-r--r--beecrypt/python/rng-py.c4
-rw-r--r--beecrypt/tests/Makefile.am1
23 files changed, 76 insertions, 428 deletions
diff --git a/beecrypt/BUGS b/beecrypt/BUGS
index 367149a53..dcdbe0d83 100644
--- a/beecrypt/BUGS
+++ b/beecrypt/BUGS
@@ -6,6 +6,9 @@ Legend:
- Intel icc can't cope with gcj headers; there's also a problem in
combination with aio.h. Solution should be to not test gcj when using
this compiler. As a workaround, you can specify --without-javaglue.
+ - GCC 3.3 produces faster output for Blowfish than the included assembler
+ source; try coding two Blowfish rounds (without swap) in C and compile
+ to assembler to see how GCC accomplishes this.
2.3.0pre:
* bug in certain instances of computing modular inverse.
diff --git a/beecrypt/Doxyheader b/beecrypt/Doxyheader
index b72eae52f..2f3835564 100644
--- a/beecrypt/Doxyheader
+++ b/beecrypt/Doxyheader
@@ -1,5 +1,30 @@
/*! \mainpage BeeCrypt API Documentation.
+BeeCrypt started its life when the need for a portable and fast cryptography
+library arose at Virtual Unlimited in 1997. I'm still trying to make it
+faster, easier to use and more portable, in addition to providing better
+documentation.
+
+BeeCrypt is released under the following license:
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Legal disclaimer: note that depending on where you are, the use of
+cryptography may be limited or forbidden by law. Before using this library,
+make sure you are legally entitled to do so.
+
Included in the library are:
- entropy sources for initializing pseudo-random generators
- pseudo-random generators
@@ -17,20 +42,19 @@ Included in the library are:
- HMAC-SHA-1
- HMAC-SHA-256
- multi-precision integer library, with assembler-optimized routines
- for several processors
+ for a range of processors; optimized to perform well on both 32-bit
+ and 64-bit machines
- probabilistic primality testing, with optimized small prime trial
division
- discrete logarithm parameter generation over a prime field
- Diffie-Hellman key agreement
+ - DHAES encryption scheme
- DSA signature scheme
- ElGamal signature scheme (two variants)
- RSA keypair generation with chinese remainder theorem variables
- RSA public & private key operations
- - DHAES encryption scheme
Planned for the near future are:
- - mp64 library for operation on 64-bit computers (and possibly also
- on certain 32-bit platforms)
- compliance with and compliance statements for IEEE P1363
- more blockciphers (Twofish, ... )
- more hash functions (RIPEMD-160, SHA-384, SHA-512, HAVAL, Tiger)
@@ -39,30 +63,20 @@ Planned for the near future are:
- more blockcipher modes (OFB, ... )
The library has been tested on the following platforms:
- - FreeBSD 4.0 alpha
- - FreeBSD 4.0, 4.2 x86
- - includes assembler optimization (tuned for Pentium and higher)
- - HP-UX 11a PA-RISC
- Linux glibc 2.x alpha
- Linux glibc 2.x arm
- - includes assembler optimization
+ - Linux glibc 2.x ia64
+ - Linux glibc 2.x m68k
- Linux glibc 2.x ppc
- - includes assembler optimization for 32-bit PowerPC
- - Linux glibc 2.x sparc
- - includes assembler optimization for Sparc v8
+ - Linux glibc 2.x s390x
+ - Linux glibc 2.x sparc
- Linux glibc 2.x x86
- - includes assembler optimization (tuned for Pentium and higher)
- - Solaris 2.[6789] sparc (with Forte or gnu compilers)
- - includes assembler optimization for Sparc v8, v8plus and v9
- - Solaris 2.[78] x86 (with Forte or gnu compilers)
- - includes assembler optimization (tuned for Pentium and higher)
+ - Solaris 2.[6789] sparc (with Forte or GNU compilers)
+ - Solaris 2.[78] x86 (with Forte or GNU compilers)
- Tru64 Unix alpha
- - Win32 (Windows 95, 98, NT 4.0, 2000)
- - includes assembler optimization (tuned for Pentium and higher)
-
-The library is currently in the process of being ported to:
- - Darwin (apparently Apple has decided to change the PPC assembler format;
- this will need a fix)
+ - Win32 (Windows 95, 98, NT 4.0, 2000, XP)
+ - AIX (shared libraries don't seem to work in 64-bit mode)
+ - Darwin (javaglue doesn't compile yet)
- Cygwin (the DLL builds now, but needs to be tested)
The structures in the library are geared towards exchange with Java
diff --git a/beecrypt/Makefile.am b/beecrypt/Makefile.am
index 9b5eb9fa4..0e58fc335 100644
--- a/beecrypt/Makefile.am
+++ b/beecrypt/Makefile.am
@@ -36,7 +36,7 @@ AUTOMAKE_OPTIONS = gnu check-news no-dependencies
LINT = splint
-SUBDIRS = . docs gas masm python tests $(MAYBE_OPT)
+SUBDIRS = . docs gas masm tests $(MAYBE_OPT)
SUFFIXES = .s
diff --git a/beecrypt/autogen.sh b/beecrypt/autogen.sh
index 13965a12e..71bf7a4c9 100755
--- a/beecrypt/autogen.sh
+++ b/beecrypt/autogen.sh
@@ -38,7 +38,7 @@ if [ X"$@" = X -a "X`uname -s`" = "XLinux" ]; then
mandir=/usr/man
infodir=/usr/info
fi
- CPPFLAGS="-Wall -g" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --infodir=${infodir} --mandir=${mandir} --enable-static "$@"
+ CPPFLAGS="-Wall -g" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --infodir=${infodir} --mandir=${mandir} --enable-static --with-python "$@"
else
./configure "$@"
fi
diff --git a/beecrypt/beecrypt.c b/beecrypt/beecrypt.c
index a10c565c7..68102d6b3 100644
--- a/beecrypt/beecrypt.c
+++ b/beecrypt/beecrypt.c
@@ -48,8 +48,8 @@ static entropySource entropySourceList[] =
{
#if WIN32
{ "wincrypt", entropy_wincrypt },
- { "wavein", entropy_wavein },
{ "console", entropy_console },
+ { "wavein", entropy_wavein },
#else
# if HAVE_DEV_URANDOM
{ "urandom", entropy_dev_urandom },
@@ -394,7 +394,6 @@ int hashFunctionContextUpdateMP(hashFunctionContext* ctxt, const mpnumber* n)
if (tmp == (byte*) 0)
return -1;
- /*@-nullpass -nullderef -nullptrarith @*/ /* FIX: temp may be NULL */
if (mpmsbset(n->size, n->data))
{
tmp[0] = 0;
@@ -407,7 +406,6 @@ int hashFunctionContextUpdateMP(hashFunctionContext* ctxt, const mpnumber* n)
rc = ctxt->algo->update(ctxt->param, tmp, MP_WORDS_TO_BYTES(n->size));
}
free(tmp);
- /*@=nullpass =nullderef =nullptrarith @*/
return rc;
}
@@ -656,8 +654,9 @@ int keyedHashFunctionContextUpdateMP(keyedHashFunctionContext* ctxt, const mpnum
{
register int rc;
register byte* temp = (byte*) malloc(MP_WORDS_TO_BYTES(n->size)+1);
+ if (temp == (byte*) 0)
+ return -1;
- /*@-nullpass -nullderef -nullptrarith @*/ /* FIX: temp may be NULL */
if (mpmsbset(n->size, n->data))
{
temp[0] = 0;
@@ -670,7 +669,6 @@ int keyedHashFunctionContextUpdateMP(keyedHashFunctionContext* ctxt, const mpnum
rc = ctxt->algo->update(ctxt->param, temp, MP_WORDS_TO_BYTES(n->size));
}
free(temp);
- /*@=nullpass =nullderef =nullptrarith @*/
return rc;
}
diff --git a/beecrypt/beecrypt.win.h b/beecrypt/beecrypt.win.h
index 98d23ef9f..82ca2624e 100644
--- a/beecrypt/beecrypt.win.h
+++ b/beecrypt/beecrypt.win.h
@@ -132,9 +132,6 @@ typedef unsigned __int64 uint64_t;
#endif
-#define MP_WBITS 32
-
-typedef float float4;
-typedef double double8;
+#define MP_WBITS 32U
#endif
diff --git a/beecrypt/configure.ac b/beecrypt/configure.ac
index d26408cc7..dda6b301a 100644
--- a/beecrypt/configure.ac
+++ b/beecrypt/configure.ac
@@ -85,6 +85,9 @@ AC_ARG_WITH(arch,[ --with-arch optimize for specific architecture (
i[[3456]]86 | \
pentium | pentium-mmx | pentiumpro | pentium[[234]] | \
athlon | athlon-tbird | athlon-4 | athlon-xp | athlon-mp)
+ if test "$ac_with_cpu" != yes; then
+ bc_target_cpu=$withval
+ fi
;;
esac
;;
@@ -373,8 +376,8 @@ if test "$ac_enable_threads" = yes; then
if test "$ac_cv_header_thread_h" = yes -a "$ac_cv_header_synch_h" = yes; then
AC_SEARCH_LIBS([mutex_lock],[thread],[
AC_DEFINE([ENABLE_THREADS],1)
- bc_include_synch_h="#include <sync.h>"
- bc_typedef_bc_lock_t="typedef pthread_mutex_t bc_lock_t;"
+ bc_include_synch_h="#include <synch.h>"
+ bc_typedef_bc_lock_t="typedef mutex_t bc_lock_t;"
])
elif test "$ac_cv_header_pthread_h" = yes; then
AC_SEARCH_LIBS([pthread_mutex_lock],[pthread],[
@@ -489,7 +492,7 @@ EOF
*)
java_include="$java_home"/../include ;;
esac
- if test -d "$java_include" -a -f "$java_include/jni.h"; then
+ if test -d "$java_include"; then
ac_cv_java_headers=yes
ac_cv_java_include="-I$java_include"
case $target_os in
@@ -718,7 +721,6 @@ AC_CONFIG_FILES([Makefile
gas/Makefile
java/Makefile
masm/Makefile
- mwerks/Makefile
python/Makefile
python/test/Makefile
tests/Makefile])
diff --git a/beecrypt/docs/Makefile.am b/beecrypt/docs/Makefile.am
index 8a50295ed..797486c24 100644
--- a/beecrypt/docs/Makefile.am
+++ b/beecrypt/docs/Makefile.am
@@ -21,5 +21,3 @@
#
AUTOMAKE_OPTIONS = gnu no-dependencies
-
-EXTRA_DIST = index.html installing.html using.html developing.html api.html manual.css
diff --git a/beecrypt/docs/api.html b/beecrypt/docs/api.html
deleted file mode 100644
index 2a9f24216..000000000
--- a/beecrypt/docs/api.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<HTML>
-<HEAD>
-<LINK REL=StyleSheet HREF="manual.css" TYPE="text/css">
-<TITLE>The BeeCrypt API</TITLE>
-</HEAD>
-<BODY>
-<DL>
-<DT><B>Entropy Sources</B></DT>
-<DD>
-<BR>
-<HR>
-</DD>
-<DT><B>Random Generators</B></DT>
-<DD>
-<P>The following structure is used to hold information describing a
-specific random generator implementation:
-<BR><A NAME="randomGenerator"></A><PRE><CODE CLASS=c>
-typedef struct
-{
- const char* name;
- const unsigned int paramsize;
- const randomGeneratorSetup setup;
- const randomGeneratorSeed seed;
- const randomGeneratorNext next;
- const randomGeneratorCleanup cleanup;
-} randomGenerator;
-</CODE></PRE>
-<P>The following structure is used to work with a specific random
-generator implementation:
-<BR><A NAME="randomGeneratorContext"></A><PRE><CODE CLASS=c>
-typedef struct
-{
- const randomGenerator* rng;
- randomGeneratorparam* param;
-} randomGeneratorContext;
-</CODE></PRE>
-<P>The following functions will operate on this structure:
-<DL>
-<DT><A NAME="randomGeneratorContextInit"></A><CODE CLASS=c>
-void randomGeneratorContextInit(<A HREF="#randomGeneratorContext">randomGeneratorContext</A>* ctxt, const <A HREF="#randomGenerator">randomGenerator</A>* rng);
-</CODE></DT>
-<DD>This function initializes <CODE>ctxt</CODE> by allocating and
-initializing parameters appropriate for <CODE>rng</CODE>.
-</DD>
-<DT><A NAME="randomGeneratorContextFree"></A><CODE CLASS=c>
-void randomGeneratorContextFree(<A HREF="#randomGeneratorContext">randomGeneratorContext</A>* ctxt);
-</CODE></DT>
-<DD>This function cleans up <CODE>ctxt</CODE> and frees its
-allocated parameters.
-</DL>
-<BR>
-<HR>
-</DD>
-<DT><B>Hash Functions</B></DT>
-<DD>
-<BR>
-<HR>
-</DD>
-<DT><B>Keyed Hash Functions</B></DT>
-<DD>
-<BR>
-<HR>
-</DD>
-<DT><B>Block Ciphers</B></DT>
-<DD>
-<BR>
-<HR>
-</DD>
-<DT><B>Multi-Precision Integer routines</B></DT>
-<DD>
-<P>The following structure is used to hold a multi-precision integer:
-<BR><A NAME="mp32number"></A><PRE><CODE CLASS=c>
-typedef struct
-{
- uint32 size;
- uint32* data;
-} mp32number;
-</CODE></PRE>
-<P>The following structure is used for barrett modular reduction operations on multi-precision integers:
-<BR><A NAME="mp32barrett"></A><PRE><CODE CLASS=c>
-typedef struct
-{
- uint32 size;
- uint32* modl;
- uint32* mu;
-} mp32barrett;
-</CODE></PRE>
-<BR>
-<HR>
-</DD>
-<DT><B>Discrete Logarithm Public Key Primitives</B></DT>
-<DD>
-<P>Discrete logarithm operations can be performed in a variety of fields. This API implements discrete logarithms over a prime field, conform with IEEE P1363.
-<P>You can find the exact mathematics in:
-<BLOCKQUOTE>
-<EM>"Handbook of Applied Cryptography"</EM><BR>
-Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone<BR>
-CRC Press
-</BLOCKQUOTE>
-<P>The domain parameters are defined by a prime P, a prime factor Q of (P-1), and a group generator G.
-<P>The following struct is used to hold the discrete logarithm domain parameters:
-<BR><A NAME="dldp_p"></A><PRE><CODE CLASS=c>
-typedef struct
-{
- <A HREF="#mp32barrett">mp32barrett</A> p;
- <A HREF="#mp32barrett">mp32barrett</A> q;
- <A HREF="#mp32number">mp32number</A> r;
- <A HREF="#mp32number">mp32number</A> g;
- <A HREF="#mp32barrett">mp32barrett</A> n;
-} dldp_p;
-</CODE></PRE>
-<P>The struct holds more than the three domain parameters required by IEEE P1363. Some discrete logarithm operations call for a reduction modulo (P-1). Hence we've defined N as (P-1). R is the cofactor of (P-1), so that P-1=N=Q*R, where P and Q are (probable) primes.
-<P>If you save the domain parameters, you don't need to save N, and R, since they can be trivially recomputed.
-<P>The following functions will operate on this structure:
-<DL>
-<DT><A NAME="dldp_pInit"></A><CODE CLASS=c>
-void <A NAME="dldp_pInit">dldp_pInit</A>(<A HREF="#dldp_p">dldp_p</A>* domain);
-</CODE></DT>
-<DT><A NAME="dldp_pFree"></A><CODE>
-void <A NAME="dldp_pFree">dldp_pFree</A>(<A HREF="#dldp_p">dldp_p</A>* domain);
-</CODE></DT>
-<DT><A NAME="dldp_pCopy"></A><CODE>
-void <A NAME="dldp_pCopy">dldp_pCopy</A>(<A HREF="#dldp_p">dldp_p</A>* dest, const <A HREF="#dldp_p">dldp_p</A>* source);
-</CODE></DT>
-</DL>
-<BR>
-<HR>
-</DD>
-</DL>
-</BODY>
-</HTML>
diff --git a/beecrypt/docs/developing.html b/beecrypt/docs/developing.html
deleted file mode 100644
index 06edb4e09..000000000
--- a/beecrypt/docs/developing.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<HTML>
-<HEAD>
-<LINK REL=StyleSheet HREF="manual.css" TYPE="text/css">
-<TITLE>Developing Applications with BeeCrypt</TITLE>
-</HEAD>
-<BODY>
-To be completed.
-<P><A HREF="api.html">API</A>
-<P><A HREF="examples.html">Examples</A>
-</BODY>
-</HTML>
diff --git a/beecrypt/docs/index.html b/beecrypt/docs/index.html
deleted file mode 100644
index a2c4a0f19..000000000
--- a/beecrypt/docs/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<HTML>
-<HEAD>
-<LINK REL=StyleSheet HREF="manual.css" TYPE="text/css">
-<TITLE>The BeeCrypt Cryptography Library</TITLE>
-</HEAD>
-<BODY>
-<H1>The BeeCrypt Cryptography Library</H1>
-<P>Copyright &copy; 1997, 1998, 1999, 2000, 2001 Virtual Unlimited, B.V.<BR>
-<P>Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or any
-later version published by the Free Software Foundation;
-with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-Texts.
-<P>For the specifics of this license, see file 'COPYING.DOC', included in this
-distribution.
-<H2>About BeeCrypt</H2>
-<P>BeeCrypt is an open source cryptography library that contains highly
-optimized C and assembler implementations of many well-known algorithms
-including Blowfish, MD5, SHA-1, SHA-256, Diffie-Hellman, and ElGamal.
-<P>The goal of the library is to offer a wide range of low-level cryptographic
-primitives.
-<P>BeeCrypt is licensed under the GNU Lesser Public General License (LGPL),
-which means it can be used for free in both open and closed source commercial
-products.
-<BR>
-<H2>About the documentation</H2>
-<P>This is the first attempt to write a manual for the BeeCrypt Cryptography
-Library. Eventually this will become a full-blown manual, with all the jingles
-and bells.
-<H2>Contents</H2>
-<OL>
-<LI><A HREF="installing.html">Installing BeeCrypt</A>
-<LI><A HREF="using.html">Using BeeCrypt</A>
-<LI><A HREF="developing.html">Developing with BeeCrypt</A>
-</OL>
-</BODY>
-</HTML>
diff --git a/beecrypt/docs/installing.html b/beecrypt/docs/installing.html
deleted file mode 100644
index 6cd21b2b1..000000000
--- a/beecrypt/docs/installing.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<HTML>
-<HEAD>
-<TITLE>Installing the BeeCrypt Cryptography Library</TITLE>
-</HEAD>
-<BODY>
-<H2>Installing the BeeCrypt Cryptography Library</H2>
-<P>When it comes to installing BeeCrypt you basically have the following
-alternatives:
-<OL TYPE="a">
-<LI><B>Installing from the source code - aka roll your own</B></LI>
-<UL TYPE="disc">
-<LI>Getting the source code</LI>
-<P>The primary download location for the source tarball is through
-<A HREF="http://www.virtualunlimited.com/download/index.html#beecrypt">
-Virtual Unlimited's download page</A>. Alternatively you can download from
-<A HREF="http://sourceforge.net/projects/beecrypt">SourceForge</A>.
-<LI>Unpacking</LI>
-<P>Once you have the source tarball, unpack it with <ACRONYM>GNU</ACRONYM>
-tar (if you have it); on Windows you can use
-<A HREF="http://www.rarsoft.com/">WinRAR</A>.
-<LI>Configuring, building and installing</LI>
-<P>The library can be built on a variety of platforms, and we will illustrate
-the two most common ways:
-<P><B>Using the <ACRONYM>GNU</ACRONYM> toolchain</B>
-<P>The source tarball contains a configure script produced with
-<ACRONYM>GNU</ACRONYM> autoconf;
-on most platforms you will want to use this.
-<P>As with most configure scripts, there are a few options you can use:
-<DL COMPACT>
-<DT><CODE>--prefix</CODE></DT>
-<DD>Use this option to indicate where you want the shared library and header
-files installed. By default this is set to <CODE>/usr/local</CODE>. Another
-suggested location is the <CODE>/usr</CODE> directory.</DD>
-<DT><CODE>--target</CODE></DT>
-<DD>Use this option to indicate that you want the library built for a
-processor other than the one which is normally detected. Some examples of
-useful combinations are:
-<DL COMPACT>
-<DT><CODE>--target=sparcv8plus-sun-solaris2.8</CODE></DT>
-<DT><CODE>--target=i686-pc-freebsd4.3</CODE></DT>
-</DL>
-<DT><CODE>--enable-debug</CODE></DT>
-<DD>will build the library with debug symbols, and without assembler
-optimization, and instead just use plain C code.
-<DT><CODE>--disable-optimized</CODE></DT>
-<DD>will build the library without any processor-specific assembler
-optimization, and instead just use plain C code.</DD>
-<DT><CODE>--without-javaglue</CODE></DT>
-<DD>will build the library without code which allows BeeCrypt for Java
-to employ the native code in the library (automatic if you don't
-have a JDK installed).</DD>
-<DT><CODE>--disable-threads</CODE></DT>
-<DD>will build the library without thread-safe code; useful on platforms
-such as NetBSD (automatic if configure can't find threads).</DD>
-<DT><CODE>--disable-aio</CODE></DT>
-<DD>will build the library without asynchronous I/O on entropy devices
-(automatic if configure can't find POSIX-compliant asynchronous I/O
-routines).</DD>
-<DT><CODE>--with-mtmalloc</CODE></DT>
-<DD>will build the library with multi-thread optimized malloc routines
-(available on Solaris 8). There is a tradeoff in speed versus the amount
-of memory allocated.</DD>
-</DL>
-<P>To build, run: <XMP>make</XMP>
-<P>To install, run: <XMP>make install</XMP>
-</DL>
-<P><B>Using Visual C++ for Win32</B>
-<P>Microsoft Visual C++ is currently the preferred platform for compiling
-the library, as it seems faster and more stable than other platforms.
-<P>The prerequisites for compiling are:
-<DL COMPACT>
-<DT>Visual C++ 6.0</DT>
-<DD>At the time of writing, it is recommended to install the latest service
-pack for Visual Studio. You can find it through Microsoft's
-<A HREF="http://www.microsoft.com/downloads">download page</A>.</DD>
-<DT>Visual C++ Processor Pack</DT>
-<DD>You will need this package to support compilation of the assembler source
-code. You can download it
-<A HREF="http://msdn.microsoft.com/vstudio/downloads/ppack/default.asp">
-here</A>.</DD>
-</DT>
-<P>Before going on, make sure the following Visual C++ tools are found on
-your PATH: cl.exe, (the compiler), ml.exe (the assembler), link.exe (the
-linker) and nmake.exe (the make utility).
-<P>For the Win32 platform, there is a Makefile.mak for Visual C++ included;
-if you have a Pentium class processor, you won't have to configure the source
-tree.
-<P>This Makefile.mak is set up to compile Java support into the library. If
-you don't have JDK 1.2 or later installed, you'll need to edit this file.
-<P>To build, run: <XMP>nmake /f Makefile.mak</XMP>
-<P><B>Using Metrowerks CodeWarrior for Win32</B>
-<P>The prerequisites for compiling are:
-<DL COMPACT>
-<DT>CodeWarrior Pro</DT>
-<DD>Use version 5 or later.</DD>
-<DT>CodeWarrior Pro Assembler Plugin</DT>
-<DD>This tool isn't officially support by MetroWerks, but it functions fine
-in conjunction with the project file included in the library.</DD>
-</DL>
-<P>To build, start the CodeWarrior IDE, open project file 'beecrypt.mcp'
-and make the BeeCrypt DLL by pressing the <CODE>[F7]</CODE> key.
-<P><B>Installing the BeeCrypt DLL</B>
-<P>To install, either copy file 'beecrypt.dll' to your Windows System
-directory (on Windows 95/98/Millenium), or to your Windows System 32
-directory (on Windows NT/2000).
-<P>If you don't need the BeeCrypt DLL globallly available, copy it into the same
-directory as the application which is going to use it. If you intend to develop
-software with BeeCrypt, you'll need file 'beecrypt.lib'. Either copy it into
-project directory, or point your Makefile or project to it.
-</DL>
-</UL>
-<BR>
-<LI><B>Installing precompiled versions</B></LI>
-<P>Several different flavors of precompiled versions exist.
-<DL COMPACT>
-<DT>Win32 BeeCrypt DLLs</DT>
-<DD>Virtual Unlimited makes precompiled BeeCrypt DLL and LIB files, usable on
-Pentium class processors. If you want to develop your own software with these
-files, you will also need the header files from the source tarball. See
-'Getting the source code'.</DD>
-<DT>RedHat RPMS</DT>
-<DD>Virtual Unlimited makes BeeCrypt RPM packages for every release for at
-least the following platforms: i386, i586, i686, powerpc. As we get access to
-more platforms, we will try to make more RPMS available; until then it
-shouldn't be too hard to get the BeeCrypt SRPM file, install it and compile
-your own RPMS from it. Note that RPM packages originating at Virtual
-Unlimited will contain a signature, which you can verify with
-<A HREF="http://www.virtualunlimited.com/support/beecrypt/gnupg-sigkey.html">
-this key</A>.</DD>
-<DT>Debian Packages</DT>
-<DD>Thanks to Luca Filipozzi there are Debian packages available for BeeCrypt.
-You can find these packages on various Debian mirror sites.</DD>
-</DL>
-<P>
-</OL>
-</BODY>
-</HTML>
diff --git a/beecrypt/docs/manual.css b/beecrypt/docs/manual.css
deleted file mode 100644
index 63f1bb065..000000000
--- a/beecrypt/docs/manual.css
+++ /dev/null
@@ -1,25 +0,0 @@
-BODY { background: #fff }
-
-A:link { color: #0D45AC }
-A:visited { color: #936 }
-
-H1 { font: bold 170% verdana,arial,sans-serif }
-
-H2 {
-font: bold 100% verdana,arial,sans-serif;
-margin-bottom: .5em
-}
-
-H3 {
-font: bold 90% verdana,arial,sans-serif;
-margin-bottom: .5em
-}
-
-A.index { font: normal 70% Verdana,Arial,Helvetica,sans-serif }
-A.index { color: #0D45AC }
-A.index:visited { color: #936 }
-
-.crumbtrail { font: normal 70% Verdana,Arial,Helvetica,sans-serif }
-A.crumblink { color: #0D45AC }
-A.crumblink:visited { color: #936 }
-
diff --git a/beecrypt/docs/using.html b/beecrypt/docs/using.html
deleted file mode 100644
index 9bc2db617..000000000
--- a/beecrypt/docs/using.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<HTML>
-<HEAD>
-<LINK REL=StyleSheet HREF="manual.css" TYPE="text/css">
-<TITLE>Using BeeCrypt</TITLE>
-</HEAD>
-<BODY>
-To be completed.
-</BODY>
-</HTML>
diff --git a/beecrypt/entropy.c b/beecrypt/entropy.c
index a36fec155..5dc3f0ba1 100644
--- a/beecrypt/entropy.c
+++ b/beecrypt/entropy.c
@@ -526,7 +526,7 @@ static int entropy_noise_gather(int fd, int samplesize, int channels, int swap,
temp <<= 1;
temp |= samples[i];
randombits--;
- if (!(randombits & 0x1f))
+ if (!(randombits & 0x7))
*(data++) = temp;
}
}
diff --git a/beecrypt/memchunk.c b/beecrypt/memchunk.c
index 3239ebcee..a6dc139dd 100644
--- a/beecrypt/memchunk.c
+++ b/beecrypt/memchunk.c
@@ -1,12 +1,8 @@
/*
* memchunk.c
*
- * BeeCrypt memory block handling, code
- *
* Copyright (c) 2001 Virtual Unlimited B.V.
*
- * Author: Bob Deblier <bob@virtualunlimited.com>
- *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
@@ -23,6 +19,10 @@
*
*/
+/*!\file memchunk.c
+ * \author Bob Deblier <bob.deblier@pandora.be>
+ */
+
#include "system.h"
#include "memchunk.h"
#include "debug.h"
diff --git a/beecrypt/memchunk.h b/beecrypt/memchunk.h
index 86f668378..75e4f8fd6 100644
--- a/beecrypt/memchunk.h
+++ b/beecrypt/memchunk.h
@@ -1,8 +1,4 @@
/*
- * memchunk.h
- *
- * Beecrypt memory block handling, header
- *
* Copyright (c) 2001 Virtual Unlimited B.V.
*
* This library is free software; you can redistribute it and/or
@@ -20,6 +16,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+/*!\file memchunk.h
+ * \author Bob Deblier <bob.deblier@pandora.be>
+ */
+
#ifndef _MEMCHUNK_H
#define _MEMCHUNK_H
diff --git a/beecrypt/mp.c b/beecrypt/mp.c
index 4fd0571f8..b4685f055 100644
--- a/beecrypt/mp.c
+++ b/beecrypt/mp.c
@@ -395,19 +395,19 @@ void mpand(size_t size, mpw* xdata, const mpw* ydata)
}
#endif
-#ifndef ASM_MPXOR
-void mpxor(size_t size, mpw* xdata, const mpw* ydata)
+#ifndef ASM_MPOR
+void mpor(size_t size, mpw* xdata, const mpw* ydata)
{
while (size--)
- xdata[size] ^= ydata[size];
+ xdata[size] |= ydata[size];
}
#endif
-#ifndef ASM_MPOR
-void mpor(size_t size, mpw* xdata, const mpw* ydata)
+#ifndef ASM_MPXOR
+void mpxor(size_t size, mpw* xdata, const mpw* ydata)
{
while (size--)
- xdata[size] |= ydata[size];
+ xdata[size] ^= ydata[size];
}
#endif
@@ -1016,7 +1016,6 @@ void mprshift(size_t size, mpw* data, size_t count)
#endif
#ifndef ASM_MPRSHIFTLSZ
-/* x must be != 0 */
size_t mprshiftlsz(size_t size, mpw* data)
{
register mpw* slide = data+size-1;
diff --git a/beecrypt/mpbarrett.c b/beecrypt/mpbarrett.c
index 3c18c0595..c83bca221 100644
--- a/beecrypt/mpbarrett.c
+++ b/beecrypt/mpbarrett.c
@@ -134,14 +134,13 @@ void mpbset(mpbarrett* b, size_t size, const mpw* data)
{
mpw* temp = (mpw*) malloc((6*size+4) * sizeof(*temp));
+ assert(temp != NULL);
b->size = size;
b->mu = b->modl+size;
mpcopy(size, b->modl, data);
- /*@-nullpass@*/ /* temp may be NULL */
mpbmu_w(b, temp);
free(temp);
- /*@=nullpass@*/
}
else
{
@@ -340,6 +339,7 @@ void mpbmod_w(const mpbarrett* b, const mpw* data, mpw* result, mpw* wksp)
while (mpgex(b->size+1, wksp, b->size, b->modl))
(void) mpsubx(b->size+1, wksp, b->size, b->modl);
+
mpcopy(b->size, result, wksp+1);
}
diff --git a/beecrypt/python/Makefile.am b/beecrypt/python/Makefile.am
index c72d2477a..50be8434d 100644
--- a/beecrypt/python/Makefile.am
+++ b/beecrypt/python/Makefile.am
@@ -26,14 +26,14 @@ LDADD =
pythondir = $(pylibdir)/site-packages
python_PROGRAMS = _bc.so
-_bc_so_SOURCES = _bc-py.c
+_bc_so_SOURCES =
_bc_so_LDFLAGS = $(mylibs) $(LIBS) -shared -Wl,-soname,_bc.so
noinst_LTLIBRARIES = libbc.la
-libbc_la_SOURCES = mpw-py.c rng-py.c
+libbc_la_SOURCES = _bc-py.c mpw-py.c rng-py.c
-_bc.so$(EXEEXT): $(_bc_so_OBJECTS) $(libbc_la_OBJECTS)
- $(CC) -o $@ $(_bc_so_OBJECTS) $(libbc_la_OBJECTS) $(_bc_so_LDFLAGS)
+_bc.so$(EXEEXT): $(libbc_la_OBJECTS)
+ $(CC) -o $@ $(libbc_la_OBJECTS) $(_bc_so_LDFLAGS)
splint_srcs = _bc-py.c $(libbc_la_sources)
diff --git a/beecrypt/python/mpw-py.c b/beecrypt/python/mpw-py.c
index bd910bffb..651478d60 100644
--- a/beecrypt/python/mpw-py.c
+++ b/beecrypt/python/mpw-py.c
@@ -4,7 +4,7 @@
#define _REENTRANT 1 /* XXX config.h collides with pyconfig.h */
#define _GNU_SOURCE /* XXX pick up stpcpy et al */
-#include "system.h"
+#include "config.h"
#include "Python.h"
#include "longintrepr.h"
@@ -19,8 +19,6 @@
#include "debug-py.c"
-#include "debug.h"
-
#define ABS(_x) ((_x) < 0 ? -(_x) : (_x))
#if !defined(MAX)
#define MAX(x, y) ((x) < (y) ? (y) : (x))
diff --git a/beecrypt/python/rng-py.c b/beecrypt/python/rng-py.c
index a5b2a8608..1a9173dc3 100644
--- a/beecrypt/python/rng-py.c
+++ b/beecrypt/python/rng-py.c
@@ -3,7 +3,7 @@
*/
#define _REENTRANT 1 /* XXX config.h collides with pyconfig.h */
-#include "system.h"
+#include "config.h"
#include "Python.h"
#ifdef __LCLINT__
@@ -15,8 +15,6 @@
#include "debug-py.c"
-#include "debug.h"
-
/*@unchecked@*/
static int _rng_debug = 0;
diff --git a/beecrypt/tests/Makefile.am b/beecrypt/tests/Makefile.am
index 1a23de484..2920abefe 100644
--- a/beecrypt/tests/Makefile.am
+++ b/beecrypt/tests/Makefile.am
@@ -73,3 +73,4 @@ bench: benchme benchhf benchbc
./benchbc AES 128
./benchbc Blowfish 128
./benchbc Blowfish 128
+