This directory contains some simple example applications for the Botan crypto library. If you want to see something a bit more complicated, check out the stuff in the checks/ directory. Both it and the files in this directory are in the public domain, and you may do with them however you please. The makefile assumes that you built the library with g++; you'll have to change it if this assumption proves incorrect. Some of these examples will not build on all configurations of the library, particularly 'bzip', 'encrypt', 'decrypt', and 'hash_fd', as they require various extensions. The examples are fairly small (50-150 lines). And that's with argument processing, I/O, error checking, etc (which counts for 40% or more of most of them). This is partially to make them easy to understand, and partially because I'm lazy. For the most part, the examples cover the stuff a 'regular' application might need. Feel free to contribute new examples. You too can gain fame and fortune by writing example apps for obscure libraries! The examples are: * X.509 examples -------- ca: A (very) simple CA application x509info: Prints some information about an X.509 certificate pkcs10: Generates a PKCS #10 certificate request for a 1024 bit RSA key self_sig: Generates a self-signed X.509v3 certificate with a 1024 bit RSA key -------- * RSA examples (also uses X.509, PKCS #8, block ciphers, MACs, PBKDF algorithms) -------- rsa_kgen: Generate an RSA key, encrypt the private key with a passphrase, output the keys to a pair of files rsa_enc: Take a public key (generated by rsa_kgen) and encrypt a file using CAST-128, MAC it with HMAC(SHA-1) rsa_dec: Decrypt a file encrypted by rsa_enc * DSA examples (also uses X.509, PKCS #8) -------- dsa_kgen: Generates a DSA key, encrypts the private key with a passphrase and stores it in PKCS #8 format. dsa_sign: Produce a DSA signature for a file. Uses SHA-1 dsa_ver: Verify a message signed with dsa_sign * Encryption examples -------- encrypt: Encrypt a file in CBC mode with a block cipher of your choice. Adds a MAC for authentication, and compresses the plaintext with Zlib. decrypt: Decrypt the result of 'encrypt' xor_ciph: Shows how to add a new algorithm from application code * Hash function examples (also shows different methods of using Pipe) -------- hash: Print digests of files, using any chosen hash function hash_fd: Same as hash, except that it uses Unix file I/O. Requires the pipe_unixfd extension hasher: Print MD5, SHA-1, and RIPEMD-160 digests of files hasher2: Same as hasher, just shows an alternate method stack: A demonstration of some more advanced Pipe functionality. Prints MD5 hashes * Misc examples -------- base64: Simple base64 encoding/decoding tool bzip: Bzip2 compression/decompression.