1294328Sdes/* $OpenBSD: rijndael.h,v 1.14 2014/04/29 15:42:07 markus Exp $ */ 276259Sgreen 392555Sdes/** 492555Sdes * rijndael-alg-fst.h 592555Sdes * 692555Sdes * @version 3.0 (December 2000) 792555Sdes * 892555Sdes * Optimised ANSI C code for the Rijndael cipher (now AES) 992555Sdes * 1092555Sdes * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> 1192555Sdes * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> 1292555Sdes * @author Paulo Barreto <paulo.barreto@terra.com.br> 1392555Sdes * 1492555Sdes * This code is hereby placed in the public domain. 1592555Sdes * 1692555Sdes * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS 1792555Sdes * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1892555Sdes * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1992555Sdes * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE 2092555Sdes * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2192555Sdes * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2292555Sdes * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2392555Sdes * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2492555Sdes * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2592555Sdes * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 2692555Sdes * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2792555Sdes */ 28294328Sdes#ifndef _PRIVATE_RIJNDAEL_H 29294328Sdes#define _PRIVATE_RIJNDAEL_H 3076259Sgreen 31294328Sdes#define AES_MAXKEYBITS (256) 32294328Sdes#define AES_MAXKEYBYTES (AES_MAXKEYBITS/8) 33294328Sdes/* for 256-bit keys, fewer for less */ 34294328Sdes#define AES_MAXROUNDS 14 3569587Sgreen 3692555Sdestypedef unsigned char u8; 3792555Sdestypedef unsigned short u16; 3892555Sdestypedef unsigned int u32; 3969587Sgreen 40294328Sdesint rijndaelKeySetupEnc(unsigned int [], const unsigned char [], int); 41294328Sdesvoid rijndaelEncrypt(const unsigned int [], int, const unsigned char [], 42294328Sdes unsigned char []); 43294328Sdes 4492555Sdes/* The structure for key information */ 4592555Sdestypedef struct { 4692555Sdes int decrypt; 47294328Sdes int Nr; /* key-length-dependent number of rounds */ 48294328Sdes u32 ek[4*(AES_MAXROUNDS + 1)]; /* encrypt key schedule */ 49294328Sdes u32 dk[4*(AES_MAXROUNDS + 1)]; /* decrypt key schedule */ 5069587Sgreen} rijndael_ctx; 5169587Sgreen 5292555Sdesvoid rijndael_set_key(rijndael_ctx *, u_char *, int, int); 5392555Sdesvoid rijndael_decrypt(rijndael_ctx *, u_char *, u_char *); 5492555Sdesvoid rijndael_encrypt(rijndael_ctx *, u_char *, u_char *); 5569587Sgreen 56294328Sdes#endif /* _PRIVATE_RIJNDAEL_H */ 57