9a86e25cf70e6cdbce1fd5d5522daf11bc86a123
[openssl.git] / crypto / rijndael / rijndael-alg-fst.h
1 /*
2  * rijndael-alg-fst.h   v2.4   April '2000
3  *
4  * Optimised ANSI C code
5  *
6  * #define INTERMEDIATE_VALUE_KAT to generate the Intermediate Value Known Answer Test.
7  */
8
9 #ifndef __RIJNDAEL_ALG_FST_H
10 #define __RIJNDAEL_ALG_FST_H
11
12 #define RIJNDAEL_MAXKC          (256/32)
13 #define RIJNDAEL_MAXROUNDS      14
14
15 #ifndef USUAL_TYPES
16 #define USUAL_TYPES
17 typedef unsigned char   byte;
18 typedef unsigned char   word8;  
19 typedef unsigned short  word16; 
20 typedef unsigned int    word32;
21 #endif /* USUAL_TYPES */
22
23 int rijndaelKeySched(const word8 k[RIJNDAEL_MAXKC][4],
24                      word8 rk[RIJNDAEL_MAXROUNDS+1][4][4],
25                      int ROUNDS);
26
27 int rijndaelKeyEncToDec(word8 W[RIJNDAEL_MAXROUNDS+1][4][4], int ROUNDS);
28
29 int rijndaelEncrypt(const word8 a[16],word8 b[16],
30                     word8 rk[RIJNDAEL_MAXROUNDS+1][4][4],
31                     int ROUNDS);
32
33 #ifdef INTERMEDIATE_VALUE_KAT
34 int rijndaelEncryptRound(word8 a[4][4],word8 rk[RIJNDAEL_MAXROUNDS+1][4][4],
35                          int ROUNDS, int rounds);
36 #endif /* INTERMEDIATE_VALUE_KAT */
37
38 int rijndaelDecrypt(const word8 a[16], word8 b[16],
39                     word8 rk[RIJNDAEL_MAXROUNDS+1][4][4], int ROUNDS);
40
41 #ifdef INTERMEDIATE_VALUE_KAT
42 int rijndaelDecryptRound(word8 a[4][4], word8 rk[RIJNDAEL_MAXROUNDS+1][4][4],
43                          int ROUNDS, int rounds);
44 #endif /* INTERMEDIATE_VALUE_KAT */
45
46 #endif /* __RIJNDAEL_ALG_FST_H */