BLOWFISH(2)                                           BLOWFISH(2)

     NAME
          setupBFstate, bfCBCencrypt, bfCBCdecrypt, bfECBencrypt,
          bfECBdecrypt  - blowfish encryption

     SYNOPSIS
          #include <u.h>
          #include <libc.h>
          #include <mp.h>
          #include <libsec.h>

          void setupBFstate(BFstate *s, uchar key[], int keybytes,
                          uchar *ivec)

          void bfCBCencrypt(uchar *data, int len, BFstate *s)

          void bfCBCdecrypt(uchar *data, int len, BFstate *s)

          void bfECBencrypt(uchar *data, int len, BFstate *s)

          void bfECBdecrypt(uchar *data, int len, BFstate *s)

     DESCRIPTION
          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 sup-
          ported.

          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 mul-
          tiple of eight bytes as padding is currently unsupported.

     SOURCE
          /sys/src/libsec

     SEE ALSO
          mp(2), aes(2), des(2), dsa(2), elgamal(2), rc4(2), rsa(2),
          sechash(2), prime(2), rand(2)