version 1.2, 2000/12/06 23:05:43 |
version 1.3, 2000/12/09 13:41:52 |
|
|
/* |
#ifndef _RIJNDAEL_H_ |
* rijndael-alg-fst.h v2.4 April '2000 |
#define _RIJNDAEL_H_ |
* rijndael-api-fst.h v2.4 April '2000 |
|
* |
|
* Optimised ANSI C code |
|
* |
|
*/ |
|
|
|
#ifndef RIJNDAEL_H |
/* 1. Standard types for AES cryptography source code */ |
#define RIJNDAEL_H |
|
|
|
#define RIJNDAEL_MAXKC (256/32) |
typedef u_int8_t u1byte; /* an 8 bit unsigned character type */ |
#define RIJNDAEL_MAXROUNDS 14 |
typedef u_int16_t u2byte; /* a 16 bit unsigned integer type */ |
|
typedef u_int32_t u4byte; /* a 32 bit unsigned integer type */ |
|
|
#define RIJNDAEL_ENCRYPT 0 |
typedef int8_t s1byte; /* an 8 bit signed character type */ |
#define RIJNDAEL_DECRYPT 1 |
typedef int16_t s2byte; /* a 16 bit signed integer type */ |
|
typedef int32_t s4byte; /* a 32 bit signed integer type */ |
|
|
typedef struct { |
typedef struct _rijndael_ctx { |
int ROUNDS; /* key-length-dependent number of rounds */ |
u4byte k_len; |
u_int8_t keySched[RIJNDAEL_MAXROUNDS+1][4][4]; |
int decrypt; |
} rijndael_key; |
u4byte e_key[64]; |
|
u4byte d_key[64]; |
|
} rijndael_ctx; |
|
|
int rijndael_encrypt(rijndael_key *key, u_int8_t a[16], u_int8_t b[16]); |
|
int rijndael_decrypt(rijndael_key *key, u_int8_t a[16], u_int8_t b[16]); |
|
int rijndael_makekey(rijndael_key *key, int direction, int keyLen, u_int8_t *keyMaterial); |
|
|
|
#endif |
/* 2. Standard interface for AES cryptographic routines */ |
|
|
|
/* These are all based on 32 bit unsigned values and will therefore */ |
|
/* require endian conversions for big-endian architectures */ |
|
|
|
rijndael_ctx *rijndael_set_key __P((rijndael_ctx *, const u4byte *, u4byte, int)); |
|
void rijndael_encrypt __P((rijndael_ctx *, const u4byte *, u4byte *)); |
|
void rijndael_decrypt __P((rijndael_ctx *, const u4byte *, u4byte *)); |
|
|
|
#endif /* _RIJNDAEL_H_ */ |