crypl110.txt
29117288bcb1c9f84e02f1191f7b17e89a162374f39b55b46810cf2afe0bc5f5
From xs4all!Leiden.NL.net!sun4nl!EU.net!howland.reston.ans.net!vixen.cso.uiuc.edu!news.uoregon.edu!waikato!auckland.ac.nz!news Fri May 10 17:27:21 1996
Path: xs4all!Leiden.NL.net!sun4nl!EU.net!howland.reston.ans.net!vixen.cso.uiuc.edu!news.uoregon.edu!waikato!auckland.ac.nz!news
From: pgut001@cs.auckland.ac.nz (Peter Gutmann)
Newsgroups: sci.crypt,alt.security.pgp,comp.security.misc
Subject: Free encryption library for Unix/DOS/Windows released
Followup-To: sci.crypt
Date: 9 May 1996 14:22:37 GMT
Organization: University of Auckland
Lines: 45
Sender: pgut001@cs.auckland.ac.nz (Peter Gutmann)
Message-ID: <4msv3d$gph@net.auckland.ac.nz>
NNTP-Posting-Host: kiwi.cs.auckland.ac.nz
X-Newsreader: NN version 6.5.0 #4 (NOV)
Xref: xs4all sci.crypt:32991 alt.security.pgp:51273 comp.security.misc:23715
Version 1.10 of the cryptlib encryption library is now available as
ftp://garbo.uwasa.fi/pc/security/crypl110.zip. This encryption library
provides a universal interface to a number of conventional and public-key
encryption algorithms. The library currently supports encryption algorithms
MDC/SHS (CFB mode), DES, triple DES, IDEA, RC2, RC5, SAFER, SAFER-SK,
Blowfish, and Blowfish-SK (all in ECB, CBC, CFB, OFB, and PCBC modes) and RC4,
and hash algorithms MD4, MD5, and SHA. All routines are accessed through a
single standardised interface with parameters such as algorithm, mode and key
size being selectable by the user. The library is supplied as source code for
Unix, DOS, Windows, and the Amiga, and also as 16- and 32-bit Windows DLL's.
The design goal for the library was to create an easy-to-use, standardised
interface to a number of popular encryption algorithms. Like the standard C
file I/O libraries which work with FILE objects, this library works with an
"encryption context" of type CRYPT_CONTEXT. To encrypt data, you create an
encryption context, load a user key into it, en/decrypt data, and destroy it
when you've finished. This concept lends itself to implementation either as a
C++ class or as C routines.
The library implements a security perimeter around the encryption functions,
with encryption contexts consisting of an arbitrary handle referring to
(hidden) data held within the library. No outside access to state variables
or keying information is possible, provided the underlying OS provides some
form of memory protection.
The library has been written to be as idiot-proof as possible. On
initialization it performs extensive self-testing against test data from
encryption standards documents, and the API's check each parameter and
function call for errors before any actions are performed, with error
reporting down to the level of individual parameters.
The library API serves as an interface to a range of plug-in encryption
modules which allow encryption algorithms to be added in a fairly transparent
manner. The standardised API allows any of the algorithms and modes supported
by the library to be used with a minimum of coding effort. As such the main
function of the library is to provide a standard, portable, easy-to-use
interface between the underlying encryption routines and the user software.
All code is plain ANSI C, with no machine or OS-specific functions or calls
being used. The library is free for any use (including commercial) with a few
minor restrictions as explained in the docs.
Peter.