version 1.9, 2001/07/30 16:23:30 |
version 1.10, 2001/08/23 11:31:59 |
|
|
/* $OpenBSD$ */ |
/** |
|
* rijndael-alg-fst.h |
|
* |
|
* @version 3.0 (December 2000) |
|
* |
|
* Optimised ANSI C code for the Rijndael cipher (now AES) |
|
* |
|
* @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> |
|
* @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> |
|
* @author Paulo Barreto <paulo.barreto@terra.com.br> |
|
* |
|
* This code is hereby placed in the public domain. |
|
* |
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS |
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE |
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
*/ |
|
#ifndef __RIJNDAEL_H |
|
#define __RIJNDAEL_H |
|
|
/* This is an independent implementation of the encryption algorithm: */ |
#define MAXKC (256/32) |
/* */ |
#define MAXKB (256/8) |
/* RIJNDAEL by Joan Daemen and Vincent Rijmen */ |
#define MAXNR 14 |
/* */ |
|
/* which is a candidate algorithm in the Advanced Encryption Standard */ |
|
/* programme of the US National Institute of Standards and Technology. */ |
|
|
|
/* |
typedef unsigned char u8; |
----------------------------------------------------------------------- |
typedef unsigned short u16; |
Copyright (c) 2001 Dr Brian Gladman <brg@gladman.uk.net>, Worcester, UK |
typedef unsigned int u32; |
|
|
TERMS |
|
|
|
Redistribution and use in source and binary forms, with or without |
/* The structure for key information */ |
modification, are permitted provided that the following conditions |
typedef struct { |
are met: |
int decrypt; |
1. Redistributions of source code must retain the above copyright |
int Nr; /* key-length-dependent number of rounds */ |
notice, this list of conditions and the following disclaimer. |
u32 ek[4*(MAXNR + 1)]; /* encrypt key schedule */ |
2. Redistributions in binary form must reproduce the above copyright |
u32 dk[4*(MAXNR + 1)]; /* decrypt key schedule */ |
notice, this list of conditions and the following disclaimer in the |
|
documentation and/or other materials provided with the distribution. |
|
|
|
This software is provided 'as is' with no guarantees of correctness or |
|
fitness for purpose. |
|
----------------------------------------------------------------------- |
|
*/ |
|
|
|
#ifndef _RIJNDAEL_H_ |
|
#define _RIJNDAEL_H_ |
|
|
|
/* 1. Standard types for AES cryptography source code */ |
|
|
|
typedef u_int8_t u1byte; /* an 8 bit unsigned character type */ |
|
typedef u_int16_t u2byte; /* a 16 bit unsigned integer type */ |
|
typedef u_int32_t u4byte; /* a 32 bit unsigned integer type */ |
|
|
|
typedef int8_t s1byte; /* an 8 bit signed character type */ |
|
typedef int16_t s2byte; /* a 16 bit signed integer type */ |
|
typedef int32_t s4byte; /* a 32 bit signed integer type */ |
|
|
|
typedef struct _rijndael_ctx { |
|
u4byte k_len; |
|
int decrypt; |
|
u4byte e_key[64]; |
|
u4byte d_key[64]; |
|
} rijndael_ctx; |
} rijndael_ctx; |
|
|
|
void rijndael_set_key(rijndael_ctx *, u_char *, int, int); |
|
void rijndael_decrypt(rijndael_ctx *, u_char *, u_char *); |
|
void rijndael_encrypt(rijndael_ctx *, u_char *, u_char *); |
|
|
/* 2. Standard interface for AES cryptographic routines */ |
#endif /* __RIJNDAEL_H */ |
|
|
/* These are all based on 32 bit unsigned values and will therefore */ |
|
/* require endian conversions for big-endian architectures */ |
|
|
|
rijndael_ctx * |
|
rijndael_set_key __P((rijndael_ctx *, const u4byte *, const u4byte, int)); |
|
void rijndael_encrypt __P((rijndael_ctx *, const u4byte *, u4byte *)); |
|
void rijndael_decrypt __P((rijndael_ctx *, const u4byte *, u4byte *)); |
|
|
|
#endif /* _RIJNDAEL_H_ */ |
|