From 9dd2b2a94092a4a467f9a5fde6973b4df872fd6b Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Mon, 21 Feb 2000 03:01:23 +0000 Subject: [PATCH] Blowfish docs. --- doc/crypto/blowfish.pod | 104 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 doc/crypto/blowfish.pod diff --git a/doc/crypto/blowfish.pod b/doc/crypto/blowfish.pod new file mode 100644 index 0000000000..962ba24bf8 --- /dev/null +++ b/doc/crypto/blowfish.pod @@ -0,0 +1,104 @@ +=pod + +=head1 NAME + +blowfish, BF_set_key, BF_encrypt, BF_decrypt, BF_ecb_encrypt, BF_cbc_encrypt, +BF_cfb64_encrypt, BF_ofb64_encrypt, BF_options - Blowfish encryption + +=head1 SYNOPSIS + + #include + + void BF_set_key(BF_KEY *key, int len, const unsigned char *data); + + void BF_encrypt(BF_LONG *data,const BF_KEY *key); + void BF_decrypt(BF_LONG *data,const BF_KEY *key); + + void BF_ecb_encrypt(const unsigned char *in,unsigned char *out,BF_KEY *key, + int enc); + void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + BF_KEY *schedule, unsigned char *ivec, int enc); + void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, long length, + BF_KEY *schedule, unsigned char *ivec, int *num, int enc); + void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, long length, + BF_KEY *schedule, unsigned char *ivec, int *num); + const char *BF_options(void); + +=head1 DESCRIPTION + +This library implements the Blowfish cipher, which is invented and described +by Counterpane (see http://www.counterpane.com/blowfish/ ). + +Blowfish is a block cipher that operates on 64 bit (8 byte) blocks of data. +It uses a variable size key, but typically, 128 bit (16 byte) keys are +a considered good for strong encryption. Blowfish can be used in the same +modes as DES (see L). Blowfish is currently one +of the faster block ciphers. It is quite a bit faster than DES, and much +faster than IDEA or RC2. + +Blowfish consists of a key setup phase and the actual encryption or decryption +phase. + +BF_set_key() sets up the B B using the B bytes long key +at B. + +BF_encrypt() and BF_decrypt() are the lowest level functions for Blowfish +encryption. They encrypt/decrypt the first 64 bits of the vector pointed by +B, using the key B. These functions should not be used unless you +implement 'modes' of Blowfish. + +BF_ecb_encrypt() is the basic Blowfish encryption and decryption function. +It encrypts or decrypts the first 64 bits of B using the key B, +putting the result in B. B decides if encryption (B) +or decryption (B) shall be performed. The vector pointed at by +B and B must be 64 bits in length, no less. If they are larger, +everything after the first 64 bits is ignored. + +The mode functions BF_cbc_encrypt(), BF_cfb64_encrypt() and BF_ofb64_encrypt() +all operate on variable length data. They all take an initialisation vector +B which must be initially filled with zeros, but then just need to be +passed along into the next call of the same function for the same message. +BF_cbc_encrypt() operates of data that is a multiple of 8 bytes long, while +BF_cfb64_encrypt() and BF_ofb64_encrypt() are used to encrypt an variable +number of bytes (the amount does not have to be an exact multiple of 8). The +purpose of the latter two is to simulate stream ciphers, and therefore, they +need the parameter B, which is a pointer to an integer where the current +offset in B is stored between calls. This integer must be initialised +to zero when B is filled with zeros. + +BF_cbc_encrypt() is the Cipher Block Chaining function for Blowfish. It +encrypts or decrypts the 64 bits chunks of B using the key B, +putting the result in B. B decides if encryption (BF_ENCRYPT) or +decryption (BF_DECRYPT) shall be performed. B must point at an 8 byte +long initialisation vector, which must be initially filled with zeros. + +BF_cfb64_encrypt() is the CFB mode for Blowfish with 64 bit feedback. +It encrypts or decrypts the bytes in B using the key B, +putting the result in B. B decides if encryption (B) +or decryption (B) shall be performed. B must point at an +8 byte long initialisation vector, which must be initially filled with zeros. +B must point at an integer which must be initially zero. + +BF_ofb64_encrypt() is the OFB mode for Blowfish with 64 bit feedback. +It uses the same parameters as BF_cfb64_encrypt(), which must be initialised +the same way. + +=head1 RETURN VALUES + +None of the functions presented here return any value. + +=head1 NOTE + +Applications should use the higher level functions EVP_DigestInit(3) etc. +instead of calling the blowfish functions directly. + +=head1 SEE ALSO + +L + +=head1 HISTORY + +The Blowfish functions are available in all versions of SSLeay and OpenSSL. + +=cut + -- 2.34.1