summaryrefslogtreecommitdiff
path: root/rijndael.h
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2001-09-14 02:47:33 +0000
committerBen Lindstrom <mouring@eviladmin.org>2001-09-14 02:47:33 +0000
commit319fc7353c647aa2703bb6c7f5288fb42f29e705 (patch)
tree6f18bbd9ecb425b951b549a3d01c59308d0bccaf /rijndael.h
parent4213c559ef3d44670c8580cc552d23dce7528bda (diff)
downloadopenssh-git-319fc7353c647aa2703bb6c7f5288fb42f29e705.tar.gz
I was promised that this does not need to have endness fix up by Markus.
So I will blindly trust him. =) - markus@cvs.openbsd.org 2001/08/23 11:31:59 [cipher.c cipher.h] switch to the optimised AES reference code from http://www.esat.kuleuven.ac.be/~rijmen/rijndael/rijndael-fst-3.0.zip
Diffstat (limited to 'rijndael.h')
-rw-r--r--rijndael.h106
1 files changed, 46 insertions, 60 deletions
diff --git a/rijndael.h b/rijndael.h
index db33805e..242bf9a6 100644
--- a/rijndael.h
+++ b/rijndael.h
@@ -1,63 +1,49 @@
-/* $OpenBSD: rijndael.h,v 1.9 2001/07/30 16:23:30 stevesk Exp $ */
-
-/* This is an independent implementation of the encryption algorithm: */
-/* */
-/* RIJNDAEL by Joan Daemen and Vincent Rijmen */
-/* */
-/* which is a candidate algorithm in the Advanced Encryption Standard */
-/* programme of the US National Institute of Standards and Technology. */
-
-/*
- -----------------------------------------------------------------------
- Copyright (c) 2001 Dr Brian Gladman <brg@gladman.uk.net>, Worcester, UK
-
- TERMS
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- 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_
-
-#include "config.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-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
+
+#define MAXKC (256/32)
+#define MAXKB (256/8)
+#define MAXNR 14
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef unsigned int u32;
+
+/* The structure for key information */
+typedef struct {
+ int decrypt;
+ int Nr; /* key-length-dependent number of rounds */
+ u32 ek[4*(MAXNR + 1)]; /* encrypt key schedule */
+ u32 dk[4*(MAXNR + 1)]; /* decrypt key schedule */
} 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 */
-
-/* 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_ */
+#endif /* __RIJNDAEL_H */