From: pgut01@cs.auckland.ac.nz (Peter Gutmann) Newsgroups: alt.security,comp.security.misc,sci.crypt Subject: cryptl99.zip Free encryption library for DOS/UNIX/Windows Date: 20 Nov 1995 09:57:45 GMT Organization: University of Auckland Sender: pgut01@cs.auckland.ac.nz (Peter Gutmann) Message-ID: <48pjep$7ge@net.auckland.ac.nz> NNTP-Posting-Host: cs26.cs.auckland.ac.nz X-Newsreader: NN version 6.5.0 #3 (NOV) Xref: news.lut.fi alt.security:31093 comp.security.misc:23319 sci.crypt:42403 [This was announced a few days ago, I've reposted it to a few crypto and security groups for people who don't read the archives groups] File name: ftp://garbo.uwasa.fi/pc/security/cryptl99.zip One line description: Free encryption library for Unix/DOS/Windows This encryption library provides a universal interface to a number of conventional-key encryption algorithms. The library currently supports encryption algorithms and modes of MDC/SHS CFB, DES ECB, CBC, CFB, OFB, PCBC, triple DES ECB, CBC, CFB, OFB, IDEA ECB, CBC, CFB, OFB, RC4, SAFER ECB, CBC, CFB, OFB, and SAFER-SK ECB, CBC, CFB, OFB. All encryption 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, and the Amiga, and as dynamic link libraries for Windows and Windows NT. 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_INFO. 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 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. Peter.