PGPlib is a library that lets you generate (and manipulate) PGP packets without having to run PGP. In particular there is code to generate and understand the following types of PGP packets: - Data can be signed with a private key - Data can be encrypted with a public key - Data encrypted with your public key can be decrypted - You can verify signatures on public keys and on buffers (files) - Convential encrypted (IDEA with Zimmermann's context sensitive feedback). The library can both read (decrypt) and write (encrypt) convential packets (in PGP format) - Armor. You can (de)armor a buffer or a file into a buffer or a file - UserID packets are read and written in a variety of formats - Literal with filename, mode, etc. You can create literate packages from files, or from buffers, and create files from literate packets - Keys can be obtained from a database (which is provided) or by parsing keyrings. Keys can be kept in buffers or on files - You can maintain a PGP public-key database (I use this library to maintain a database with ~40.000 keys). There is code to use DBM as supplied from Berkeley. A copy of DBM is included for your convinience In general, PGPlib operates on buffers in order for you to use it in your applications. I have made a small program that will (de)armor anything, a parser to parse PGP files (including decryption and so on), a shell to manipulate a keydatabase, a keyserver to run on top of such a database, a program to verify signatures on keys and/or files, a program to split keyrings in smaller parts and a program that will sign files for you. You will find all these (and many more) in the PGPlib-1.1/applications/ directory. None of these uses PGP as they are linked with PGPlib, which provides all the functionality that is needed. I believe that all parts of the library is tested against PGP by the script PGPlib-1.1/applications/test.sh. You need to edit it in order to make it run (to ensure that you read my warnings, sorry about this). What is not there for you ========================= - Sufficient documentation. I have written this library because I need it. In order to make life less hard for my students, I will have to provide some documentation. Possibly even on-line. However, quite a few manual pages are included in the PGPlib-1.1/man/ directory.