diff options
Diffstat (limited to 'crypto/rijndael/rd_fst.h')
-rwxr-xr-x | crypto/rijndael/rd_fst.h | 67 |
1 files changed, 34 insertions, 33 deletions
diff --git a/crypto/rijndael/rd_fst.h b/crypto/rijndael/rd_fst.h index 9a86e25cf7..f093e5b477 100755 --- a/crypto/rijndael/rd_fst.h +++ b/crypto/rijndael/rd_fst.h @@ -1,46 +1,47 @@ -/* - * rijndael-alg-fst.h v2.4 April '2000 +/** + * rijndael-alg-fst.h * - * Optimised ANSI C code + * @version 3.0 (December 2000) * - * #define INTERMEDIATE_VALUE_KAT to generate the Intermediate Value Known Answer Test. + * Optimised ANSI C code for the Rijndael cipher (now AES) + * + * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> + * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> + * @author Paulo Barreto <paulo.barreto@terra.com.br> + * + * This code is hereby placed in the public domain. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - #ifndef __RIJNDAEL_ALG_FST_H #define __RIJNDAEL_ALG_FST_H -#define RIJNDAEL_MAXKC (256/32) -#define RIJNDAEL_MAXROUNDS 14 - -#ifndef USUAL_TYPES -#define USUAL_TYPES -typedef unsigned char byte; -typedef unsigned char word8; -typedef unsigned short word16; -typedef unsigned int word32; -#endif /* USUAL_TYPES */ +#define MAXKC (256/32) +#define MAXKB (256/8) +#define MAXNR 14 -int rijndaelKeySched(const word8 k[RIJNDAEL_MAXKC][4], - word8 rk[RIJNDAEL_MAXROUNDS+1][4][4], - int ROUNDS); - -int rijndaelKeyEncToDec(word8 W[RIJNDAEL_MAXROUNDS+1][4][4], int ROUNDS); - -int rijndaelEncrypt(const word8 a[16],word8 b[16], - word8 rk[RIJNDAEL_MAXROUNDS+1][4][4], - int ROUNDS); - -#ifdef INTERMEDIATE_VALUE_KAT -int rijndaelEncryptRound(word8 a[4][4],word8 rk[RIJNDAEL_MAXROUNDS+1][4][4], - int ROUNDS, int rounds); -#endif /* INTERMEDIATE_VALUE_KAT */ +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; -int rijndaelDecrypt(const word8 a[16], word8 b[16], - word8 rk[RIJNDAEL_MAXROUNDS+1][4][4], int ROUNDS); +int rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits); +int rijndaelKeySetupDec(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits); +void rijndaelEncrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 pt[16], u8 ct[16]); +void rijndaelDecrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 ct[16], u8 pt[16]); #ifdef INTERMEDIATE_VALUE_KAT -int rijndaelDecryptRound(word8 a[4][4], word8 rk[RIJNDAEL_MAXROUNDS+1][4][4], - int ROUNDS, int rounds); +void rijndaelEncryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds); +void rijndaelDecryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds); #endif /* INTERMEDIATE_VALUE_KAT */ #endif /* __RIJNDAEL_ALG_FST_H */ |