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