[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ANNOUNCE: Crypto++ 2.0

Crypto++ 2.0 has just been released.  Please see the attached readme file 
for a description of Crypto++ and what's new in version 2.0.  More 
details and download instructions can be found on my homepage at 

Wei Dai

Crypto++: a C++ Class Library of Cryptographic Primitives
Version 2.0   2/19/1996

This library includes:

Blowfish, Diamond2, Diamond2 Lite, Sapphire, Luby-Rackoff, MDC, 
various modes (CFB, CBC, OFB, counter), DH,  DSA, ElGamal, LUC, 
Rabin, BlumGoldwasser, elliptic curve cryptosystems, BBS, gzip 
compression, Shamir's secret sharing scheme, Rabin's information 
dispersal scheme, and zero-knowledge prover and verifier for
graph isomorphism.  There are also various miscellanous modules such 
as base 64 coding and 32-bit CRC.

RSA and RC5 are noticeably absent.  I am still talking to RSA
DSI about adding them back into Crypto++.  I hope version 2.1
will include them.

Crypto++ has been compiled and tested with Borland C++ 4.5, MSVC 4.0, 
and G++ 2.7.2 on MS-DOS, Windows NT, and a variety of Unix machines.
You are welcome to use it for any purpose without paying me, but see
license.txt for the fine print.

Some short instructions to compile this library:
(you probably need to modify this to suit your environment)

-- if want to use this library with RSAREF, then

1. get a copy of RSAREF

2. untar or unzip it into a directory below this one

3. type "gcc -c -I. *.c" (in the rsaref/source directory) to compile RSAREF

4. edit config.h (make sure to #define USE_RSAREF)

5. type "g++ -c -Irsaref/source -I. *.cpp" to compile this library

6. type "g++ *.o rsaref/source/*.o -lstdc++ -lm" to link the test driver

7. type "a.out" to run the test driver

-- if you DON'T want to use this library with RSAREF, then

1. edit config.h

2. type "g++ -c *.cpp" to compile this library

3. type "g++ *.o -lstdc++ -lm" to link the test driver

4. type "a.out" to run the test driver

Finally, a note on object ownership:  If a constructor for A takes 
a pointer to an object B (except primitive types such as int and char),
then A owns B and will delete B at A's destruction.  If a constructor 
for A takes a reference to an object B, then the caller retains ownership 
of B and should not destroy it until A no longer needs it.

Good luck, and feel free to e-mail me at [email protected] if you have
any problems.  Also, check http://www.eskimo.com/~weidai/cryptlib.html
for updates and new versions.

Wei Dai


1.0 - First public release.  Withdrawn at the request of RSA DSI.
    - Has a big bug in the RSA key generation code.

1.1 - Removed RSA, RC4, RC5
    - Disabled calls to RSAREF's non-public functions
    - Minor bugs fixed

2.0 - a completely new, faster multiprecision integer class
    - added MD5-MAC, HAVAL, 3-WAY, TEA, SAFER, LUC, Rabin, BlumGoldwasser,
      Elliptic Curve algorithms
    - added the Lucas strong probable primality test
    - ElGamal encryption and signature schemes modified to avoid weaknesses
    - Diamond changed to Diamond2 because of key schedule weakness
    - fixed bug in WAKE key setup
    - SHS class renamed to SHA
    - lots of miscellaneous optimizations