1 /* $OpenBSD: rijndael.h,v 1.11 2005/05/25 05:47:53 markus Exp $ */ 2 /* modified for use by dyncrypt */ 3 4 // $Id$ 5 6 /** 7 * rijndael-alg-fst.h 8 * 9 * @version 3.0 (December 2000) 10 * 11 * Optimised ANSI C code for the Rijndael cipher (now AES) 12 * 13 * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> 14 * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> 15 * @author Paulo Barreto <paulo.barreto@terra.com.br> 16 * 17 * This code is hereby placed in the public domain. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS 20 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE 23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 26 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 28 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 29 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 // $Log$ 33 34 #ifndef __RIJNDAEL_H 35 #define __RIJNDAEL_H 36 37 #define MAXKC (256/32) 38 #define MAXKB (256/8) 39 #define MAXNR 14 40 41 typedef u_int8_t u8; 42 typedef u_int16_t u16; 43 typedef u_int32_t u32; 44 45 /* The structure for key information */ 46 typedef struct { 47 int enc_only; /* context contains only encrypt schedule */ 48 int Nr; /* key-length-dependent number of rounds */ 49 u32 ek[4*(MAXNR + 1)]; /* encrypt key schedule */ 50 u32 dk[4*(MAXNR + 1)]; /* decrypt key schedule */ 51 } rijndael_ctx; 52 53 int rijndael_set_key(rijndael_ctx *, u_char *, int); 54 int rijndael_set_key_enc_only(rijndael_ctx *, u_char *, int); 55 void rijndael_decrypt(rijndael_ctx *, u_char *, u_char *); 56 void rijndael_encrypt(rijndael_ctx *, u_char *, u_char *); 57 58 int rijndaelKeySetupEnc(unsigned int [], const unsigned char [], int); 59 int rijndaelKeySetupDec(unsigned int [], const unsigned char [], int); 60 void rijndaelEncrypt(const unsigned int [], int, const unsigned char [], 61 unsigned char []); 62 63 /* Additional definitions for dyncrypt */ 64 typedef rijndael_ctx aes_context; 65 #define aes_set_key rijndael_set_key 66 #define aes_encrypt rijndael_encrypt 67 #define aes_decrypt rijndael_decrypt 68 69 #endif /* __RIJNDAEL_H */ 70