1122509Sume/*	$KAME: rijndael.h,v 1.6 2003/08/28 08:36:32 itojun Exp $	*/
2122509Sume/*	$FreeBSD$	*/
367957Skris
4122509Sume/**
5122509Sume * rijndael-alg-fst.h
6122509Sume *
7122509Sume * @version 3.0 (December 2000)
8122509Sume *
9122509Sume * Optimised ANSI C code for the Rijndael cipher (now AES)
10122509Sume *
11122509Sume * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
12122509Sume * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
13122509Sume * @author Paulo Barreto <paulo.barreto@terra.com.br>
14122509Sume *
15122509Sume * This code is hereby placed in the public domain.
16122509Sume *
17122509Sume * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
18122509Sume * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19122509Sume * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20122509Sume * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
21122509Sume * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22122509Sume * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23122509Sume * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24122509Sume * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25122509Sume * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26122509Sume * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
27122509Sume * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28122509Sume */
29122509Sume
30122509Sume#ifndef __RIJNDAEL_H
31122509Sume#define	__RIJNDAEL_H
32122509Sume
33143420Sume#define RIJNDAEL_MAXKC	(256/32)
34143420Sume#define RIJNDAEL_MAXKB	(256/8)
35143420Sume#define RIJNDAEL_MAXNR	14
36122509Sume
37122509Sumetypedef struct {
38122509Sume	int	decrypt;
39122509Sume	int	Nr;		/* key-length-dependent number of rounds */
40122509Sume	uint32_t ek[4 * (RIJNDAEL_MAXNR + 1)];	/* encrypt key schedule */
41122509Sume	uint32_t dk[4 * (RIJNDAEL_MAXNR + 1)];	/* decrypt key schedule */
42122509Sume} rijndael_ctx;
43122509Sume
44122509Sumevoid	rijndael_set_key(rijndael_ctx *, const u_char *, int);
45122509Sumevoid	rijndael_decrypt(const rijndael_ctx *, const u_char *, u_char *);
46122509Sumevoid	rijndael_encrypt(const rijndael_ctx *, const u_char *, u_char *);
47122509Sume
48143420Sumeint	rijndaelKeySetupEnc(u_int32_t [/*4*(Nr+1)*/], const u_int8_t [], int);
49143420Sumeint	rijndaelKeySetupDec(u_int32_t [/*4*(Nr+1)*/], const u_int8_t [], int);
50143420Sumevoid	rijndaelEncrypt(const u_int32_t [/*4*(Nr+1)*/], int,
51143420Sume	const u_int8_t[16], u_int8_t [16]);
52143420Sumevoid	rijndaelDecrypt(const u_int32_t [/*4*(Nr+1)*/], int,
53143420Sume	const u_int8_t [16], u_int8_t [16]);
54143420Sume
55122509Sume#endif /* __RIJNDAEL_H */
56