3 #ifndef BLOWFISH__H_INCLUDED
4 #define BLOWFISH__H_INCLUDED
6 #define BLOWFISH_BLOCKBYTES 8
7 #define BLOWFISH_MAXKEYBYTES 56
9 #define BLOWFISH__PSIZE BLOWFISH__N+2
11 typedef uint32 blowfish__p
[BLOWFISH__PSIZE
];
12 typedef uint32 blowfish__s
[4][256];
14 struct blowfish_expandedkey
{
19 void blowfish_loadkey(struct blowfish_expandedkey
*ek
,
20 const uint8
*key
, int keybytes
);
21 void blowfish_encrypt(const struct blowfish_expandedkey
*ek
,
22 const uint8 plain
[BLOWFISH_BLOCKBYTES
],
23 uint8 cipher
[BLOWFISH_BLOCKBYTES
]);
24 void blowfish_decrypt(const struct blowfish_expandedkey
*ek
,
25 const uint8 cipher
[BLOWFISH_BLOCKBYTES
],
26 uint8 plain
[BLOWFISH_BLOCKBYTES
]);
28 struct blowfish_cbc_state
{
29 struct blowfish_expandedkey ek
;
30 uint32 chainl
, chainr
;
33 void blowfish_cbc_setiv(struct blowfish_cbc_state
*cs
,
34 const uint8 iv
[BLOWFISH_BLOCKBYTES
]);
35 void blowfish_cbc_encrypt(struct blowfish_cbc_state
*cs
,
36 const uint8 plain
[BLOWFISH_BLOCKBYTES
],
37 uint8 cipher
[BLOWFISH_BLOCKBYTES
]);
38 void blowfish_cbc_decrypt(struct blowfish_cbc_state
*cs
,
39 const uint8 cipher
[BLOWFISH_BLOCKBYTES
],
40 uint8 plain
[BLOWFISH_BLOCKBYTES
]);