version 1.1.2.6, 2002/03/08 17:04:42 |
version 1.2, 2000/12/06 23:05:43 |
|
|
/* $OpenBSD$ */ |
/* |
|
* rijndael-alg-fst.h v2.4 April '2000 |
/** |
* rijndael-api-fst.h v2.4 April '2000 |
* rijndael-alg-fst.h |
|
* |
* |
* @version 3.0 (December 2000) |
* Optimised ANSI C code |
* |
* |
* 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_H |
|
#define __RIJNDAEL_H |
|
|
|
#define MAXKC (256/32) |
#ifndef RIJNDAEL_H |
#define MAXKB (256/8) |
#define RIJNDAEL_H |
#define MAXNR 14 |
|
|
|
typedef unsigned char u8; |
#define RIJNDAEL_MAXKC (256/32) |
typedef unsigned short u16; |
#define RIJNDAEL_MAXROUNDS 14 |
typedef unsigned int u32; |
|
|
|
/* The structure for key information */ |
#define RIJNDAEL_ENCRYPT 0 |
|
#define RIJNDAEL_DECRYPT 1 |
|
|
typedef struct { |
typedef struct { |
int decrypt; |
int ROUNDS; /* key-length-dependent number of rounds */ |
int Nr; /* key-length-dependent number of rounds */ |
u_int8_t keySched[RIJNDAEL_MAXROUNDS+1][4][4]; |
u32 ek[4*(MAXNR + 1)]; /* encrypt key schedule */ |
} rijndael_key; |
u32 dk[4*(MAXNR + 1)]; /* decrypt key schedule */ |
|
} rijndael_ctx; |
|
|
|
void rijndael_set_key(rijndael_ctx *, u_char *, int, int); |
int rijndael_encrypt(rijndael_key *key, u_int8_t a[16], u_int8_t b[16]); |
void rijndael_decrypt(rijndael_ctx *, u_char *, u_char *); |
int rijndael_decrypt(rijndael_key *key, u_int8_t a[16], u_int8_t b[16]); |
void rijndael_encrypt(rijndael_ctx *, u_char *, u_char *); |
int rijndael_makekey(rijndael_key *key, int direction, int keyLen, u_int8_t *keyMaterial); |
|
|
#endif /* __RIJNDAEL_H */ |
#endif |