summaryrefslogtreecommitdiff
path: root/sys/crypto/rijndael.h
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2001-08-24 15:59:43 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2001-08-24 15:59:43 +0000
commit51b45bc2b5e5f920d2ac306a6f5b2896bdd8a284 (patch)
tree88ef5e18f221f23bd9ee60b7ec629886cc7416da /sys/crypto/rijndael.h
parent4b853e170897608b4ce241466591f33acbfe0de1 (diff)
switch to the optimised AES reference code from
http://www.esat.kuleuven.ac.be/~rijmen/rijndael/rijndael-fst-3.0.zip the same code is used by ssh, so please make sure to update usr.sbin/ssh/rijndael.c if you change this code. tested on sparc (jason) and with swap encryption (me); ok deraadt@, provos@
Diffstat (limited to 'sys/crypto/rijndael.h')
-rw-r--r--sys/crypto/rijndael.h104
1 files changed, 46 insertions, 58 deletions
diff --git a/sys/crypto/rijndael.h b/sys/crypto/rijndael.h
index 3aab3ab98ea..242bf9a6671 100644
--- a/sys/crypto/rijndael.h
+++ b/sys/crypto/rijndael.h
@@ -1,61 +1,49 @@
-/* $OpenBSD: rijndael.h,v 1.4 2001/07/31 16:39:54 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_
-
-/* 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 */