11305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/*	$OpenBSD: rijndael.h,v 1.12 2001/12/19 07:18:56 deraadt Exp $ */
21305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
31305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/**
41305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * rijndael-alg-fst.h
51305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood *
61305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * @version 3.0 (December 2000)
71305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood *
81305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * Optimised ANSI C code for the Rijndael cipher (now AES)
91305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood *
101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * @author Paulo Barreto <paulo.barreto@terra.com.br>
131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood *
141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * This code is hereby placed in the public domain.
151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood *
161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood */
281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef __RIJNDAEL_H
291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define __RIJNDAEL_H
301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define MAXKC	(256/32)
321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define MAXKB	(256/8)
331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define MAXNR	14
341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned char	u8;
361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned short	u16;
371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned int	u32;
381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/*  The structure for key information */
401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct {
411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	int	decrypt;
421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	int	Nr;			/* key-length-dependent number of rounds */
431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	u32	ek[4*(MAXNR + 1)];	/* encrypt key schedule */
441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood	u32	dk[4*(MAXNR + 1)];	/* decrypt key schedule */
451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood} rijndael_ctx;
461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid	 rijndael_set_key(rijndael_ctx *, u_char *, int, int);
481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid	 rijndael_decrypt(rijndael_ctx *, u_char *, u_char *);
491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodvoid	 rijndael_encrypt(rijndael_ctx *, u_char *, u_char *);
501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif /* __RIJNDAEL_H */
52