| .TH BLOWFISH 3 |
| .SH NAME |
| setupBFstate, bfCBCencrypt, bfCBCdecrypt, bfECBencrypt, bfECBdecrypt - blowfish encryption |
| .SH SYNOPSIS |
| .B #include <u.h> |
| .br |
| .B #include <libc.h> |
| .br |
| .B #include <mp.h> |
| .br |
| .B #include <libsec.h> |
| .PP |
| .B |
| void setupBFstate(BFstate *s, uchar key[], int keybytes, |
| .B |
| uchar *ivec) |
| .PP |
| .B |
| void bfCBCencrypt(uchar *data, int len, BFstate *s) |
| .PP |
| .B |
| void bfCBCdecrypt(uchar *data, int len, BFstate *s) |
| .PP |
| .B |
| void bfECBencrypt(uchar *data, int len, BFstate *s) |
| .PP |
| .B |
| void bfECBdecrypt(uchar *data, int len, BFstate *s) |
| .SH DESCRIPTION |
| .PP |
| Blowfish is Bruce Schneier's symmetric block cipher. It supports |
| variable length keys from 32 to 448 bits and has a block size of 64 |
| bits. Both CBC and ECB modes are supported. |
| .PP |
| setupBFstate takes a BFstate structure, a key of at most 56 bytes, the |
| length of the key in bytes, and an initialization vector of 8 bytes |
| (set to all zeroes if argument is nil). The encryption and decryption |
| functions take a BFstate structure, a data buffer, and a length, which |
| must be a multiple of eight bytes as padding is currently unsupported. |
| .SH SOURCE |
| .B \*9/src/libsec |
| .SH SEE ALSO |
| .IR mp (3), |
| .IR aes (3), |
| .IR des (3), |
| .IR dsa (3), |
| .IR elgamal (3), |
| .IR rc4 (3), |
| .IR rsa (3), |
| .IR sechash (3), |
| .IR prime (3), |
| .IR rand (3) |