1/* rijndael-alg-ref.h   v2.0   August '99
2 * Reference ANSI C code
3 * authors: Paulo Barreto
4 *          Vincent Rijmen
5 */
6#ifndef __RIJNDAEL_ALG_H
7#define __RIJNDAEL_ALG_H
8
9#ifdef	__APPLE__
10#define MIN_AES_KEY_BITS		128
11#define MID_AES_KEY_BITS		192
12#define MAX_AES_KEY_BITS		256
13#define MAX_AES_KEY_BYTES		(MAX_AES_KEY_BITS / 8)
14
15#define MIN_AES_BLOCK_BITS		128
16#define MID_AES_BLOCK_BITS		192
17#define MAX_AES_BLOCK_BITS		256
18#define MIN_AES_BLOCK_BYTES		(MIN_AES_BLOCK_BITS / 8)
19
20#endif
21#define MAXBC				(MAX_AES_BLOCK_BITS/32)
22#define MAXKC				(MAX_AES_KEY_BITS/32)
23#define MAXROUNDS			14
24
25#ifdef	__cplusplus
26extern "C" {
27#endif
28
29typedef unsigned char		word8;
30typedef unsigned short		word16;
31typedef unsigned long		word32;
32
33
34int _rijndaelKeySched (word8 k[4][MAXKC], int keyBits, int blockBits,
35		word8 rk[MAXROUNDS+1][4][MAXBC]);
36int _rijndaelEncrypt (word8 a[4][MAXBC], int keyBits, int blockBits,
37		word8 rk[MAXROUNDS+1][4][MAXBC]);
38#ifndef	__APPLE__
39int rijndaelEncryptRound (word8 a[4][MAXBC], int keyBits, int blockBits,
40		word8 rk[MAXROUNDS+1][4][MAXBC], int rounds);
41#endif
42int _rijndaelDecrypt (word8 a[4][MAXBC], int keyBits, int blockBits,
43		word8 rk[MAXROUNDS+1][4][MAXBC]);
44#ifndef	__APPLE__
45int rijndaelDecryptRound (word8 a[4][MAXBC], int keyBits, int blockBits,
46		word8 rk[MAXROUNDS+1][4][MAXBC], int rounds);
47#endif
48
49#ifdef	__cplusplus
50}
51#endif
52
53#endif /* __RIJNDAEL_ALG_H */
54