1295367Sdes/* $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 */ 28295367Sdes#ifndef _PRIVATE_RIJNDAEL_H 29295367Sdes#define _PRIVATE_RIJNDAEL_H 3076259Sgreen 31295367Sdes#define AES_MAXKEYBITS (256) 32295367Sdes#define AES_MAXKEYBYTES (AES_MAXKEYBITS/8) 33295367Sdes/* for 256-bit keys, fewer for less */ 34295367Sdes#define AES_MAXROUNDS 14 3569587Sgreen 3692555Sdestypedef unsigned char u8; 3792555Sdestypedef unsigned short u16; 3892555Sdestypedef unsigned int u32; 3969587Sgreen 40295367Sdesint rijndaelKeySetupEnc(unsigned int [], const unsigned char [], int); 41295367Sdesvoid rijndaelEncrypt(const unsigned int [], int, const unsigned char [], 42295367Sdes unsigned char []); 43295367Sdes 4492555Sdes/* The structure for key information */ 4592555Sdestypedef struct { 4692555Sdes int decrypt; 47295367Sdes int Nr; /* key-length-dependent number of rounds */ 48295367Sdes u32 ek[4*(AES_MAXROUNDS + 1)]; /* encrypt key schedule */ 49295367Sdes 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 56295367Sdes#endif /* _PRIVATE_RIJNDAEL_H */ 57