version 1.1.4.3, 2001/03/21 18:52:58 |
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 |
|
* |
|
* Optimised ANSI C code |
|
* |
|
*/ |
|
|
/* This is an independent implementation of the encryption algorithm: */ |
#ifndef RIJNDAEL_H |
/* */ |
#define RIJNDAEL_H |
/* RIJNDAEL by Joan Daemen and Vincent Rijmen */ |
|
/* */ |
|
/* which is a candidate algorithm in the Advanced Encryption Standard */ |
|
/* programme of the US National Institute of Standards and Technology. */ |
|
/* */ |
|
/* Copyright in this implementation is held by Dr B R Gladman but I */ |
|
/* hereby give permission for its free direct or derivative use subject */ |
|
/* to acknowledgment of its origin and compliance with any conditions */ |
|
/* that the originators of the algorithm place on its exploitation. */ |
|
/* */ |
|
/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999 */ |
|
|
|
#ifndef _RIJNDAEL_H_ |
#define RIJNDAEL_MAXKC (256/32) |
#define _RIJNDAEL_H_ |
#define RIJNDAEL_MAXROUNDS 14 |
|
|
/* 1. Standard types for AES cryptography source code */ |
#define RIJNDAEL_ENCRYPT 0 |
|
#define RIJNDAEL_DECRYPT 1 |
|
|
typedef u_int8_t u1byte; /* an 8 bit unsigned character type */ |
typedef struct { |
typedef u_int16_t u2byte; /* a 16 bit unsigned integer type */ |
int ROUNDS; /* key-length-dependent number of rounds */ |
typedef u_int32_t u4byte; /* a 32 bit unsigned integer type */ |
u_int8_t keySched[RIJNDAEL_MAXROUNDS+1][4][4]; |
|
} rijndael_key; |
|
|
typedef int8_t s1byte; /* an 8 bit signed character type */ |
int rijndael_encrypt(rijndael_key *key, u_int8_t a[16], u_int8_t b[16]); |
typedef int16_t s2byte; /* a 16 bit signed integer type */ |
int rijndael_decrypt(rijndael_key *key, u_int8_t a[16], u_int8_t b[16]); |
typedef int32_t s4byte; /* a 32 bit signed integer type */ |
int rijndael_makekey(rijndael_key *key, int direction, int keyLen, u_int8_t *keyMaterial); |
|
|
typedef struct _rijndael_ctx { |
#endif |
u4byte k_len; |
|
int decrypt; |
|
u4byte e_key[64]; |
|
u4byte d_key[64]; |
|
} rijndael_ctx; |
|
|
|
|
|
/* 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_ */ |
|