OpenCDK - Open Crypto Development Kit v0.5 ------------------------------------------ This library provides basic parts of the OpenPGP message format. For reference, please read the rfc2440.txt in the doc/ directory. Due to some possible security problems, the library also implements parts of draft-ietf-openpgp-rfc2440bis-08.txt. If you want to exchange messages with earlier PGP version < 7, you should use the compat mode. The aim of the library is *not* to replace any available OpenPGP version. There will be no real support for key management (sign, revoke, alter preferences, ...) and some other parts are only rudimentary available. The main purpose is to handle and understand OpenPGP packets and to use basic operations. For example to encrypt/decrypt or to sign/verify and packet routines. Hint: Due to the fact that Libgcrypt is an excellent library but too bloated for our use, we do not need CBC, counter mode, OID, etc., OpenCDK now includes optimized libs for symmetrical cryptography and message digest routines. These code is copied from Libgcrypt and thus it should be stable and secure. In the doc/ directory, you can find a HTML-API overview. In the tests/ directory, you can find some regression tests and the MinPG example. MinPG is a detailed example how to use the lib and the various functions. Libraries you'll also need for using all parts: libzlib - ftp.uu.net/pub/archiving/zip/zlib/ libgcrypt - ftp.gnupg.org/gcrypt/alpha/libgcrypt Precompiled packages: You can find a bundled version of OpenCDK in the unstable section of Debian. Overview of the code structure: mdlib/ internal message digest library md5.c - message digest 5 algorithm rmd160.c - RIPE-MD 160 algorithm sha1.c - Secure Hash Algorithm v1 cipherlib/ internal cipher library blowfish.c - Blowfish cast5.c - CAST5 (CAST-128) des.c - Data Encryption Standard (3DES) rijndael.c - Rijndael AES twofish.c - Twofish src/ cipher.c - cipher filter (Tag 9, Tag 18) compress.c - compress filter (Tag 8) armor.c - armor filter for OpenPGP armor plaintext.c - literal filter (Tag 10) keydb.c - key database routines pubkey.c - general public key interface keylist.c - linked lists for encryption, signing (Tag 1, Tag 2) keyserver.c - high-level keyserver handling keygen.c - key generation routines encrypt.c - encryption and decryption routines seskey.c - session key handling and pkcs#1 support sign.c - signature routines verify.c - verify routines sig-check.c - low-level signature handling new-packet.c - allocate and free packets read-packet.c - read OpenPGP packets write-packet.c - write OpenPGP packets main.c - memory handling and global stuff misc.c - various code parts which do not fit in any section trustdb.c - high-level trust database handling stream.c - provides an abstraction of a data type, called stream