]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Delete old duplicate files.
authorDr. Stephen Henson <steve@openssl.org>
Tue, 10 Jul 2007 22:02:02 +0000 (22:02 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Tue, 10 Jul 2007 22:02:02 +0000 (22:02 +0000)
25 files changed:
TABLE
apps/openssl-vms.cnf
crypto/sha/sha_locl.h
crypto/stack/safestack.h
fips-1.0/aes/fips_aes_core.c [deleted file]
fips-1.0/aes/fips_aes_locl.h [deleted file]
fips-1.0/des/fips_des_enc.c [deleted file]
fips-1.0/des/fips_des_locl.h [deleted file]
fips-1.0/des/fips_set_key.c [deleted file]
fips-1.0/dsa/Makefile
fips-1.0/dsa/fips_dsa_gen.c
fips-1.0/dsa/fips_dssvs.c
fips-1.0/fips_test_suite.c
fips-1.0/rsa/Makefile
fips-1.0/rsa/fips_rsa_selftest.c
fips-1.0/sha/Makefile
fips-1.0/sha/fips_md32_common.h [deleted file]
fips-1.0/sha/fips_sha.h [deleted file]
fips-1.0/sha/fips_sha1dgst.c [deleted file]
fips-1.0/sha/fips_sha256.c [deleted file]
fips-1.0/sha/fips_sha512.c [deleted file]
fips-1.0/sha/fips_sha_locl.h [deleted file]
fips-1.0/sha/fips_standalone_sha1.c
test/Makefile
util/mkdef.pl

diff --git a/TABLE b/TABLE
index f3ad886983c08ea4a979d63584735bb0204394bd..db333cf853512604789c7c026829ff11ed7fa5b9 100644 (file)
--- a/TABLE
+++ b/TABLE
@@ -1649,7 +1649,7 @@ $arflags      =
 
 *** debug-steve
 $cc           = gcc
-$cflags       = -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -march=i486 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe
+$cflags       = -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -g -m32 -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe
 $unistd       = 
 $thread_cflag = -D_REENTRANT
 $sys_id       = 
index fae82b0d53b9d7fcd16571d65c09737f8de95d80..84e60730fc838063a9ff1ff8c5948be6be1ed888 100644 (file)
@@ -8,9 +8,8 @@
 HOME                   = .
 RANDFILE               = $ENV::HOME/.rnd
 
-# Extra OBJECT IDENTIFIER info:
-#oid_file              = $ENV::HOME/.oid
-oid_section            = new_oids
+# Uncomment out to enable OpenSSL configuration see config(3)
+# openssl_conf = openssl_init
 
 # To use this configuration file with the "-extfile" option of the
 # "openssl x509" utility, name here the section containing the
@@ -19,13 +18,22 @@ oid_section         = new_oids
 # (Alternatively, use a configuration file that has only
 # X.509v3 extensions in its main [= default] section.)
 
+[openssl_init]
+# Extra OBJECT IDENTIFIER info:
+oid_section = new_oids
+alg_section = algs
+
 [ new_oids ]
 
-# We can add new OIDs in here for use by 'ca' and 'req'.
+# We can add new OIDs in here for use by any config aware application
 # Add a simple OID like this:
-# testoid1=1.2.3.4
+# shortname=Long Object Identifier Name, 1.2.3.4
 # Or use config file substitution like this:
-# testoid2=${testoid1}.5.6
+# testoid2=OID2 LONG NAME, ${testoid1}.5.6, OTHER OID
+
+[ algs ]
+# Algorithm configuration options. Currently just fips_mode
+fips_mode = no
 
 ####################################################################
 [ ca ]
index 3b1cea84e448f27bc7e904b16e9e87d0d18b369e..d65de44af0f431e6cdcd952431200ad8f4e8d30c 100644 (file)
@@ -151,9 +151,6 @@ FIPS_NON_FIPS_MD_Init(SHA)
 int HASH_INIT (SHA_CTX *c)
 #endif
        {
-#if defined(SHA_1) && defined(OPENSSL_FIPS)
-       FIPS_selftest_check();
-#endif
        c->h0=INIT_DATA_h0;
        c->h1=INIT_DATA_h1;
        c->h2=INIT_DATA_h2;
index 3d43db6667dbbe01fb0104024e18c3cfeabb386c..d496f365c2703a590ddd2d195d32d0b1158990d0 100644 (file)
@@ -520,28 +520,6 @@ STACK_OF(type) \
 #define sk_CRYPTO_dynlock_sort(st) SKM_sk_sort(CRYPTO_dynlock, (st))
 #define sk_CRYPTO_dynlock_is_sorted(st) SKM_sk_is_sorted(CRYPTO_dynlock, (st))
 
-#define sk_CRYPTO_dynlock_new(st) SKM_sk_new(CRYPTO_dynlock, (st))
-#define sk_CRYPTO_dynlock_new_null() SKM_sk_new_null(CRYPTO_dynlock)
-#define sk_CRYPTO_dynlock_free(st) SKM_sk_free(CRYPTO_dynlock, (st))
-#define sk_CRYPTO_dynlock_num(st) SKM_sk_num(CRYPTO_dynlock, (st))
-#define sk_CRYPTO_dynlock_value(st, i) SKM_sk_value(CRYPTO_dynlock, (st), (i))
-#define sk_CRYPTO_dynlock_set(st, i, val) SKM_sk_set(CRYPTO_dynlock, (st), (i), (val))
-#define sk_CRYPTO_dynlock_zero(st) SKM_sk_zero(CRYPTO_dynlock, (st))
-#define sk_CRYPTO_dynlock_push(st, val) SKM_sk_push(CRYPTO_dynlock, (st), (val))
-#define sk_CRYPTO_dynlock_unshift(st, val) SKM_sk_unshift(CRYPTO_dynlock, (st), (val))
-#define sk_CRYPTO_dynlock_find(st, val) SKM_sk_find(CRYPTO_dynlock, (st), (val))
-#define sk_CRYPTO_dynlock_find_ex(st, val) SKM_sk_find_ex(CRYPTO_dynlock, (st), (val))
-#define sk_CRYPTO_dynlock_delete(st, i) SKM_sk_delete(CRYPTO_dynlock, (st), (i))
-#define sk_CRYPTO_dynlock_delete_ptr(st, ptr) SKM_sk_delete_ptr(CRYPTO_dynlock, (st), (ptr))
-#define sk_CRYPTO_dynlock_insert(st, val, i) SKM_sk_insert(CRYPTO_dynlock, (st), (val), (i))
-#define sk_CRYPTO_dynlock_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(CRYPTO_dynlock, (st), (cmp))
-#define sk_CRYPTO_dynlock_dup(st) SKM_sk_dup(CRYPTO_dynlock, st)
-#define sk_CRYPTO_dynlock_pop_free(st, free_func) SKM_sk_pop_free(CRYPTO_dynlock, (st), (free_func))
-#define sk_CRYPTO_dynlock_shift(st) SKM_sk_shift(CRYPTO_dynlock, (st))
-#define sk_CRYPTO_dynlock_pop(st) SKM_sk_pop(CRYPTO_dynlock, (st))
-#define sk_CRYPTO_dynlock_sort(st) SKM_sk_sort(CRYPTO_dynlock, (st))
-#define sk_CRYPTO_dynlock_is_sorted(st) SKM_sk_is_sorted(CRYPTO_dynlock, (st))
-
 #define sk_DIST_POINT_new(st) SKM_sk_new(DIST_POINT, (st))
 #define sk_DIST_POINT_new_null() SKM_sk_new_null(DIST_POINT)
 #define sk_DIST_POINT_free(st) SKM_sk_free(DIST_POINT, (st))
diff --git a/fips-1.0/aes/fips_aes_core.c b/fips-1.0/aes/fips_aes_core.c
deleted file mode 100644 (file)
index 638107d..0000000
+++ /dev/null
@@ -1,1165 +0,0 @@
-/* crypto/aes/aes_core.c -*- mode:C; c-file-style: "eay" -*- */
-/**
- * rijndael-alg-fst.c
- *
- * @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.
- */
-
-/* Note: rewritten a little bit to provide error control and an OpenSSL-
-   compatible API */
-
-#ifndef AES_DEBUG
-# ifndef NDEBUG
-#  define NDEBUG
-# endif
-#endif
-#include <assert.h>
-
-#include <stdlib.h>
-#include <openssl/aes.h>
-#include <openssl/fips.h>
-#include "fips_aes_locl.h"
-
-#ifdef OPENSSL_FIPS
-
-/*
-Te0[x] = S [x].[02, 01, 01, 03];
-Te1[x] = S [x].[03, 02, 01, 01];
-Te2[x] = S [x].[01, 03, 02, 01];
-Te3[x] = S [x].[01, 01, 03, 02];
-
-Td0[x] = Si[x].[0e, 09, 0d, 0b];
-Td1[x] = Si[x].[0b, 0e, 09, 0d];
-Td2[x] = Si[x].[0d, 0b, 0e, 09];
-Td3[x] = Si[x].[09, 0d, 0b, 0e];
-Td4[x] = Si[x].[01];
-*/
-
-static const u32 Te0[256] = {
-    0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
-    0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
-    0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
-    0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
-    0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
-    0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
-    0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
-    0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
-    0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
-    0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
-    0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
-    0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
-    0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
-    0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
-    0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
-    0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
-    0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
-    0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
-    0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
-    0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
-    0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
-    0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
-    0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
-    0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
-    0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
-    0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
-    0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
-    0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
-    0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
-    0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
-    0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
-    0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
-    0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
-    0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
-    0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
-    0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
-    0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
-    0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
-    0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
-    0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
-    0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
-    0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
-    0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
-    0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
-    0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
-    0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
-    0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
-    0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
-    0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
-    0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
-    0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
-    0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
-    0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
-    0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
-    0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
-    0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
-    0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
-    0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
-    0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
-    0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
-    0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
-    0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
-    0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
-    0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
-};
-static const u32 Te1[256] = {
-    0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
-    0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
-    0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
-    0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
-    0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
-    0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
-    0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
-    0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
-    0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
-    0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
-    0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
-    0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
-    0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
-    0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
-    0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
-    0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
-    0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
-    0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
-    0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
-    0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
-    0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
-    0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
-    0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
-    0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
-    0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
-    0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
-    0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
-    0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
-    0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
-    0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
-    0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
-    0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
-    0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
-    0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
-    0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
-    0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
-    0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
-    0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
-    0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
-    0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
-    0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
-    0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
-    0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
-    0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
-    0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
-    0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
-    0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
-    0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
-    0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
-    0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
-    0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
-    0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
-    0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
-    0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
-    0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
-    0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
-    0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
-    0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
-    0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
-    0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
-    0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
-    0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
-    0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
-    0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
-};
-static const u32 Te2[256] = {
-    0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
-    0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
-    0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
-    0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
-    0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
-    0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
-    0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
-    0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
-    0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
-    0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
-    0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
-    0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
-    0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
-    0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
-    0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
-    0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
-    0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
-    0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
-    0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
-    0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
-    0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
-    0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
-    0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
-    0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
-    0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
-    0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
-    0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
-    0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
-    0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
-    0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
-    0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
-    0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
-    0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
-    0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
-    0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
-    0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
-    0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
-    0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
-    0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
-    0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
-    0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
-    0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
-    0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
-    0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
-    0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
-    0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
-    0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
-    0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
-    0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
-    0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
-    0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
-    0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
-    0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
-    0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
-    0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
-    0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
-    0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
-    0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
-    0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
-    0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
-    0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
-    0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
-    0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
-    0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
-};
-static const u32 Te3[256] = {
-    0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
-    0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
-    0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
-    0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
-    0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
-    0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
-    0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
-    0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
-    0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
-    0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
-    0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
-    0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
-    0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
-    0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
-    0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
-    0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
-    0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
-    0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
-    0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
-    0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
-    0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
-    0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
-    0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
-    0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
-    0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
-    0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
-    0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
-    0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
-    0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
-    0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
-    0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
-    0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
-    0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
-    0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
-    0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
-    0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
-    0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
-    0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
-    0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
-    0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
-    0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
-    0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
-    0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
-    0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
-    0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
-    0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
-    0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
-    0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
-    0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
-    0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
-    0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
-    0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
-    0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
-    0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
-    0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
-    0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
-    0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
-    0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
-    0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
-    0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
-    0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
-    0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
-    0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
-    0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
-};
-
-static const u32 Td0[256] = {
-    0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
-    0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
-    0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
-    0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
-    0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
-    0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
-    0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,
-    0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,
-    0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,
-    0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,
-    0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,
-    0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,
-    0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,
-    0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,
-    0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,
-    0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,
-    0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,
-    0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,
-    0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,
-    0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,
-    0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,
-    0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,
-    0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,
-    0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,
-    0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,
-    0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,
-    0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,
-    0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,
-    0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,
-    0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,
-    0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,
-    0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,
-    0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,
-    0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,
-    0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,
-    0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,
-    0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,
-    0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,
-    0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,
-    0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,
-    0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,
-    0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,
-    0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,
-    0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,
-    0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,
-    0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,
-    0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,
-    0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,
-    0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,
-    0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,
-    0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,
-    0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,
-    0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,
-    0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,
-    0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,
-    0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,
-    0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,
-    0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,
-    0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,
-    0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,
-    0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,
-    0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,
-    0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,
-    0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,
-};
-static const u32 Td1[256] = {
-    0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,
-    0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,
-    0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,
-    0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,
-    0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,
-    0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,
-    0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,
-    0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,
-    0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,
-    0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,
-    0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,
-    0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,
-    0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,
-    0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,
-    0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,
-    0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,
-    0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,
-    0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,
-    0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,
-    0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,
-    0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,
-    0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,
-    0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,
-    0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,
-    0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,
-    0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,
-    0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,
-    0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,
-    0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,
-    0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,
-    0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,
-    0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,
-    0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,
-    0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,
-    0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,
-    0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,
-    0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,
-    0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,
-    0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,
-    0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,
-    0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,
-    0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,
-    0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,
-    0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,
-    0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,
-    0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,
-    0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,
-    0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,
-    0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,
-    0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,
-    0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,
-    0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,
-    0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,
-    0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,
-    0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,
-    0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,
-    0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,
-    0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,
-    0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,
-    0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,
-    0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,
-    0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,
-    0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,
-    0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,
-};
-static const u32 Td2[256] = {
-    0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,
-    0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,
-    0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,
-    0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,
-    0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,
-    0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,
-    0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,
-    0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,
-    0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,
-    0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,
-    0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,
-    0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,
-    0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,
-    0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,
-    0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,
-    0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,
-    0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,
-    0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,
-    0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,
-    0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,
-    0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,
-    0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,
-    0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,
-    0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,
-    0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,
-    0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,
-    0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,
-    0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,
-    0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,
-    0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,
-    0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,
-    0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,
-    0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,
-    0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,
-    0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,
-    0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,
-    0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,
-    0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,
-    0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,
-    0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,
-    0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,
-    0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,
-    0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,
-    0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,
-    0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,
-    0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,
-    0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,
-    0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,
-    0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,
-    0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,
-    0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,
-    0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,
-    0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,
-    0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,
-    0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,
-    0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,
-    0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,
-    0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,
-    0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,
-    0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,
-    0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,
-    0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,
-    0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,
-    0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,
-};
-static const u32 Td3[256] = {
-    0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,
-    0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,
-    0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,
-    0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,
-    0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,
-    0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,
-    0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,
-    0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,
-    0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,
-    0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,
-    0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,
-    0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,
-    0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,
-    0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,
-    0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,
-    0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,
-    0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,
-    0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,
-    0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,
-    0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,
-    0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,
-    0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,
-    0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,
-    0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,
-    0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,
-    0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,
-    0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,
-    0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,
-    0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,
-    0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,
-    0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,
-    0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,
-    0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,
-    0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,
-    0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,
-    0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,
-    0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,
-    0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,
-    0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,
-    0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,
-    0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,
-    0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,
-    0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,
-    0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,
-    0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,
-    0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,
-    0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,
-    0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,
-    0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,
-    0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,
-    0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,
-    0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,
-    0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,
-    0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,
-    0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,
-    0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,
-    0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,
-    0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
-    0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
-    0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
-    0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
-    0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
-    0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
-    0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
-};
-static const u8 Td4[256] = {
-    0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U,
-    0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU,
-    0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U,
-    0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU,
-    0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU,
-    0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU,
-    0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U,
-    0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U,
-    0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U,
-    0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U,
-    0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU,
-    0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U,
-    0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU,
-    0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U,
-    0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U,
-    0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU,
-    0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU,
-    0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U,
-    0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U,
-    0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU,
-    0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U,
-    0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU,
-    0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U,
-    0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U,
-    0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U,
-    0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU,
-    0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU,
-    0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU,
-    0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U,
-    0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U,
-    0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U,
-    0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU,
-};
-static const u32 rcon[] = {
-       0x01000000, 0x02000000, 0x04000000, 0x08000000,
-       0x10000000, 0x20000000, 0x40000000, 0x80000000,
-       0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
-};
-
-/**
- * Expand the cipher key into the encryption key schedule.
- */
-int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
-                       AES_KEY *key) {
-
-       u32 *rk;
-       int i = 0;
-       u32 temp;
-
-       if (!userKey || !key)
-               return -1;
-       if (bits != 128 && bits != 192 && bits != 256)
-               return -2;
-       if(FIPS_selftest_failed())
-               return -3;
-
-       rk = key->rd_key;
-
-       if (bits==128)
-               key->rounds = 10;
-       else if (bits==192)
-               key->rounds = 12;
-       else
-               key->rounds = 14;
-
-       rk[0] = GETU32(userKey     );
-       rk[1] = GETU32(userKey +  4);
-       rk[2] = GETU32(userKey +  8);
-       rk[3] = GETU32(userKey + 12);
-       if (bits == 128) {
-               while (1) {
-                       temp  = rk[3];
-                       rk[4] = rk[0] ^
-                               (Te2[(temp >> 16) & 0xff] & 0xff000000) ^
-                               (Te3[(temp >>  8) & 0xff] & 0x00ff0000) ^
-                               (Te0[(temp      ) & 0xff] & 0x0000ff00) ^
-                               (Te1[(temp >> 24)       ] & 0x000000ff) ^
-                               rcon[i];
-                       rk[5] = rk[1] ^ rk[4];
-                       rk[6] = rk[2] ^ rk[5];
-                       rk[7] = rk[3] ^ rk[6];
-                       if (++i == 10) {
-                               return 0;
-                       }
-                       rk += 4;
-               }
-       }
-       rk[4] = GETU32(userKey + 16);
-       rk[5] = GETU32(userKey + 20);
-       if (bits == 192) {
-               while (1) {
-                       temp = rk[ 5];
-                       rk[ 6] = rk[ 0] ^
-                               (Te2[(temp >> 16) & 0xff] & 0xff000000) ^
-                               (Te3[(temp >>  8) & 0xff] & 0x00ff0000) ^
-                               (Te0[(temp      ) & 0xff] & 0x0000ff00) ^
-                               (Te1[(temp >> 24)       ] & 0x000000ff) ^
-                               rcon[i];
-                       rk[ 7] = rk[ 1] ^ rk[ 6];
-                       rk[ 8] = rk[ 2] ^ rk[ 7];
-                       rk[ 9] = rk[ 3] ^ rk[ 8];
-                       if (++i == 8) {
-                               return 0;
-                       }
-                       rk[10] = rk[ 4] ^ rk[ 9];
-                       rk[11] = rk[ 5] ^ rk[10];
-                       rk += 6;
-               }
-       }
-       rk[6] = GETU32(userKey + 24);
-       rk[7] = GETU32(userKey + 28);
-       if (bits == 256) {
-               while (1) {
-                       temp = rk[ 7];
-                       rk[ 8] = rk[ 0] ^
-                               (Te2[(temp >> 16) & 0xff] & 0xff000000) ^
-                               (Te3[(temp >>  8) & 0xff] & 0x00ff0000) ^
-                               (Te0[(temp      ) & 0xff] & 0x0000ff00) ^
-                               (Te1[(temp >> 24)       ] & 0x000000ff) ^
-                               rcon[i];
-                       rk[ 9] = rk[ 1] ^ rk[ 8];
-                       rk[10] = rk[ 2] ^ rk[ 9];
-                       rk[11] = rk[ 3] ^ rk[10];
-                       if (++i == 7) {
-                               return 0;
-                       }
-                       temp = rk[11];
-                       rk[12] = rk[ 4] ^
-                               (Te2[(temp >> 24)       ] & 0xff000000) ^
-                               (Te3[(temp >> 16) & 0xff] & 0x00ff0000) ^
-                               (Te0[(temp >>  8) & 0xff] & 0x0000ff00) ^
-                               (Te1[(temp      ) & 0xff] & 0x000000ff);
-                       rk[13] = rk[ 5] ^ rk[12];
-                       rk[14] = rk[ 6] ^ rk[13];
-                       rk[15] = rk[ 7] ^ rk[14];
-
-                       rk += 8;
-               }
-       }
-       return 0;
-}
-
-/**
- * Expand the cipher key into the decryption key schedule.
- */
-int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
-                        AES_KEY *key) {
-
-        u32 *rk;
-       int i, j, status;
-       u32 temp;
-
-       /* first, start with an encryption schedule */
-       status = AES_set_encrypt_key(userKey, bits, key);
-       if (status < 0)
-               return status;
-
-       rk = key->rd_key;
-
-       /* invert the order of the round keys: */
-       for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
-               temp = rk[i    ]; rk[i    ] = rk[j    ]; rk[j    ] = temp;
-               temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
-               temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
-               temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
-       }
-       /* apply the inverse MixColumn transform to all round keys but the first and the last: */
-       for (i = 1; i < (key->rounds); i++) {
-               rk += 4;
-               rk[0] =
-                       Td0[Te1[(rk[0] >> 24)       ] & 0xff] ^
-                       Td1[Te1[(rk[0] >> 16) & 0xff] & 0xff] ^
-                       Td2[Te1[(rk[0] >>  8) & 0xff] & 0xff] ^
-                       Td3[Te1[(rk[0]      ) & 0xff] & 0xff];
-               rk[1] =
-                       Td0[Te1[(rk[1] >> 24)       ] & 0xff] ^
-                       Td1[Te1[(rk[1] >> 16) & 0xff] & 0xff] ^
-                       Td2[Te1[(rk[1] >>  8) & 0xff] & 0xff] ^
-                       Td3[Te1[(rk[1]      ) & 0xff] & 0xff];
-               rk[2] =
-                       Td0[Te1[(rk[2] >> 24)       ] & 0xff] ^
-                       Td1[Te1[(rk[2] >> 16) & 0xff] & 0xff] ^
-                       Td2[Te1[(rk[2] >>  8) & 0xff] & 0xff] ^
-                       Td3[Te1[(rk[2]      ) & 0xff] & 0xff];
-               rk[3] =
-                       Td0[Te1[(rk[3] >> 24)       ] & 0xff] ^
-                       Td1[Te1[(rk[3] >> 16) & 0xff] & 0xff] ^
-                       Td2[Te1[(rk[3] >>  8) & 0xff] & 0xff] ^
-                       Td3[Te1[(rk[3]      ) & 0xff] & 0xff];
-       }
-       return 0;
-}
-
-#ifndef AES_ASM
-/*
- * Encrypt a single block
- * in and out can overlap
- */
-void AES_encrypt(const unsigned char *in, unsigned char *out,
-                const AES_KEY *key) {
-
-       const u32 *rk;
-       u32 s0, s1, s2, s3, t0, t1, t2, t3;
-#ifndef FULL_UNROLL
-       int r;
-#endif /* ?FULL_UNROLL */
-
-       assert(in && out && key);
-       rk = key->rd_key;
-
-       /*
-        * map byte array block to cipher state
-        * and add initial round key:
-        */
-       s0 = GETU32(in     ) ^ rk[0];
-       s1 = GETU32(in +  4) ^ rk[1];
-       s2 = GETU32(in +  8) ^ rk[2];
-       s3 = GETU32(in + 12) ^ rk[3];
-#ifdef FULL_UNROLL
-       /* round 1: */
-       t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4];
-       t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5];
-       t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6];
-       t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7];
-       /* round 2: */
-       s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8];
-       s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9];
-       s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10];
-       s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11];
-       /* round 3: */
-       t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12];
-       t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13];
-       t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14];
-       t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15];
-       /* round 4: */
-       s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16];
-       s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17];
-       s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18];
-       s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19];
-       /* round 5: */
-       t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20];
-       t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21];
-       t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22];
-       t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23];
-       /* round 6: */
-       s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24];
-       s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25];
-       s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26];
-       s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27];
-       /* round 7: */
-       t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28];
-       t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29];
-       t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30];
-       t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31];
-       /* round 8: */
-       s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32];
-       s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];
-       s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];
-       s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];
-       /* round 9: */
-       t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];
-       t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];
-       t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];
-       t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];
-    if (key->rounds > 10) {
-        /* round 10: */
-        s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];
-        s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];
-        s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];
-        s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];
-        /* round 11: */
-        t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];
-        t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];
-        t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];
-        t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];
-        if (key->rounds > 12) {
-            /* round 12: */
-            s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];
-            s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];
-            s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];
-            s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];
-            /* round 13: */
-            t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];
-            t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];
-            t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];
-            t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];
-        }
-    }
-    rk += key->rounds << 2;
-#else  /* !FULL_UNROLL */
-    /*
-     * Nr - 1 full rounds:
-     */
-    r = key->rounds >> 1;
-    for (;;) {
-        t0 =
-            Te0[(s0 >> 24)       ] ^
-            Te1[(s1 >> 16) & 0xff] ^
-            Te2[(s2 >>  8) & 0xff] ^
-            Te3[(s3      ) & 0xff] ^
-            rk[4];
-        t1 =
-            Te0[(s1 >> 24)       ] ^
-            Te1[(s2 >> 16) & 0xff] ^
-            Te2[(s3 >>  8) & 0xff] ^
-            Te3[(s0      ) & 0xff] ^
-            rk[5];
-        t2 =
-            Te0[(s2 >> 24)       ] ^
-            Te1[(s3 >> 16) & 0xff] ^
-            Te2[(s0 >>  8) & 0xff] ^
-            Te3[(s1      ) & 0xff] ^
-            rk[6];
-        t3 =
-            Te0[(s3 >> 24)       ] ^
-            Te1[(s0 >> 16) & 0xff] ^
-            Te2[(s1 >>  8) & 0xff] ^
-            Te3[(s2      ) & 0xff] ^
-            rk[7];
-
-        rk += 8;
-        if (--r == 0) {
-            break;
-        }
-
-        s0 =
-            Te0[(t0 >> 24)       ] ^
-            Te1[(t1 >> 16) & 0xff] ^
-            Te2[(t2 >>  8) & 0xff] ^
-            Te3[(t3      ) & 0xff] ^
-            rk[0];
-        s1 =
-            Te0[(t1 >> 24)       ] ^
-            Te1[(t2 >> 16) & 0xff] ^
-            Te2[(t3 >>  8) & 0xff] ^
-            Te3[(t0      ) & 0xff] ^
-            rk[1];
-        s2 =
-            Te0[(t2 >> 24)       ] ^
-            Te1[(t3 >> 16) & 0xff] ^
-            Te2[(t0 >>  8) & 0xff] ^
-            Te3[(t1      ) & 0xff] ^
-            rk[2];
-        s3 =
-            Te0[(t3 >> 24)       ] ^
-            Te1[(t0 >> 16) & 0xff] ^
-            Te2[(t1 >>  8) & 0xff] ^
-            Te3[(t2      ) & 0xff] ^
-            rk[3];
-    }
-#endif /* ?FULL_UNROLL */
-    /*
-        * apply last round and
-        * map cipher state to byte array block:
-        */
-       s0 =
-               (Te2[(t0 >> 24)       ] & 0xff000000) ^
-               (Te3[(t1 >> 16) & 0xff] & 0x00ff0000) ^
-               (Te0[(t2 >>  8) & 0xff] & 0x0000ff00) ^
-               (Te1[(t3      ) & 0xff] & 0x000000ff) ^
-               rk[0];
-       PUTU32(out     , s0);
-       s1 =
-               (Te2[(t1 >> 24)       ] & 0xff000000) ^
-               (Te3[(t2 >> 16) & 0xff] & 0x00ff0000) ^
-               (Te0[(t3 >>  8) & 0xff] & 0x0000ff00) ^
-               (Te1[(t0      ) & 0xff] & 0x000000ff) ^
-               rk[1];
-       PUTU32(out +  4, s1);
-       s2 =
-               (Te2[(t2 >> 24)       ] & 0xff000000) ^
-               (Te3[(t3 >> 16) & 0xff] & 0x00ff0000) ^
-               (Te0[(t0 >>  8) & 0xff] & 0x0000ff00) ^
-               (Te1[(t1      ) & 0xff] & 0x000000ff) ^
-               rk[2];
-       PUTU32(out +  8, s2);
-       s3 =
-               (Te2[(t3 >> 24)       ] & 0xff000000) ^
-               (Te3[(t0 >> 16) & 0xff] & 0x00ff0000) ^
-               (Te0[(t1 >>  8) & 0xff] & 0x0000ff00) ^
-               (Te1[(t2      ) & 0xff] & 0x000000ff) ^
-               rk[3];
-       PUTU32(out + 12, s3);
-}
-
-/*
- * Decrypt a single block
- * in and out can overlap
- */
-void AES_decrypt(const unsigned char *in, unsigned char *out,
-                const AES_KEY *key) {
-
-       const u32 *rk;
-       u32 s0, s1, s2, s3, t0, t1, t2, t3;
-#ifndef FULL_UNROLL
-       int r;
-#endif /* ?FULL_UNROLL */
-
-       assert(in && out && key);
-       rk = key->rd_key;
-
-       /*
-        * map byte array block to cipher state
-        * and add initial round key:
-        */
-    s0 = GETU32(in     ) ^ rk[0];
-    s1 = GETU32(in +  4) ^ rk[1];
-    s2 = GETU32(in +  8) ^ rk[2];
-    s3 = GETU32(in + 12) ^ rk[3];
-#ifdef FULL_UNROLL
-    /* round 1: */
-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4];
-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5];
-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6];
-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7];
-    /* round 2: */
-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8];
-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9];
-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10];
-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11];
-    /* round 3: */
-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12];
-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13];
-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14];
-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15];
-    /* round 4: */
-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16];
-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17];
-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18];
-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19];
-    /* round 5: */
-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20];
-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21];
-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22];
-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23];
-    /* round 6: */
-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24];
-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25];
-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26];
-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27];
-    /* round 7: */
-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28];
-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29];
-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30];
-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31];
-    /* round 8: */
-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32];
-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];
-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];
-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];
-    /* round 9: */
-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];
-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];
-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];
-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];
-    if (key->rounds > 10) {
-        /* round 10: */
-        s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];
-        s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];
-        s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];
-        s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];
-        /* round 11: */
-        t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];
-        t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];
-        t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];
-        t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];
-        if (key->rounds > 12) {
-            /* round 12: */
-            s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];
-            s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];
-            s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];
-            s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];
-            /* round 13: */
-            t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];
-            t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];
-            t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];
-            t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];
-        }
-    }
-       rk += key->rounds << 2;
-#else  /* !FULL_UNROLL */
-    /*
-     * Nr - 1 full rounds:
-     */
-    r = key->rounds >> 1;
-    for (;;) {
-        t0 =
-            Td0[(s0 >> 24)       ] ^
-            Td1[(s3 >> 16) & 0xff] ^
-            Td2[(s2 >>  8) & 0xff] ^
-            Td3[(s1      ) & 0xff] ^
-            rk[4];
-        t1 =
-            Td0[(s1 >> 24)       ] ^
-            Td1[(s0 >> 16) & 0xff] ^
-            Td2[(s3 >>  8) & 0xff] ^
-            Td3[(s2      ) & 0xff] ^
-            rk[5];
-        t2 =
-            Td0[(s2 >> 24)       ] ^
-            Td1[(s1 >> 16) & 0xff] ^
-            Td2[(s0 >>  8) & 0xff] ^
-            Td3[(s3      ) & 0xff] ^
-            rk[6];
-        t3 =
-            Td0[(s3 >> 24)       ] ^
-            Td1[(s2 >> 16) & 0xff] ^
-            Td2[(s1 >>  8) & 0xff] ^
-            Td3[(s0      ) & 0xff] ^
-            rk[7];
-
-        rk += 8;
-        if (--r == 0) {
-            break;
-        }
-
-        s0 =
-            Td0[(t0 >> 24)       ] ^
-            Td1[(t3 >> 16) & 0xff] ^
-            Td2[(t2 >>  8) & 0xff] ^
-            Td3[(t1      ) & 0xff] ^
-            rk[0];
-        s1 =
-            Td0[(t1 >> 24)       ] ^
-            Td1[(t0 >> 16) & 0xff] ^
-            Td2[(t3 >>  8) & 0xff] ^
-            Td3[(t2      ) & 0xff] ^
-            rk[1];
-        s2 =
-            Td0[(t2 >> 24)       ] ^
-            Td1[(t1 >> 16) & 0xff] ^
-            Td2[(t0 >>  8) & 0xff] ^
-            Td3[(t3      ) & 0xff] ^
-            rk[2];
-        s3 =
-            Td0[(t3 >> 24)       ] ^
-            Td1[(t2 >> 16) & 0xff] ^
-            Td2[(t1 >>  8) & 0xff] ^
-            Td3[(t0      ) & 0xff] ^
-            rk[3];
-    }
-#endif /* ?FULL_UNROLL */
-    /*
-        * apply last round and
-        * map cipher state to byte array block:
-        */
-       s0 =
-               (Td4[(t0 >> 24)       ] << 24) ^
-               (Td4[(t3 >> 16) & 0xff] << 16) ^
-               (Td4[(t2 >>  8) & 0xff] <<  8) ^
-               (Td4[(t1      ) & 0xff])       ^
-               rk[0];
-       PUTU32(out     , s0);
-       s1 =
-               (Td4[(t1 >> 24)       ] << 24) ^
-               (Td4[(t0 >> 16) & 0xff] << 16) ^
-               (Td4[(t3 >>  8) & 0xff] <<  8) ^
-               (Td4[(t2      ) & 0xff])       ^
-               rk[1];
-       PUTU32(out +  4, s1);
-       s2 =
-               (Td4[(t2 >> 24)       ] << 24) ^
-               (Td4[(t1 >> 16) & 0xff] << 16) ^
-               (Td4[(t0 >>  8) & 0xff] <<  8) ^
-               (Td4[(t3      ) & 0xff])       ^
-               rk[2];
-       PUTU32(out +  8, s2);
-       s3 =
-               (Td4[(t3 >> 24)       ] << 24) ^
-               (Td4[(t2 >> 16) & 0xff] << 16) ^
-               (Td4[(t1 >>  8) & 0xff] <<  8) ^
-               (Td4[(t0      ) & 0xff])       ^
-               rk[3];
-       PUTU32(out + 12, s3);
-}
-
-#endif /* AES_ASM */
-#endif
diff --git a/fips-1.0/aes/fips_aes_locl.h b/fips-1.0/aes/fips_aes_locl.h
deleted file mode 100644 (file)
index 054b442..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
-/* ====================================================================
- * Copyright (c) 1998-2002 The OpenSSL Project.  All rights reserved.
- *
- * 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.
- *
- * 3. All advertising materials mentioning features or use of this
- *    software must display the following acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For written permission, please contact
- *    openssl-core@openssl.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- *    nor may "OpenSSL" appear in their names without prior written
- *    permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED 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 OpenSSL PROJECT OR
- * ITS 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 HEADER_AES_LOCL_H
-#define HEADER_AES_LOCL_H
-
-#include <openssl/e_os2.h>
-
-#ifdef OPENSSL_NO_AES
-#error AES is disabled.
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64))
-# define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
-# define GETU32(p) SWAP(*((u32 *)(p)))
-# define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
-#else
-# define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] <<  8) ^ ((u32)(pt)[3]))
-# define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >>  8); (ct)[3] = (u8)(st); }
-#endif
-
-#ifdef AES_LONG
-typedef unsigned long u32;
-#else
-typedef unsigned int u32;
-#endif
-typedef unsigned short u16;
-typedef unsigned char u8;
-
-#define MAXKC   (256/32)
-#define MAXKB   (256/8)
-#define MAXNR   14
-
-/* This controls loop-unrolling in aes_core.c */
-#undef FULL_UNROLL
-
-#endif /* !HEADER_AES_LOCL_H */
diff --git a/fips-1.0/des/fips_des_enc.c b/fips-1.0/des/fips_des_enc.c
deleted file mode 100644 (file)
index 40e25ef..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-/* crypto/des/des_enc.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * 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 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include "fips_des_locl.h"
-#include <openssl/fips.h>
-
-#ifdef OPENSSL_FIPS
-
-void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
-       {
-       register DES_LONG l,r,t,u;
-#ifdef DES_PTR
-       register const unsigned char *des_SP=(const unsigned char *)DES_SPtrans;
-#endif
-#ifndef DES_UNROLL
-       register int i;
-#endif
-       register DES_LONG *s;
-
-       if(FIPS_selftest_failed())
-           {
-           data[0]=data[1]=0;
-           return;
-           }
-
-       r=data[0];
-       l=data[1];
-
-       IP(r,l);
-       /* Things have been modified so that the initial rotate is
-        * done outside the loop.  This required the
-        * DES_SPtrans values in sp.h to be rotated 1 bit to the right.
-        * One perl script later and things have a 5% speed up on a sparc2.
-        * Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
-        * for pointing this out. */
-       /* clear the top bits on machines with 8byte longs */
-       /* shift left by 2 */
-       r=ROTATE(r,29)&0xffffffffL;
-       l=ROTATE(l,29)&0xffffffffL;
-
-       s=ks->ks->deslong;
-       /* I don't know if it is worth the effort of loop unrolling the
-        * inner loop */
-       if (enc)
-               {
-#ifdef DES_UNROLL
-               D_ENCRYPT(l,r, 0); /*  1 */
-               D_ENCRYPT(r,l, 2); /*  2 */
-               D_ENCRYPT(l,r, 4); /*  3 */
-               D_ENCRYPT(r,l, 6); /*  4 */
-               D_ENCRYPT(l,r, 8); /*  5 */
-               D_ENCRYPT(r,l,10); /*  6 */
-               D_ENCRYPT(l,r,12); /*  7 */
-               D_ENCRYPT(r,l,14); /*  8 */
-               D_ENCRYPT(l,r,16); /*  9 */
-               D_ENCRYPT(r,l,18); /*  10 */
-               D_ENCRYPT(l,r,20); /*  11 */
-               D_ENCRYPT(r,l,22); /*  12 */
-               D_ENCRYPT(l,r,24); /*  13 */
-               D_ENCRYPT(r,l,26); /*  14 */
-               D_ENCRYPT(l,r,28); /*  15 */
-               D_ENCRYPT(r,l,30); /*  16 */
-#else
-               for (i=0; i<32; i+=8)
-                       {
-                       D_ENCRYPT(l,r,i+0); /*  1 */
-                       D_ENCRYPT(r,l,i+2); /*  2 */
-                       D_ENCRYPT(l,r,i+4); /*  3 */
-                       D_ENCRYPT(r,l,i+6); /*  4 */
-                       }
-#endif
-               }
-       else
-               {
-#ifdef DES_UNROLL
-               D_ENCRYPT(l,r,30); /* 16 */
-               D_ENCRYPT(r,l,28); /* 15 */
-               D_ENCRYPT(l,r,26); /* 14 */
-               D_ENCRYPT(r,l,24); /* 13 */
-               D_ENCRYPT(l,r,22); /* 12 */
-               D_ENCRYPT(r,l,20); /* 11 */
-               D_ENCRYPT(l,r,18); /* 10 */
-               D_ENCRYPT(r,l,16); /*  9 */
-               D_ENCRYPT(l,r,14); /*  8 */
-               D_ENCRYPT(r,l,12); /*  7 */
-               D_ENCRYPT(l,r,10); /*  6 */
-               D_ENCRYPT(r,l, 8); /*  5 */
-               D_ENCRYPT(l,r, 6); /*  4 */
-               D_ENCRYPT(r,l, 4); /*  3 */
-               D_ENCRYPT(l,r, 2); /*  2 */
-               D_ENCRYPT(r,l, 0); /*  1 */
-#else
-               for (i=30; i>0; i-=8)
-                       {
-                       D_ENCRYPT(l,r,i-0); /* 16 */
-                       D_ENCRYPT(r,l,i-2); /* 15 */
-                       D_ENCRYPT(l,r,i-4); /* 14 */
-                       D_ENCRYPT(r,l,i-6); /* 13 */
-                       }
-#endif
-               }
-
-       /* rotate and clear the top bits on machines with 8byte longs */
-       l=ROTATE(l,3)&0xffffffffL;
-       r=ROTATE(r,3)&0xffffffffL;
-
-       FP(r,l);
-       data[0]=l;
-       data[1]=r;
-       l=r=t=u=0;
-       }
-
-void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
-       {
-       register DES_LONG l,r,t,u;
-#ifdef DES_PTR
-       register const unsigned char *des_SP=(const unsigned char *)DES_SPtrans;
-#endif
-#ifndef DES_UNROLL
-       register int i;
-#endif
-       register DES_LONG *s;
-
-       if(FIPS_selftest_failed())
-           {
-           data[0]=data[1]=0;
-           return;
-           }
-
-       r=data[0];
-       l=data[1];
-
-       /* Things have been modified so that the initial rotate is
-        * done outside the loop.  This required the
-        * DES_SPtrans values in sp.h to be rotated 1 bit to the right.
-        * One perl script later and things have a 5% speed up on a sparc2.
-        * Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
-        * for pointing this out. */
-       /* clear the top bits on machines with 8byte longs */
-       r=ROTATE(r,29)&0xffffffffL;
-       l=ROTATE(l,29)&0xffffffffL;
-
-       s=ks->ks->deslong;
-       /* I don't know if it is worth the effort of loop unrolling the
-        * inner loop */
-       if (enc)
-               {
-#ifdef DES_UNROLL
-               D_ENCRYPT(l,r, 0); /*  1 */
-               D_ENCRYPT(r,l, 2); /*  2 */
-               D_ENCRYPT(l,r, 4); /*  3 */
-               D_ENCRYPT(r,l, 6); /*  4 */
-               D_ENCRYPT(l,r, 8); /*  5 */
-               D_ENCRYPT(r,l,10); /*  6 */
-               D_ENCRYPT(l,r,12); /*  7 */
-               D_ENCRYPT(r,l,14); /*  8 */
-               D_ENCRYPT(l,r,16); /*  9 */
-               D_ENCRYPT(r,l,18); /*  10 */
-               D_ENCRYPT(l,r,20); /*  11 */
-               D_ENCRYPT(r,l,22); /*  12 */
-               D_ENCRYPT(l,r,24); /*  13 */
-               D_ENCRYPT(r,l,26); /*  14 */
-               D_ENCRYPT(l,r,28); /*  15 */
-               D_ENCRYPT(r,l,30); /*  16 */
-#else
-               for (i=0; i<32; i+=8)
-                       {
-                       D_ENCRYPT(l,r,i+0); /*  1 */
-                       D_ENCRYPT(r,l,i+2); /*  2 */
-                       D_ENCRYPT(l,r,i+4); /*  3 */
-                       D_ENCRYPT(r,l,i+6); /*  4 */
-                       }
-#endif
-               }
-       else
-               {
-#ifdef DES_UNROLL
-               D_ENCRYPT(l,r,30); /* 16 */
-               D_ENCRYPT(r,l,28); /* 15 */
-               D_ENCRYPT(l,r,26); /* 14 */
-               D_ENCRYPT(r,l,24); /* 13 */
-               D_ENCRYPT(l,r,22); /* 12 */
-               D_ENCRYPT(r,l,20); /* 11 */
-               D_ENCRYPT(l,r,18); /* 10 */
-               D_ENCRYPT(r,l,16); /*  9 */
-               D_ENCRYPT(l,r,14); /*  8 */
-               D_ENCRYPT(r,l,12); /*  7 */
-               D_ENCRYPT(l,r,10); /*  6 */
-               D_ENCRYPT(r,l, 8); /*  5 */
-               D_ENCRYPT(l,r, 6); /*  4 */
-               D_ENCRYPT(r,l, 4); /*  3 */
-               D_ENCRYPT(l,r, 2); /*  2 */
-               D_ENCRYPT(r,l, 0); /*  1 */
-#else
-               for (i=30; i>0; i-=8)
-                       {
-                       D_ENCRYPT(l,r,i-0); /* 16 */
-                       D_ENCRYPT(r,l,i-2); /* 15 */
-                       D_ENCRYPT(l,r,i-4); /* 14 */
-                       D_ENCRYPT(r,l,i-6); /* 13 */
-                       }
-#endif
-               }
-       /* rotate and clear the top bits on machines with 8byte longs */
-       data[0]=ROTATE(l,3)&0xffffffffL;
-       data[1]=ROTATE(r,3)&0xffffffffL;
-       l=r=t=u=0;
-       }
-
-void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
-                 DES_key_schedule *ks2, DES_key_schedule *ks3)
-       {
-       register DES_LONG l,r;
-
-       l=data[0];
-       r=data[1];
-       IP(l,r);
-       data[0]=l;
-       data[1]=r;
-       DES_encrypt2((DES_LONG *)data,ks1,DES_ENCRYPT);
-       DES_encrypt2((DES_LONG *)data,ks2,DES_DECRYPT);
-       DES_encrypt2((DES_LONG *)data,ks3,DES_ENCRYPT);
-       l=data[0];
-       r=data[1];
-       FP(r,l);
-       data[0]=l;
-       data[1]=r;
-       }
-
-void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
-                 DES_key_schedule *ks2, DES_key_schedule *ks3)
-       {
-       register DES_LONG l,r;
-
-       l=data[0];
-       r=data[1];
-       IP(l,r);
-       data[0]=l;
-       data[1]=r;
-       DES_encrypt2((DES_LONG *)data,ks3,DES_DECRYPT);
-       DES_encrypt2((DES_LONG *)data,ks2,DES_ENCRYPT);
-       DES_encrypt2((DES_LONG *)data,ks1,DES_DECRYPT);
-       l=data[0];
-       r=data[1];
-       FP(r,l);
-       data[0]=l;
-       data[1]=r;
-       }
-
-#else /* ndef OPENSSL_FIPS */
-
-static void *dummy=&dummy;
-
-#endif /* ndef OPENSSL_FIPS */
-
diff --git a/fips-1.0/des/fips_des_locl.h b/fips-1.0/des/fips_des_locl.h
deleted file mode 100644 (file)
index 5c466a5..0000000
+++ /dev/null
@@ -1,428 +0,0 @@
-/* crypto/des/des_locl.h */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * 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 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef HEADER_DES_LOCL_H
-#define HEADER_DES_LOCL_H
-
-#include "e_os.h"
-
-#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
-#ifndef OPENSSL_SYS_MSDOS
-#define OPENSSL_SYS_MSDOS
-#endif
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#ifndef OPENSSL_SYS_MSDOS
-#if !defined(OPENSSL_SYS_VMS) || defined(__DECC)
-#ifdef OPENSSL_UNISTD
-# include OPENSSL_UNISTD
-#else
-# include <unistd.h>
-#endif
-#include <math.h>
-#endif
-#endif
-#include <openssl/des.h>
-
-#ifdef OPENSSL_SYS_MSDOS               /* Visual C++ 2.1 (Windows NT/95) */
-#include <stdlib.h>
-#include <errno.h>
-#include <time.h>
-#include <io.h>
-#endif
-
-#if defined(__STDC__) || defined(OPENSSL_SYS_VMS) || defined(M_XENIX) || defined(OPENSSL_SYS_MSDOS)
-#include <string.h>
-#endif
-
-#ifdef OPENSSL_BUILD_SHLIBCRYPTO
-# undef OPENSSL_EXTERN
-# define OPENSSL_EXTERN OPENSSL_EXPORT
-#endif
-
-#define ITERATIONS 16
-#define HALF_ITERATIONS 8
-
-/* used in des_read and des_write */
-#define MAXWRITE       (1024*16)
-#define BSIZE          (MAXWRITE+4)
-
-#define c2l(c,l)       (l =((DES_LONG)(*((c)++)))    , \
-                        l|=((DES_LONG)(*((c)++)))<< 8L, \
-                        l|=((DES_LONG)(*((c)++)))<<16L, \
-                        l|=((DES_LONG)(*((c)++)))<<24L)
-
-/* NOTE - c is not incremented as per c2l */
-#define c2ln(c,l1,l2,n)        { \
-                       c+=n; \
-                       l1=l2=0; \
-                       switch (n) { \
-                       case 8: l2 =((DES_LONG)(*(--(c))))<<24L; \
-                       case 7: l2|=((DES_LONG)(*(--(c))))<<16L; \
-                       case 6: l2|=((DES_LONG)(*(--(c))))<< 8L; \
-                       case 5: l2|=((DES_LONG)(*(--(c))));     \
-                       case 4: l1 =((DES_LONG)(*(--(c))))<<24L; \
-                       case 3: l1|=((DES_LONG)(*(--(c))))<<16L; \
-                       case 2: l1|=((DES_LONG)(*(--(c))))<< 8L; \
-                       case 1: l1|=((DES_LONG)(*(--(c))));     \
-                               } \
-                       }
-
-#define l2c(l,c)       (*((c)++)=(unsigned char)(((l)     )&0xff), \
-                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>24L)&0xff))
-
-/* replacements for htonl and ntohl since I have no idea what to do
- * when faced with machines with 8 byte longs. */
-#define HDRSIZE 4
-
-#define n2l(c,l)       (l =((DES_LONG)(*((c)++)))<<24L, \
-                        l|=((DES_LONG)(*((c)++)))<<16L, \
-                        l|=((DES_LONG)(*((c)++)))<< 8L, \
-                        l|=((DES_LONG)(*((c)++))))
-
-#define l2n(l,c)       (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)     )&0xff))
-
-/* NOTE - c is not incremented as per l2c */
-#define l2cn(l1,l2,c,n)        { \
-                       c+=n; \
-                       switch (n) { \
-                       case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
-                       case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
-                       case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
-                       case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \
-                       case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
-                       case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
-                       case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
-                       case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \
-                               } \
-                       }
-
-#if defined(OPENSSL_SYS_WIN32) && defined(_MSC_VER)
-#define        ROTATE(a,n)     (_lrotr(a,n))
-#elif defined(__GNUC__) && __GNUC__>=2 && !defined(__STRICT_ANSI__) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) && !defined(PEDANTIC)
-# if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
-#  define ROTATE(a,n)  ({ register unsigned int ret;   \
-                               asm ("rorl %1,%0"       \
-                                       : "=r"(ret)     \
-                                       : "I"(n),"0"(a) \
-                                       : "cc");        \
-                          ret;                         \
-                       })
-# endif
-#endif
-#ifndef ROTATE
-#define        ROTATE(a,n)     (((a)>>(n))+((a)<<(32-(n))))
-#endif
-
-/* Don't worry about the LOAD_DATA() stuff, that is used by
- * fcrypt() to add it's little bit to the front */
-
-#ifdef DES_FCRYPT
-
-#define LOAD_DATA_tmp(R,S,u,t,E0,E1) \
-       { DES_LONG tmp; LOAD_DATA(R,S,u,t,E0,E1,tmp); }
-
-#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
-       t=R^(R>>16L); \
-       u=t&E0; t&=E1; \
-       tmp=(u<<16); u^=R^s[S  ]; u^=tmp; \
-       tmp=(t<<16); t^=R^s[S+1]; t^=tmp
-#else
-#define LOAD_DATA_tmp(a,b,c,d,e,f) LOAD_DATA(a,b,c,d,e,f,g)
-#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
-       u=R^s[S  ]; \
-       t=R^s[S+1]
-#endif
-
-/* The changes to this macro may help or hinder, depending on the
- * compiler and the architecture.  gcc2 always seems to do well :-).
- * Inspired by Dana How <how@isl.stanford.edu>
- * DO NOT use the alternative version on machines with 8 byte longs.
- * It does not seem to work on the Alpha, even when DES_LONG is 4
- * bytes, probably an issue of accessing non-word aligned objects :-( */
-#ifdef DES_PTR
-
-/* It recently occurred to me that 0^0^0^0^0^0^0 == 0, so there
- * is no reason to not xor all the sub items together.  This potentially
- * saves a register since things can be xored directly into L */
-
-#if defined(DES_RISC1) || defined(DES_RISC2)
-#ifdef DES_RISC1
-#define D_ENCRYPT(LL,R,S) { \
-       unsigned int u1,u2,u3; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0xfc; \
-       u2&=0xfc; \
-       t=ROTATE(t,4); \
-       u>>=16L; \
-       LL^= *(const DES_LONG *)(des_SP      +u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
-       u3=(int)(u>>8L); \
-       u1=(int)u&0xfc; \
-       u3&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x400+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x600+u3); \
-       u2=(int)t>>8L; \
-       u1=(int)t&0xfc; \
-       u2&=0xfc; \
-       t>>=16L; \
-       LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
-       u3=(int)t>>8L; \
-       u1=(int)t&0xfc; \
-       u3&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x500+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x700+u3); }
-#endif
-#ifdef DES_RISC2
-#define D_ENCRYPT(LL,R,S) { \
-       unsigned int u1,u2,s1,s2; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0xfc; \
-       u2&=0xfc; \
-       t=ROTATE(t,4); \
-       LL^= *(const DES_LONG *)(des_SP      +u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
-       s1=(int)(u>>16L); \
-       s2=(int)(u>>24L); \
-       s1&=0xfc; \
-       s2&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x400+s1); \
-       LL^= *(const DES_LONG *)(des_SP+0x600+s2); \
-       u2=(int)t>>8L; \
-       u1=(int)t&0xfc; \
-       u2&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
-       s1=(int)(t>>16L); \
-       s2=(int)(t>>24L); \
-       s1&=0xfc; \
-       s2&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x500+s1); \
-       LL^= *(const DES_LONG *)(des_SP+0x700+s2); }
-#endif
-#else
-#define D_ENCRYPT(LL,R,S) { \
-       LOAD_DATA_tmp(R,S,u,t,E0,E1); \
-       t=ROTATE(t,4); \
-       LL^= \
-       *(const DES_LONG *)(des_SP      +((u     )&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x200+((u>> 8L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x400+((u>>16L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x600+((u>>24L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x100+((t     )&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x300+((t>> 8L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x500+((t>>16L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x700+((t>>24L)&0xfc)); }
-#endif
-
-#else /* original version */
-
-#if defined(DES_RISC1) || defined(DES_RISC2)
-#ifdef DES_RISC1
-#define D_ENCRYPT(LL,R,S) {\
-       unsigned int u1,u2,u3; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u>>=2L; \
-       t=ROTATE(t,6); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0x3f; \
-       u2&=0x3f; \
-       u>>=16L; \
-       LL^=DES_SPtrans[0][u1]; \
-       LL^=DES_SPtrans[2][u2]; \
-       u3=(int)u>>8L; \
-       u1=(int)u&0x3f; \
-       u3&=0x3f; \
-       LL^=DES_SPtrans[4][u1]; \
-       LL^=DES_SPtrans[6][u3]; \
-       u2=(int)t>>8L; \
-       u1=(int)t&0x3f; \
-       u2&=0x3f; \
-       t>>=16L; \
-       LL^=DES_SPtrans[1][u1]; \
-       LL^=DES_SPtrans[3][u2]; \
-       u3=(int)t>>8L; \
-       u1=(int)t&0x3f; \
-       u3&=0x3f; \
-       LL^=DES_SPtrans[5][u1]; \
-       LL^=DES_SPtrans[7][u3]; }
-#endif
-#ifdef DES_RISC2
-#define D_ENCRYPT(LL,R,S) {\
-       unsigned int u1,u2,s1,s2; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u>>=2L; \
-       t=ROTATE(t,6); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0x3f; \
-       u2&=0x3f; \
-       LL^=DES_SPtrans[0][u1]; \
-       LL^=DES_SPtrans[2][u2]; \
-       s1=(int)u>>16L; \
-       s2=(int)u>>24L; \
-       s1&=0x3f; \
-       s2&=0x3f; \
-       LL^=DES_SPtrans[4][s1]; \
-       LL^=DES_SPtrans[6][s2]; \
-       u2=(int)t>>8L; \
-       u1=(int)t&0x3f; \
-       u2&=0x3f; \
-       LL^=DES_SPtrans[1][u1]; \
-       LL^=DES_SPtrans[3][u2]; \
-       s1=(int)t>>16; \
-       s2=(int)t>>24L; \
-       s1&=0x3f; \
-       s2&=0x3f; \
-       LL^=DES_SPtrans[5][s1]; \
-       LL^=DES_SPtrans[7][s2]; }
-#endif
-
-#else
-
-#define D_ENCRYPT(LL,R,S) {\
-       LOAD_DATA_tmp(R,S,u,t,E0,E1); \
-       t=ROTATE(t,4); \
-       LL^=\
-               DES_SPtrans[0][(u>> 2L)&0x3f]^ \
-               DES_SPtrans[2][(u>>10L)&0x3f]^ \
-               DES_SPtrans[4][(u>>18L)&0x3f]^ \
-               DES_SPtrans[6][(u>>26L)&0x3f]^ \
-               DES_SPtrans[1][(t>> 2L)&0x3f]^ \
-               DES_SPtrans[3][(t>>10L)&0x3f]^ \
-               DES_SPtrans[5][(t>>18L)&0x3f]^ \
-               DES_SPtrans[7][(t>>26L)&0x3f]; }
-#endif
-#endif
-
-       /* IP and FP
-        * The problem is more of a geometric problem that random bit fiddling.
-        0  1  2  3  4  5  6  7      62 54 46 38 30 22 14  6
-        8  9 10 11 12 13 14 15      60 52 44 36 28 20 12  4
-       16 17 18 19 20 21 22 23      58 50 42 34 26 18 10  2
-       24 25 26 27 28 29 30 31  to  56 48 40 32 24 16  8  0
-
-       32 33 34 35 36 37 38 39      63 55 47 39 31 23 15  7
-       40 41 42 43 44 45 46 47      61 53 45 37 29 21 13  5
-       48 49 50 51 52 53 54 55      59 51 43 35 27 19 11  3
-       56 57 58 59 60 61 62 63      57 49 41 33 25 17  9  1
-
-       The output has been subject to swaps of the form
-       0 1 -> 3 1 but the odd and even bits have been put into
-       2 3    2 0
-       different words.  The main trick is to remember that
-       t=((l>>size)^r)&(mask);
-       r^=t;
-       l^=(t<<size);
-       can be used to swap and move bits between words.
-
-       So l =  0  1  2  3  r = 16 17 18 19
-               4  5  6  7      20 21 22 23
-               8  9 10 11      24 25 26 27
-              12 13 14 15      28 29 30 31
-       becomes (for size == 2 and mask == 0x3333)
-          t =   2^16  3^17 -- --   l =  0  1 16 17  r =  2  3 18 19
-                6^20  7^21 -- --        4  5 20 21       6  7 22 23
-               10^24 11^25 -- --        8  9 24 25      10 11 24 25
-               14^28 15^29 -- --       12 13 28 29      14 15 28 29
-
-       Thanks for hints from Richard Outerbridge - he told me IP&FP
-       could be done in 15 xor, 10 shifts and 5 ands.
-       When I finally started to think of the problem in 2D
-       I first got ~42 operations without xors.  When I remembered
-       how to use xors :-) I got it to its final state.
-       */
-#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
-       (b)^=(t),\
-       (a)^=((t)<<(n)))
-
-#define IP(l,r) \
-       { \
-       register DES_LONG tt; \
-       PERM_OP(r,l,tt, 4,0x0f0f0f0fL); \
-       PERM_OP(l,r,tt,16,0x0000ffffL); \
-       PERM_OP(r,l,tt, 2,0x33333333L); \
-       PERM_OP(l,r,tt, 8,0x00ff00ffL); \
-       PERM_OP(r,l,tt, 1,0x55555555L); \
-       }
-
-#define FP(l,r) \
-       { \
-       register DES_LONG tt; \
-       PERM_OP(l,r,tt, 1,0x55555555L); \
-       PERM_OP(r,l,tt, 8,0x00ff00ffL); \
-       PERM_OP(l,r,tt, 2,0x33333333L); \
-       PERM_OP(r,l,tt,16,0x0000ffffL); \
-       PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
-       }
-
-extern const DES_LONG DES_SPtrans[8][64];
-
-void fcrypt_body(DES_LONG *out,DES_key_schedule *ks,
-                DES_LONG Eswap0, DES_LONG Eswap1);
-#endif
diff --git a/fips-1.0/des/fips_set_key.c b/fips-1.0/des/fips_set_key.c
deleted file mode 100644 (file)
index a508ee5..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-/* crypto/des/set_key.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * 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 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* set_key.c v 1.4 eay 24/9/91
- * 1.4 Speed up by 400% :-)
- * 1.3 added register declarations.
- * 1.2 unrolled make_key_sched a bit more
- * 1.1 added norm_expand_bits
- * 1.0 First working version
- */
-#include "fips_des_locl.h"
-#include <openssl/fips.h>
-
-#ifdef OPENSSL_FIPS
-
-OPENSSL_IMPLEMENT_GLOBAL(int,DES_check_key);   /* defaults to false */
-
-static const unsigned char odd_parity[256]={
-  1,  1,  2,  2,  4,  4,  7,  7,  8,  8, 11, 11, 13, 13, 14, 14,
- 16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
- 32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
- 49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
- 64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
- 81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
- 97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
-112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
-128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
-145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
-161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
-176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
-193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
-208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
-224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
-241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254};
-
-void DES_set_odd_parity(DES_cblock *key)
-       {
-       int i;
-
-       for (i=0; i<DES_KEY_SZ; i++)
-               (*key)[i]=odd_parity[(*key)[i]];
-       }
-
-int DES_check_key_parity(const_DES_cblock *key)
-       {
-       int i;
-
-       for (i=0; i<DES_KEY_SZ; i++)
-               {
-               if ((*key)[i] != odd_parity[(*key)[i]])
-                       return(0);
-               }
-       return(1);
-       }
-
-/* Weak and semi week keys as take from
- * %A D.W. Davies
- * %A W.L. Price
- * %T Security for Computer Networks
- * %I John Wiley & Sons
- * %D 1984
- * Many thanks to smb@ulysses.att.com (Steven Bellovin) for the reference
- * (and actual cblock values).
- */
-#define NUM_WEAK_KEY   16
-static const DES_cblock weak_keys[NUM_WEAK_KEY]={
-       /* weak keys */
-       {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
-       {0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE},
-       {0x1F,0x1F,0x1F,0x1F,0x0E,0x0E,0x0E,0x0E},
-       {0xE0,0xE0,0xE0,0xE0,0xF1,0xF1,0xF1,0xF1},
-       /* semi-weak keys */
-       {0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE},
-       {0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01},
-       {0x1F,0xE0,0x1F,0xE0,0x0E,0xF1,0x0E,0xF1},
-       {0xE0,0x1F,0xE0,0x1F,0xF1,0x0E,0xF1,0x0E},
-       {0x01,0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1},
-       {0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,0x01},
-       {0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E,0xFE},
-       {0xFE,0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E},
-       {0x01,0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E},
-       {0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E,0x01},
-       {0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE},
-       {0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1}};
-
-int DES_is_weak_key(const_DES_cblock *key)
-       {
-       int i;
-
-       for (i=0; i<NUM_WEAK_KEY; i++)
-               /* Added == 0 to comparison, I obviously don't run
-                * this section very often :-(, thanks to
-                * engineering@MorningStar.Com for the fix
-                * eay 93/06/29
-                * Another problem, I was comparing only the first 4
-                * bytes, 97/03/18 */
-               if (memcmp(weak_keys[i],key,sizeof(DES_cblock)) == 0) return(1);
-       return(0);
-       }
-
-/* NOW DEFINED IN des_local.h
- * See ecb_encrypt.c for a pseudo description of these macros. 
- * #define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
- *     (b)^=(t),\
- *     (a)=((a)^((t)<<(n))))
- */
-
-#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
-       (a)=(a)^(t)^(t>>(16-(n))))
-
-static const DES_LONG des_skb[8][64]={
-       {
-       /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-       0x00000000L,0x00000010L,0x20000000L,0x20000010L,
-       0x00010000L,0x00010010L,0x20010000L,0x20010010L,
-       0x00000800L,0x00000810L,0x20000800L,0x20000810L,
-       0x00010800L,0x00010810L,0x20010800L,0x20010810L,
-       0x00000020L,0x00000030L,0x20000020L,0x20000030L,
-       0x00010020L,0x00010030L,0x20010020L,0x20010030L,
-       0x00000820L,0x00000830L,0x20000820L,0x20000830L,
-       0x00010820L,0x00010830L,0x20010820L,0x20010830L,
-       0x00080000L,0x00080010L,0x20080000L,0x20080010L,
-       0x00090000L,0x00090010L,0x20090000L,0x20090010L,
-       0x00080800L,0x00080810L,0x20080800L,0x20080810L,
-       0x00090800L,0x00090810L,0x20090800L,0x20090810L,
-       0x00080020L,0x00080030L,0x20080020L,0x20080030L,
-       0x00090020L,0x00090030L,0x20090020L,0x20090030L,
-       0x00080820L,0x00080830L,0x20080820L,0x20080830L,
-       0x00090820L,0x00090830L,0x20090820L,0x20090830L,
-       },{
-       /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
-       0x00000000L,0x02000000L,0x00002000L,0x02002000L,
-       0x00200000L,0x02200000L,0x00202000L,0x02202000L,
-       0x00000004L,0x02000004L,0x00002004L,0x02002004L,
-       0x00200004L,0x02200004L,0x00202004L,0x02202004L,
-       0x00000400L,0x02000400L,0x00002400L,0x02002400L,
-       0x00200400L,0x02200400L,0x00202400L,0x02202400L,
-       0x00000404L,0x02000404L,0x00002404L,0x02002404L,
-       0x00200404L,0x02200404L,0x00202404L,0x02202404L,
-       0x10000000L,0x12000000L,0x10002000L,0x12002000L,
-       0x10200000L,0x12200000L,0x10202000L,0x12202000L,
-       0x10000004L,0x12000004L,0x10002004L,0x12002004L,
-       0x10200004L,0x12200004L,0x10202004L,0x12202004L,
-       0x10000400L,0x12000400L,0x10002400L,0x12002400L,
-       0x10200400L,0x12200400L,0x10202400L,0x12202400L,
-       0x10000404L,0x12000404L,0x10002404L,0x12002404L,
-       0x10200404L,0x12200404L,0x10202404L,0x12202404L,
-       },{
-       /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
-       0x00000000L,0x00000001L,0x00040000L,0x00040001L,
-       0x01000000L,0x01000001L,0x01040000L,0x01040001L,
-       0x00000002L,0x00000003L,0x00040002L,0x00040003L,
-       0x01000002L,0x01000003L,0x01040002L,0x01040003L,
-       0x00000200L,0x00000201L,0x00040200L,0x00040201L,
-       0x01000200L,0x01000201L,0x01040200L,0x01040201L,
-       0x00000202L,0x00000203L,0x00040202L,0x00040203L,
-       0x01000202L,0x01000203L,0x01040202L,0x01040203L,
-       0x08000000L,0x08000001L,0x08040000L,0x08040001L,
-       0x09000000L,0x09000001L,0x09040000L,0x09040001L,
-       0x08000002L,0x08000003L,0x08040002L,0x08040003L,
-       0x09000002L,0x09000003L,0x09040002L,0x09040003L,
-       0x08000200L,0x08000201L,0x08040200L,0x08040201L,
-       0x09000200L,0x09000201L,0x09040200L,0x09040201L,
-       0x08000202L,0x08000203L,0x08040202L,0x08040203L,
-       0x09000202L,0x09000203L,0x09040202L,0x09040203L,
-       },{
-       /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
-       0x00000000L,0x00100000L,0x00000100L,0x00100100L,
-       0x00000008L,0x00100008L,0x00000108L,0x00100108L,
-       0x00001000L,0x00101000L,0x00001100L,0x00101100L,
-       0x00001008L,0x00101008L,0x00001108L,0x00101108L,
-       0x04000000L,0x04100000L,0x04000100L,0x04100100L,
-       0x04000008L,0x04100008L,0x04000108L,0x04100108L,
-       0x04001000L,0x04101000L,0x04001100L,0x04101100L,
-       0x04001008L,0x04101008L,0x04001108L,0x04101108L,
-       0x00020000L,0x00120000L,0x00020100L,0x00120100L,
-       0x00020008L,0x00120008L,0x00020108L,0x00120108L,
-       0x00021000L,0x00121000L,0x00021100L,0x00121100L,
-       0x00021008L,0x00121008L,0x00021108L,0x00121108L,
-       0x04020000L,0x04120000L,0x04020100L,0x04120100L,
-       0x04020008L,0x04120008L,0x04020108L,0x04120108L,
-       0x04021000L,0x04121000L,0x04021100L,0x04121100L,
-       0x04021008L,0x04121008L,0x04021108L,0x04121108L,
-       },{
-       /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
-       0x00000000L,0x10000000L,0x00010000L,0x10010000L,
-       0x00000004L,0x10000004L,0x00010004L,0x10010004L,
-       0x20000000L,0x30000000L,0x20010000L,0x30010000L,
-       0x20000004L,0x30000004L,0x20010004L,0x30010004L,
-       0x00100000L,0x10100000L,0x00110000L,0x10110000L,
-       0x00100004L,0x10100004L,0x00110004L,0x10110004L,
-       0x20100000L,0x30100000L,0x20110000L,0x30110000L,
-       0x20100004L,0x30100004L,0x20110004L,0x30110004L,
-       0x00001000L,0x10001000L,0x00011000L,0x10011000L,
-       0x00001004L,0x10001004L,0x00011004L,0x10011004L,
-       0x20001000L,0x30001000L,0x20011000L,0x30011000L,
-       0x20001004L,0x30001004L,0x20011004L,0x30011004L,
-       0x00101000L,0x10101000L,0x00111000L,0x10111000L,
-       0x00101004L,0x10101004L,0x00111004L,0x10111004L,
-       0x20101000L,0x30101000L,0x20111000L,0x30111000L,
-       0x20101004L,0x30101004L,0x20111004L,0x30111004L,
-       },{
-       /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
-       0x00000000L,0x08000000L,0x00000008L,0x08000008L,
-       0x00000400L,0x08000400L,0x00000408L,0x08000408L,
-       0x00020000L,0x08020000L,0x00020008L,0x08020008L,
-       0x00020400L,0x08020400L,0x00020408L,0x08020408L,
-       0x00000001L,0x08000001L,0x00000009L,0x08000009L,
-       0x00000401L,0x08000401L,0x00000409L,0x08000409L,
-       0x00020001L,0x08020001L,0x00020009L,0x08020009L,
-       0x00020401L,0x08020401L,0x00020409L,0x08020409L,
-       0x02000000L,0x0A000000L,0x02000008L,0x0A000008L,
-       0x02000400L,0x0A000400L,0x02000408L,0x0A000408L,
-       0x02020000L,0x0A020000L,0x02020008L,0x0A020008L,
-       0x02020400L,0x0A020400L,0x02020408L,0x0A020408L,
-       0x02000001L,0x0A000001L,0x02000009L,0x0A000009L,
-       0x02000401L,0x0A000401L,0x02000409L,0x0A000409L,
-       0x02020001L,0x0A020001L,0x02020009L,0x0A020009L,
-       0x02020401L,0x0A020401L,0x02020409L,0x0A020409L,
-       },{
-       /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
-       0x00000000L,0x00000100L,0x00080000L,0x00080100L,
-       0x01000000L,0x01000100L,0x01080000L,0x01080100L,
-       0x00000010L,0x00000110L,0x00080010L,0x00080110L,
-       0x01000010L,0x01000110L,0x01080010L,0x01080110L,
-       0x00200000L,0x00200100L,0x00280000L,0x00280100L,
-       0x01200000L,0x01200100L,0x01280000L,0x01280100L,
-       0x00200010L,0x00200110L,0x00280010L,0x00280110L,
-       0x01200010L,0x01200110L,0x01280010L,0x01280110L,
-       0x00000200L,0x00000300L,0x00080200L,0x00080300L,
-       0x01000200L,0x01000300L,0x01080200L,0x01080300L,
-       0x00000210L,0x00000310L,0x00080210L,0x00080310L,
-       0x01000210L,0x01000310L,0x01080210L,0x01080310L,
-       0x00200200L,0x00200300L,0x00280200L,0x00280300L,
-       0x01200200L,0x01200300L,0x01280200L,0x01280300L,
-       0x00200210L,0x00200310L,0x00280210L,0x00280310L,
-       0x01200210L,0x01200310L,0x01280210L,0x01280310L,
-       },{
-       /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
-       0x00000000L,0x04000000L,0x00040000L,0x04040000L,
-       0x00000002L,0x04000002L,0x00040002L,0x04040002L,
-       0x00002000L,0x04002000L,0x00042000L,0x04042000L,
-       0x00002002L,0x04002002L,0x00042002L,0x04042002L,
-       0x00000020L,0x04000020L,0x00040020L,0x04040020L,
-       0x00000022L,0x04000022L,0x00040022L,0x04040022L,
-       0x00002020L,0x04002020L,0x00042020L,0x04042020L,
-       0x00002022L,0x04002022L,0x00042022L,0x04042022L,
-       0x00000800L,0x04000800L,0x00040800L,0x04040800L,
-       0x00000802L,0x04000802L,0x00040802L,0x04040802L,
-       0x00002800L,0x04002800L,0x00042800L,0x04042800L,
-       0x00002802L,0x04002802L,0x00042802L,0x04042802L,
-       0x00000820L,0x04000820L,0x00040820L,0x04040820L,
-       0x00000822L,0x04000822L,0x00040822L,0x04040822L,
-       0x00002820L,0x04002820L,0x00042820L,0x04042820L,
-       0x00002822L,0x04002822L,0x00042822L,0x04042822L,
-       }};
-
-int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule)
-       {
-       if (FIPS_selftest_failed())
-               return -3;
-       if (DES_check_key)
-               {
-               return DES_set_key_checked(key, schedule);
-               }
-       else
-               {
-               DES_set_key_unchecked(key, schedule);
-               return 0;
-               }
-       }
-
-/* return 0 if key parity is odd (correct),
- * return -1 if key parity error,
- * return -2 if illegal weak key.
- */
-int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule)
-       {
-       if (!DES_check_key_parity(key))
-               return(-1);
-       if (DES_is_weak_key(key))
-               return(-2);
-       if (FIPS_selftest_failed())
-               return -3;
-
-       DES_set_key_unchecked(key, schedule);
-       return 0;
-       }
-
-void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
-       {
-       static const int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
-       register DES_LONG c,d,t,s,t2;
-       register const unsigned char *in;
-       register DES_LONG *k;
-       register int i;
-
-#ifdef OPENBSD_DEV_CRYPTO
-       memcpy(schedule->key,key,sizeof schedule->key);
-       schedule->session=NULL;
-#endif
-       k = &schedule->ks->deslong[0];
-       in = &(*key)[0];
-
-       c2l(in,c);
-       c2l(in,d);
-
-       /* do PC1 in 47 simple operations :-)
-        * Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
-        * for the inspiration. :-) */
-       PERM_OP (d,c,t,4,0x0f0f0f0fL);
-       HPERM_OP(c,t,-2,0xcccc0000L);
-       HPERM_OP(d,t,-2,0xcccc0000L);
-       PERM_OP (d,c,t,1,0x55555555L);
-       PERM_OP (c,d,t,8,0x00ff00ffL);
-       PERM_OP (d,c,t,1,0x55555555L);
-       d=      (((d&0x000000ffL)<<16L)| (d&0x0000ff00L)     |
-                ((d&0x00ff0000L)>>16L)|((c&0xf0000000L)>>4L));
-       c&=0x0fffffffL;
-
-       for (i=0; i<ITERATIONS; i++)
-               {
-               if (shifts2[i])
-                       { c=((c>>2L)|(c<<26L)); d=((d>>2L)|(d<<26L)); }
-               else
-                       { c=((c>>1L)|(c<<27L)); d=((d>>1L)|(d<<27L)); }
-               c&=0x0fffffffL;
-               d&=0x0fffffffL;
-               /* could be a few less shifts but I am to lazy at this
-                * point in time to investigate */
-               s=      des_skb[0][ (c    )&0x3f                ]|
-                       des_skb[1][((c>> 6L)&0x03)|((c>> 7L)&0x3c)]|
-                       des_skb[2][((c>>13L)&0x0f)|((c>>14L)&0x30)]|
-                       des_skb[3][((c>>20L)&0x01)|((c>>21L)&0x06) |
-                                                 ((c>>22L)&0x38)];
-               t=      des_skb[4][ (d    )&0x3f                ]|
-                       des_skb[5][((d>> 7L)&0x03)|((d>> 8L)&0x3c)]|
-                       des_skb[6][ (d>>15L)&0x3f                ]|
-                       des_skb[7][((d>>21L)&0x0f)|((d>>22L)&0x30)];
-
-               /* table contained 0213 4657 */
-               t2=((t<<16L)|(s&0x0000ffffL))&0xffffffffL;
-               *(k++)=ROTATE(t2,30)&0xffffffffL;
-
-               t2=((s>>16L)|(t&0xffff0000L));
-               *(k++)=ROTATE(t2,26)&0xffffffffL;
-               }
-       }
-
-int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule)
-       {
-       return(DES_set_key(key,schedule));
-       }
-/*
-#undef des_fixup_key_parity
-void des_fixup_key_parity(des_cblock *key)
-       {
-       des_set_odd_parity(key);
-       }
-*/
-
-#endif /* def OPENSSL_FIPS */
index ae654e64d2e2de6d1a01ac64212b5a14b1be0c26..06c4b9cb0146c1d52bd1926414942d10e406de4d 100644 (file)
@@ -91,14 +91,14 @@ fips_dsa_gen.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 fips_dsa_gen.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
 fips_dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 fips_dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-fips_dsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/fips_sha.h
-fips_dsa_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-fips_dsa_gen.o: ../../include/openssl/objects.h
+fips_dsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
+fips_dsa_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 fips_dsa_gen.o: ../../include/openssl/opensslconf.h
 fips_dsa_gen.o: ../../include/openssl/opensslv.h
 fips_dsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
-fips_dsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
-fips_dsa_gen.o: ../../include/openssl/symhacks.h fips_dsa_gen.c
+fips_dsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
+fips_dsa_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
+fips_dsa_gen.o: fips_dsa_gen.c
 fips_dsa_key.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 fips_dsa_key.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
 fips_dsa_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
@@ -168,9 +168,8 @@ fips_dssvs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 fips_dssvs.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
 fips_dssvs.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
 fips_dssvs.o: ../../include/openssl/err.h ../../include/openssl/evp.h
-fips_dssvs.o: ../../include/openssl/fips.h ../../include/openssl/fips_sha.h
-fips_dssvs.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
-fips_dssvs.o: ../../include/openssl/objects.h
+fips_dssvs.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
+fips_dssvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
 fips_dssvs.o: ../../include/openssl/opensslconf.h
 fips_dssvs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
 fips_dssvs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
index 7e5f03dba9d57ceebcddc179ce14f0feb10e14c8..9e05ed20718bcff69463249fc6c3192264cd2cb3 100644 (file)
@@ -80,7 +80,7 @@
 #include <openssl/bn.h>
 #include <openssl/dsa.h>
 #include <openssl/rand.h>
-#include <openssl/fips_sha.h>
+#include <openssl/sha.h>
 #include <openssl/err.h>
 
 #ifdef OPENSSL_FIPS
index e1fb00ffbcb185a921e0e40aa2968b07c0f4aa88..6aa82d0e312e1850ff2e579ae5368cb54298d463 100644 (file)
@@ -15,7 +15,6 @@ int main()
 #include <openssl/fips.h>
 #include <openssl/err.h>
 #include <openssl/evp.h>
-#include <openssl/fips_sha.h>
 #include <string.h>
 #include <ctype.h>
 
index 7ec593129506fd7d6a0e85842bbec5dd9d33161e..7da954654e52a8a320414817a29656535c3d0302 100644 (file)
 #include <openssl/rsa.h>
 #include <openssl/dsa.h>
 #include <openssl/hmac.h>
-#include <openssl/fips_sha.h>
 #include <openssl/err.h>
 #include <openssl/fips.h>
 #include <openssl/bn.h>
 #include <openssl/rand.h>
+#include <openssl/sha.h>
 
 
 #ifndef OPENSSL_FIPS
index 2b7e7325133ab95b6f244f78d758f88de538cca1..36f4307a5f651098405e53a6e33a75f0affd1012 100644 (file)
@@ -129,7 +129,6 @@ fips_rsa_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
 fips_rsa_selftest.o: ../../include/openssl/crypto.h
 fips_rsa_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
 fips_rsa_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
-fips_rsa_selftest.o: ../../include/openssl/fips_sha.h
 fips_rsa_selftest.o: ../../include/openssl/lhash.h
 fips_rsa_selftest.o: ../../include/openssl/obj_mac.h
 fips_rsa_selftest.o: ../../include/openssl/objects.h
index 4cd4a1da0fd1b331470f7ee100a1adee3dadbe01..eecfb60312ad7947fe50eb116c6b266a39fb901c 100644 (file)
@@ -52,7 +52,6 @@
 #include <openssl/fips.h>
 #include <openssl/rsa.h>
 #include <openssl/evp.h>
-#include <openssl/fips_sha.h>
 #include <openssl/opensslconf.h>
 
 #ifdef OPENSSL_FIPS
index 33225b5bc58d1d0548a3bd21959da6f5bcacd4ca..6bad8e243dfbc3b6e1e07ccfd1a1158fc838291d 100644 (file)
@@ -47,9 +47,9 @@ lib:  $(LIBOBJ)
        @echo $(LIBOBJ) > lib
 
 fips_standalone_sha1$(EXE_EXT): fips_standalone_sha1.o
-       FIPS_SHA_ASM=""; for i in $(SHA1_ASM_OBJ) ; do FIPS_SHA_ASM="$$FIPS_SHA_ASM ../../crypto/sha/$$i" ; done; \
+       FIPS_SHA_ASM=""; for i in $(SHA1_ASM_OBJ) sha1dgst.o ; do FIPS_SHA_ASM="$$FIPS_SHA_ASM ../../crypto/sha/$$i" ; done; \
        $(CC) -o fips_standalone_sha1$(EXE_EXT) $(CFLAGS) \
-               fips_standalone_sha1.o ../crypto/sha/sha1dgst.o $$FIPS_SHA_ASM
+               fips_standalone_sha1.o $$FIPS_SHA_ASM
 
 files:
        $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -149,7 +149,6 @@ fips_standalone_sha1.o: ../../include/openssl/crypto.h
 fips_standalone_sha1.o: ../../include/openssl/e_os2.h
 fips_standalone_sha1.o: ../../include/openssl/evp.h
 fips_standalone_sha1.o: ../../include/openssl/fips.h
-fips_standalone_sha1.o: ../../include/openssl/fips_sha.h
 fips_standalone_sha1.o: ../../include/openssl/hmac.h
 fips_standalone_sha1.o: ../../include/openssl/obj_mac.h
 fips_standalone_sha1.o: ../../include/openssl/objects.h
@@ -157,5 +156,6 @@ fips_standalone_sha1.o: ../../include/openssl/opensslconf.h
 fips_standalone_sha1.o: ../../include/openssl/opensslv.h
 fips_standalone_sha1.o: ../../include/openssl/ossl_typ.h
 fips_standalone_sha1.o: ../../include/openssl/safestack.h
+fips_standalone_sha1.o: ../../include/openssl/sha.h
 fips_standalone_sha1.o: ../../include/openssl/stack.h
 fips_standalone_sha1.o: ../../include/openssl/symhacks.h fips_standalone_sha1.c
diff --git a/fips-1.0/sha/fips_md32_common.h b/fips-1.0/sha/fips_md32_common.h
deleted file mode 100644 (file)
index b5ad231..0000000
+++ /dev/null
@@ -1,623 +0,0 @@
-/* crypto/md32_common.h */
-/* ====================================================================
- * Copyright (c) 1999-2002 The OpenSSL Project.  All rights reserved.
- *
- * 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.
- *
- * 3. All advertising materials mentioning features or use of this
- *    software must display the following acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For written permission, please contact
- *    licensing@OpenSSL.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- *    nor may "OpenSSL" appear in their names without prior written
- *    permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED 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 OpenSSL PROJECT OR
- * ITS 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.
- * ====================================================================
- *
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com).  This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
-/*
- * This is a generic 32 bit "collector" for message digest algorithms.
- * Whenever needed it collects input character stream into chunks of
- * 32 bit values and invokes a block function that performs actual hash
- * calculations.
- *
- * Porting guide.
- *
- * Obligatory macros:
- *
- * DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN
- *     this macro defines byte order of input stream.
- * HASH_CBLOCK
- *     size of a unit chunk HASH_BLOCK operates on.
- * HASH_LONG
- *     has to be at lest 32 bit wide, if it's wider, then
- *     HASH_LONG_LOG2 *has to* be defined along
- * HASH_CTX
- *     context structure that at least contains following
- *     members:
- *             typedef struct {
- *                     ...
- *                     HASH_LONG       Nl,Nh;
- *                     HASH_LONG       data[HASH_LBLOCK];
- *                     unsigned int    num;
- *                     ...
- *                     } HASH_CTX;
- * HASH_UPDATE
- *     name of "Update" function, implemented here.
- * HASH_TRANSFORM
- *     name of "Transform" function, implemented here.
- * HASH_FINAL
- *     name of "Final" function, implemented here.
- * HASH_BLOCK_HOST_ORDER
- *     name of "block" function treating *aligned* input message
- *     in host byte order, implemented externally.
- * HASH_BLOCK_DATA_ORDER
- *     name of "block" function treating *unaligned* input message
- *     in original (data) byte order, implemented externally (it
- *     actually is optional if data and host are of the same
- *     "endianess").
- * HASH_MAKE_STRING
- *     macro convering context variables to an ASCII hash string.
- *
- * Optional macros:
- *
- * B_ENDIAN or L_ENDIAN
- *     defines host byte-order.
- * HASH_LONG_LOG2
- *     defaults to 2 if not states otherwise.
- * HASH_LBLOCK
- *     assumed to be HASH_CBLOCK/4 if not stated otherwise.
- * HASH_BLOCK_DATA_ORDER_ALIGNED
- *     alternative "block" function capable of treating
- *     aligned input message in original (data) order,
- *     implemented externally.
- *
- * MD5 example:
- *
- *     #define DATA_ORDER_IS_LITTLE_ENDIAN
- *
- *     #define HASH_LONG               MD5_LONG
- *     #define HASH_LONG_LOG2          MD5_LONG_LOG2
- *     #define HASH_CTX                MD5_CTX
- *     #define HASH_CBLOCK             MD5_CBLOCK
- *     #define HASH_LBLOCK             MD5_LBLOCK
- *     #define HASH_UPDATE             MD5_Update
- *     #define HASH_TRANSFORM          MD5_Transform
- *     #define HASH_FINAL              MD5_Final
- *     #define HASH_BLOCK_HOST_ORDER   md5_block_host_order
- *     #define HASH_BLOCK_DATA_ORDER   md5_block_data_order
- *
- *                                     <appro@fy.chalmers.se>
- */
-
-#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-#error "DATA_ORDER must be defined!"
-#endif
-
-#ifndef HASH_CBLOCK
-#error "HASH_CBLOCK must be defined!"
-#endif
-#ifndef HASH_LONG
-#error "HASH_LONG must be defined!"
-#endif
-#ifndef HASH_CTX
-#error "HASH_CTX must be defined!"
-#endif
-
-#ifndef HASH_UPDATE
-#error "HASH_UPDATE must be defined!"
-#endif
-#ifndef HASH_TRANSFORM
-#error "HASH_TRANSFORM must be defined!"
-#endif
-#ifndef HASH_FINAL
-#error "HASH_FINAL must be defined!"
-#endif
-
-#ifndef HASH_BLOCK_HOST_ORDER
-#error "HASH_BLOCK_HOST_ORDER must be defined!"
-#endif
-
-#if 0
-/*
- * Moved below as it's required only if HASH_BLOCK_DATA_ORDER_ALIGNED
- * isn't defined.
- */
-#ifndef HASH_BLOCK_DATA_ORDER
-#error "HASH_BLOCK_DATA_ORDER must be defined!"
-#endif
-#endif
-
-#ifndef HASH_LBLOCK
-#define HASH_LBLOCK    (HASH_CBLOCK/4)
-#endif
-
-#ifndef HASH_LONG_LOG2
-#define HASH_LONG_LOG2 2
-#endif
-
-/*
- * Engage compiler specific rotate intrinsic function if available.
- */
-#undef ROTATE
-#ifndef PEDANTIC
-# if defined(_MSC_VER) || defined(__ICC)
-#  define ROTATE(a,n)  _lrotl(a,n)
-# elif defined(__MWERKS__)
-#  if defined(__POWERPC__)
-#   define ROTATE(a,n) __rlwinm(a,n,0,31)
-#  elif defined(__MC68K__)
-    /* Motorola specific tweak. <appro@fy.chalmers.se> */
-#   define ROTATE(a,n) ( n<24 ? __rol(a,n) : __ror(a,32-n) )
-#  else
-#   define ROTATE(a,n) __rol(a,n)
-#  endif
-# elif defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-  /*
-   * Some GNU C inline assembler templates. Note that these are
-   * rotates by *constant* number of bits! But that's exactly
-   * what we need here...
-   *                                   <appro@fy.chalmers.se>
-   */
-#  if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
-#   define ROTATE(a,n) ({ register unsigned int ret;   \
-                               asm (                   \
-                               "roll %1,%0"            \
-                               : "=r"(ret)             \
-                               : "I"(n), "0"(a)        \
-                               : "cc");                \
-                          ret;                         \
-                       })
-#  elif defined(__powerpc) || defined(__ppc__) || defined(__powerpc64__)
-#   define ROTATE(a,n) ({ register unsigned int ret;   \
-                               asm (                   \
-                               "rlwinm %0,%1,%2,0,31"  \
-                               : "=r"(ret)             \
-                               : "r"(a), "I"(n));      \
-                          ret;                         \
-                       })
-#  endif
-# endif
-#endif /* PEDANTIC */
-
-#if HASH_LONG_LOG2==2  /* Engage only if sizeof(HASH_LONG)== 4 */
-/* A nice byte order reversal from Wei Dai <weidai@eskimo.com> */
-#ifdef ROTATE
-/* 5 instructions with rotate instruction, else 9 */
-#define REVERSE_FETCH32(a,l)   (                                       \
-               l=*(const HASH_LONG *)(a),                              \
-               ((ROTATE(l,8)&0x00FF00FF)|(ROTATE((l&0x00FF00FF),24)))  \
-                               )
-#else
-/* 6 instructions with rotate instruction, else 8 */
-#define REVERSE_FETCH32(a,l)   (                               \
-               l=*(const HASH_LONG *)(a),                      \
-               l=(((l>>8)&0x00FF00FF)|((l&0x00FF00FF)<<8)),    \
-               ROTATE(l,16)                                    \
-                               )
-/*
- * Originally the middle line started with l=(((l&0xFF00FF00)>>8)|...
- * It's rewritten as above for two reasons:
- *     - RISCs aren't good at long constants and have to explicitely
- *       compose 'em with several (well, usually 2) instructions in a
- *       register before performing the actual operation and (as you
- *       already realized:-) having same constant should inspire the
- *       compiler to permanently allocate the only register for it;
- *     - most modern CPUs have two ALUs, but usually only one has
- *       circuitry for shifts:-( this minor tweak inspires compiler
- *       to schedule shift instructions in a better way...
- *
- *                             <appro@fy.chalmers.se>
- */
-#endif
-#endif
-
-#ifndef ROTATE
-#define ROTATE(a,n)     (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
-#endif
-
-/*
- * Make some obvious choices. E.g., HASH_BLOCK_DATA_ORDER_ALIGNED
- * and HASH_BLOCK_HOST_ORDER ought to be the same if input data
- * and host are of the same "endianess". It's possible to mask
- * this with blank #define HASH_BLOCK_DATA_ORDER though...
- *
- *                             <appro@fy.chalmers.se>
- */
-#if defined(B_ENDIAN)
-#  if defined(DATA_ORDER_IS_BIG_ENDIAN)
-#    if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2
-#      define HASH_BLOCK_DATA_ORDER_ALIGNED    HASH_BLOCK_HOST_ORDER
-#    endif
-#  endif
-#elif defined(L_ENDIAN)
-#  if defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-#    if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2
-#      define HASH_BLOCK_DATA_ORDER_ALIGNED    HASH_BLOCK_HOST_ORDER
-#    endif
-#  endif
-#endif
-
-#if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
-#ifndef HASH_BLOCK_DATA_ORDER
-#error "HASH_BLOCK_DATA_ORDER must be defined!"
-#endif
-#endif
-
-#if defined(DATA_ORDER_IS_BIG_ENDIAN)
-
-#ifndef PEDANTIC
-# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-#  if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
-    /*
-     * This gives ~30-40% performance improvement in SHA-256 compiled
-     * with gcc [on P4]. Well, first macro to be frank. We can pull
-     * this trick on x86* platforms only, because these CPUs can fetch
-     * unaligned data without raising an exception.
-     */
-#   define HOST_c2l(c,l)       ({ unsigned int r=*((const unsigned int *)(c)); \
-                                  asm ("bswapl %0":"=r"(r):"0"(r));    \
-                                  (c)+=4; (l)=r;                       })
-#   define HOST_l2c(l,c)       ({ unsigned int r=(l);                  \
-                                  asm ("bswapl %0":"=r"(r):"0"(r));    \
-                                  *((unsigned int *)(c))=r; (c)+=4; r; })
-#  endif
-# endif
-#endif
-
-#ifndef HOST_c2l
-#define HOST_c2l(c,l)  (l =(((unsigned long)(*((c)++)))<<24),          \
-                        l|=(((unsigned long)(*((c)++)))<<16),          \
-                        l|=(((unsigned long)(*((c)++)))<< 8),          \
-                        l|=(((unsigned long)(*((c)++)))    ),          \
-                        l)
-#endif
-#define HOST_p_c2l(c,l,n)      {                                       \
-                       switch (n) {                                    \
-                       case 0: l =((unsigned long)(*((c)++)))<<24;     \
-                       case 1: l|=((unsigned long)(*((c)++)))<<16;     \
-                       case 2: l|=((unsigned long)(*((c)++)))<< 8;     \
-                       case 3: l|=((unsigned long)(*((c)++)));         \
-                               } }
-#define HOST_p_c2l_p(c,l,sc,len) {                                     \
-                       switch (sc) {                                   \
-                       case 0: l =((unsigned long)(*((c)++)))<<24;     \
-                               if (--len == 0) break;                  \
-                       case 1: l|=((unsigned long)(*((c)++)))<<16;     \
-                               if (--len == 0) break;                  \
-                       case 2: l|=((unsigned long)(*((c)++)))<< 8;     \
-                               } }
-/* NOTE the pointer is not incremented at the end of this */
-#define HOST_c2l_p(c,l,n)      {                                       \
-                       l=0; (c)+=n;                                    \
-                       switch (n) {                                    \
-                       case 3: l =((unsigned long)(*(--(c))))<< 8;     \
-                       case 2: l|=((unsigned long)(*(--(c))))<<16;     \
-                       case 1: l|=((unsigned long)(*(--(c))))<<24;     \
-                               } }
-#ifndef HOST_l2c
-#define HOST_l2c(l,c)  (*((c)++)=(unsigned char)(((l)>>24)&0xff),      \
-                        *((c)++)=(unsigned char)(((l)>>16)&0xff),      \
-                        *((c)++)=(unsigned char)(((l)>> 8)&0xff),      \
-                        *((c)++)=(unsigned char)(((l)    )&0xff),      \
-                        l)
-#endif
-
-#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-
-#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
-  /* See comment in DATA_ORDER_IS_BIG_ENDIAN section. */
-# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, l)
-# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, l)
-#endif
-
-#ifndef HOST_c2l
-#define HOST_c2l(c,l)  (l =(((unsigned long)(*((c)++)))    ),          \
-                        l|=(((unsigned long)(*((c)++)))<< 8),          \
-                        l|=(((unsigned long)(*((c)++)))<<16),          \
-                        l|=(((unsigned long)(*((c)++)))<<24),          \
-                        l)
-#endif
-#define HOST_p_c2l(c,l,n)      {                                       \
-                       switch (n) {                                    \
-                       case 0: l =((unsigned long)(*((c)++)));         \
-                       case 1: l|=((unsigned long)(*((c)++)))<< 8;     \
-                       case 2: l|=((unsigned long)(*((c)++)))<<16;     \
-                       case 3: l|=((unsigned long)(*((c)++)))<<24;     \
-                               } }
-#define HOST_p_c2l_p(c,l,sc,len) {                                     \
-                       switch (sc) {                                   \
-                       case 0: l =((unsigned long)(*((c)++)));         \
-                               if (--len == 0) break;                  \
-                       case 1: l|=((unsigned long)(*((c)++)))<< 8;     \
-                               if (--len == 0) break;                  \
-                       case 2: l|=((unsigned long)(*((c)++)))<<16;     \
-                               } }
-/* NOTE the pointer is not incremented at the end of this */
-#define HOST_c2l_p(c,l,n)      {                                       \
-                       l=0; (c)+=n;                                    \
-                       switch (n) {                                    \
-                       case 3: l =((unsigned long)(*(--(c))))<<16;     \
-                       case 2: l|=((unsigned long)(*(--(c))))<< 8;     \
-                       case 1: l|=((unsigned long)(*(--(c))));         \
-                               } }
-#ifndef HOST_l2c
-#define HOST_l2c(l,c)  (*((c)++)=(unsigned char)(((l)    )&0xff),      \
-                        *((c)++)=(unsigned char)(((l)>> 8)&0xff),      \
-                        *((c)++)=(unsigned char)(((l)>>16)&0xff),      \
-                        *((c)++)=(unsigned char)(((l)>>24)&0xff),      \
-                        l)
-#endif
-
-#endif
-
-/*
- * Time for some action:-)
- */
-
-int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
-       {
-       const unsigned char *data=data_;
-       register HASH_LONG * p;
-       register HASH_LONG l;
-       size_t sw,sc,ew,ec;
-
-       if(FIPS_selftest_failed())
-               return 0;
-
-       if (len==0) return 1;
-
-       l=(c->Nl+(((HASH_LONG)len)<<3))&0xffffffffUL;
-       /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
-        * Wei Dai <weidai@eskimo.com> for pointing it out. */
-       if (l < c->Nl) /* overflow */
-               c->Nh++;
-       c->Nh+=(len>>29);       /* might cause compiler warning on 16-bit */
-       c->Nl=l;
-
-       if (c->num != 0)
-               {
-               p=c->data;
-               sw=c->num>>2;
-               sc=c->num&0x03;
-
-               if ((c->num+len) >= HASH_CBLOCK)
-                       {
-                       l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l;
-                       for (; sw<HASH_LBLOCK; sw++)
-                               {
-                               HOST_c2l(data,l); p[sw]=l;
-                               }
-                       HASH_BLOCK_HOST_ORDER (c,p,1);
-                       len-=(HASH_CBLOCK-c->num);
-                       c->num=0;
-                       /* drop through and do the rest */
-                       }
-               else
-                       {
-                       c->num+=(unsigned int)len;
-                       if ((sc+len) < 4) /* ugly, add char's to a word */
-                               {
-                               l=p[sw]; HOST_p_c2l_p(data,l,sc,len); p[sw]=l;
-                               }
-                       else
-                               {
-                               ew=(c->num>>2);
-                               ec=(c->num&0x03);
-                               if (sc)
-                                       l=p[sw];
-                               HOST_p_c2l(data,l,sc);
-                               p[sw++]=l;
-                               for (; sw < ew; sw++)
-                                       {
-                                       HOST_c2l(data,l); p[sw]=l;
-                                       }
-                               if (ec)
-                                       {
-                                       HOST_c2l_p(data,l,ec); p[sw]=l;
-                                       }
-                               }
-                       return 1;
-                       }
-               }
-
-       sw=len/HASH_CBLOCK;
-       if (sw > 0)
-               {
-#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
-               /*
-                * Note that HASH_BLOCK_DATA_ORDER_ALIGNED gets defined
-                * only if sizeof(HASH_LONG)==4.
-                */
-               if ((((size_t)data)%4) == 0)
-                       {
-                       /* data is properly aligned so that we can cast it: */
-                       HASH_BLOCK_DATA_ORDER_ALIGNED (c,(const HASH_LONG *)data,sw);
-                       sw*=HASH_CBLOCK;
-                       data+=sw;
-                       len-=sw;
-                       }
-               else
-#if !defined(HASH_BLOCK_DATA_ORDER)
-                       while (sw--)
-                               {
-                               memcpy (p=c->data,data,HASH_CBLOCK);
-                               HASH_BLOCK_DATA_ORDER_ALIGNED(c,p,1);
-                               data+=HASH_CBLOCK;
-                               len-=HASH_CBLOCK;
-                               }
-#endif
-#endif
-#if defined(HASH_BLOCK_DATA_ORDER)
-                       {
-                       HASH_BLOCK_DATA_ORDER(c,data,sw);
-                       sw*=HASH_CBLOCK;
-                       data+=sw;
-                       len-=sw;
-                       }
-#endif
-               }
-
-       if (len!=0)
-               {
-               p = c->data;
-               c->num = len;
-               ew=len>>2;      /* words to copy */
-               ec=len&0x03;
-               for (; ew; ew--,p++)
-                       {
-                       HOST_c2l(data,l); *p=l;
-                       }
-               HOST_c2l_p(data,l,ec);
-               *p=l;
-               }
-       return 1;
-       }
-
-
-void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data)
-       {
-#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
-       if ((((size_t)data)%4) == 0)
-               /* data is properly aligned so that we can cast it: */
-               HASH_BLOCK_DATA_ORDER_ALIGNED (c,(const HASH_LONG *)data,1);
-       else
-#if !defined(HASH_BLOCK_DATA_ORDER)
-               {
-               memcpy (c->data,data,HASH_CBLOCK);
-               HASH_BLOCK_DATA_ORDER_ALIGNED (c,c->data,1);
-               }
-#endif
-#endif
-#if defined(HASH_BLOCK_DATA_ORDER)
-       HASH_BLOCK_DATA_ORDER (c,data,1);
-#endif
-       }
-
-
-int HASH_FINAL (unsigned char *md, HASH_CTX *c)
-       {
-       register HASH_LONG *p;
-       register unsigned long l;
-       register int i,j;
-       static const unsigned char end[4]={0x80,0x00,0x00,0x00};
-       const unsigned char *cp=end;
-
-       /* c->num should definitly have room for at least one more byte. */
-       p=c->data;
-       i=c->num>>2;
-       j=c->num&0x03;
-
-#if 0
-       /* purify often complains about the following line as an
-        * Uninitialized Memory Read.  While this can be true, the
-        * following p_c2l macro will reset l when that case is true.
-        * This is because j&0x03 contains the number of 'valid' bytes
-        * already in p[i].  If and only if j&0x03 == 0, the UMR will
-        * occur but this is also the only time p_c2l will do
-        * l= *(cp++) instead of l|= *(cp++)
-        * Many thanks to Alex Tang <altitude@cic.net> for pickup this
-        * 'potential bug' */
-#ifdef PURIFY
-       if (j==0) p[i]=0; /* Yeah, but that's not the way to fix it:-) */
-#endif
-       l=p[i];
-#else
-       l = (j==0) ? 0 : p[i];
-#endif
-       HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
-
-       if (i>(HASH_LBLOCK-2)) /* save room for Nl and Nh */
-               {
-               if (i<HASH_LBLOCK) p[i]=0;
-               HASH_BLOCK_HOST_ORDER (c,p,1);
-               i=0;
-               }
-       for (; i<(HASH_LBLOCK-2); i++)
-               p[i]=0;
-
-#if   defined(DATA_ORDER_IS_BIG_ENDIAN)
-       p[HASH_LBLOCK-2]=c->Nh;
-       p[HASH_LBLOCK-1]=c->Nl;
-#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
-       p[HASH_LBLOCK-2]=c->Nl;
-       p[HASH_LBLOCK-1]=c->Nh;
-#endif
-       HASH_BLOCK_HOST_ORDER (c,p,1);
-
-#ifndef HASH_MAKE_STRING
-#error "HASH_MAKE_STRING must be defined!"
-#else
-       HASH_MAKE_STRING(c,md);
-#endif
-
-       c->num=0;
-       /* clear stuff, HASH_BLOCK may be leaving some stuff on the stack
-        * but I'm not worried :-)
-       OPENSSL_cleanse((void *)c,sizeof(HASH_CTX));
-        */
-       return 1;
-       }
-
-#ifndef MD32_REG_T
-#define MD32_REG_T long
-/*
- * This comment was originaly written for MD5, which is why it
- * discusses A-D. But it basically applies to all 32-bit digests,
- * which is why it was moved to common header file.
- *
- * In case you wonder why A-D are declared as long and not
- * as MD5_LONG. Doing so results in slight performance
- * boost on LP64 architectures. The catch is we don't
- * really care if 32 MSBs of a 64-bit register get polluted
- * with eventual overflows as we *save* only 32 LSBs in
- * *either* case. Now declaring 'em long excuses the compiler
- * from keeping 32 MSBs zeroed resulting in 13% performance
- * improvement under SPARC Solaris7/64 and 5% under AlphaLinux.
- * Well, to be honest it should say that this *prevents* 
- * performance degradation.
- *                             <appro@fy.chalmers.se>
- * Apparently there're LP64 compilers that generate better
- * code if A-D are declared int. Most notably GCC-x86_64
- * generates better code.
- *                             <appro@fy.chalmers.se>
- */
-#endif
diff --git a/fips-1.0/sha/fips_sha.h b/fips-1.0/sha/fips_sha.h
deleted file mode 100644 (file)
index 4520b06..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-/* fips/sha1/fips_sha.h */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * 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 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifndef HEADER_SHA_H
-#define HEADER_SHA_H
-
-#include <openssl/e_os2.h>
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#if defined(OPENSSL_NO_SHA) || (defined(OPENSSL_NO_SHA0) && defined(OPENSSL_NO_SHA1))
-#error SHA is disabled.
-#endif
-
-/*
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then !
- * ! SHA_LONG_LOG2 has to be defined along.                        !
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- */
-
-#if defined(OPENSSL_SYS_WIN16) || defined(__LP32__)
-#define SHA_LONG unsigned long
-#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
-#define SHA_LONG unsigned long
-#define SHA_LONG_LOG2 3
-#else
-#define SHA_LONG unsigned int
-#endif
-
-#define SHA_LBLOCK     16
-#define SHA_CBLOCK     (SHA_LBLOCK*4)  /* SHA treats input data as a
-                                        * contiguous array of 32 bit
-                                        * wide big-endian values. */
-#define SHA_LAST_BLOCK  (SHA_CBLOCK-8)
-#define SHA_DIGEST_LENGTH 20
-
-typedef struct SHAstate_st
-       {
-       SHA_LONG h0,h1,h2,h3,h4;
-       SHA_LONG Nl,Nh;
-       SHA_LONG data[SHA_LBLOCK];
-       unsigned int num;
-       } SHA_CTX;
-
-#ifndef OPENSSL_NO_SHA1
-int SHA1_Init(SHA_CTX *c);
-int SHA1_Update(SHA_CTX *c, const void *data, size_t len);
-int SHA1_Final(unsigned char *md, SHA_CTX *c);
-unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md);
-void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
-#endif
-
-#define SHA256_CBLOCK  (SHA_LBLOCK*4)  /* SHA-256 treats input data as a
-                                        * contiguous array of 32 bit
-                                        * wide big-endian values. */
-#define SHA224_DIGEST_LENGTH   28
-#define SHA256_DIGEST_LENGTH   32
-
-typedef struct SHA256state_st
-       {
-       SHA_LONG h[8];
-       SHA_LONG Nl,Nh;
-       SHA_LONG data[SHA_LBLOCK];
-       unsigned int num,md_len;
-       } SHA256_CTX;
-
-#ifndef OPENSSL_NO_SHA256
-int SHA224_Init(SHA256_CTX *c);
-int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
-int SHA224_Final(unsigned char *md, SHA256_CTX *c);
-unsigned char *SHA224(const unsigned char *d, size_t n,unsigned char *md);
-int SHA256_Init(SHA256_CTX *c);
-int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
-int SHA256_Final(unsigned char *md, SHA256_CTX *c);
-unsigned char *SHA256(const unsigned char *d, size_t n,unsigned char *md);
-void SHA256_Transform(SHA256_CTX *c, const unsigned char *data);
-#endif
-
-#define SHA384_DIGEST_LENGTH   48
-#define SHA512_DIGEST_LENGTH   64
-
-/*
- * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64
- * being exactly 64-bit wide. See Implementation Notes in sha512.c
- * for further details.
- */
-#define SHA512_CBLOCK  (SHA_LBLOCK*8)  /* SHA-512 treats input data as a
-                                        * contiguous array of 64 bit
-                                        * wide big-endian values. */
-#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
-#define SHA_LONG64 unsigned __int64
-#define U64(C)     C##UI64
-#elif defined(__arch64__)
-#define SHA_LONG64 unsigned long
-#define U64(C)     C##UL
-#else
-#define SHA_LONG64 unsigned long long
-#define U64(C)     C##ULL
-#endif
-
-typedef struct SHA512state_st
-       {
-       SHA_LONG64 h[8];
-       SHA_LONG64 Nl,Nh;
-       union {
-               SHA_LONG64      d[SHA_LBLOCK];
-               unsigned char   p[SHA512_CBLOCK];
-       } u;
-       unsigned int num,md_len;
-       } SHA512_CTX;
-
-#ifndef OPENSSL_NO_SHA512
-int SHA384_Init(SHA512_CTX *c);
-int SHA384_Update(SHA512_CTX *c, const void *data, size_t len);
-int SHA384_Final(unsigned char *md, SHA512_CTX *c);
-unsigned char *SHA384(const unsigned char *d, size_t n,unsigned char *md);
-int SHA512_Init(SHA512_CTX *c);
-int SHA512_Update(SHA512_CTX *c, const void *data, size_t len);
-int SHA512_Final(unsigned char *md, SHA512_CTX *c);
-unsigned char *SHA512(const unsigned char *d, size_t n,unsigned char *md);
-void SHA512_Transform(SHA512_CTX *c, const unsigned char *data);
-#endif
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/fips-1.0/sha/fips_sha1dgst.c b/fips-1.0/sha/fips_sha1dgst.c
deleted file mode 100644 (file)
index fb9e154..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/* crypto/sha/sha1dgst.c */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * 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 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#if !defined(OPENSSL_NO_SHA1) && !defined(OPENSSL_NO_SHA)
-
-#undef  SHA_0
-#define SHA_1
-
-#include <openssl/opensslv.h>
-#include <openssl/opensslconf.h>
-#include <openssl/crypto.h>
-
-#ifdef OPENSSL_FIPS
-const char SHA1_version[]="SHA1" OPENSSL_VERSION_PTEXT;
-
-/* The implementation is in fips_md32_common.h */
-#include "fips_sha_locl.h"
-
-unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md)
-       {
-       SHA_CTX c;
-       static unsigned char m[SHA_DIGEST_LENGTH];
-
-       OPENSSL_assert(sizeof(unsigned long)<=sizeof(size_t));
-       if (md == NULL) md=m;
-       if (!SHA1_Init(&c))
-               return NULL;
-       SHA1_Update(&c,d,n);
-       SHA1_Final(md,&c);
-       OPENSSL_cleanse(&c,sizeof(c));
-       return(md);
-       }
-
-#else /* ndef OPENSSL_FIPS */
-
-static void *dummy=&dummy;
-
-#endif /* ndef OPENSSL_FIPS */
-
-#endif
-
diff --git a/fips-1.0/sha/fips_sha256.c b/fips-1.0/sha/fips_sha256.c
deleted file mode 100644 (file)
index b5a1ca0..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-/* crypto/sha/sha256.c */
-/* ====================================================================
- * Copyright (c) 2004 The OpenSSL Project.  All rights reserved
- * according to the OpenSSL license [found in ../../LICENSE].
- * ====================================================================
- */
-#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA256)
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <openssl/opensslconf.h>
-#include <openssl/crypto.h>
-#include <openssl/fips_sha.h>
-#include <openssl/fips.h>
-#include <openssl/opensslv.h>
-
-#ifdef OPENSSL_FIPS
-
-const char SHA256_version[]="SHA-256" OPENSSL_VERSION_PTEXT;
-
-int SHA224_Init (SHA256_CTX *c)
-       {
-       c->h[0]=0xc1059ed8UL;   c->h[1]=0x367cd507UL;
-       c->h[2]=0x3070dd17UL;   c->h[3]=0xf70e5939UL;
-       c->h[4]=0xffc00b31UL;   c->h[5]=0x68581511UL;
-       c->h[6]=0x64f98fa7UL;   c->h[7]=0xbefa4fa4UL;
-       c->Nl=0;        c->Nh=0;
-       c->num=0;       c->md_len=SHA224_DIGEST_LENGTH;
-       return 1;
-       }
-
-int SHA256_Init (SHA256_CTX *c)
-       {
-       c->h[0]=0x6a09e667UL;   c->h[1]=0xbb67ae85UL;
-       c->h[2]=0x3c6ef372UL;   c->h[3]=0xa54ff53aUL;
-       c->h[4]=0x510e527fUL;   c->h[5]=0x9b05688cUL;
-       c->h[6]=0x1f83d9abUL;   c->h[7]=0x5be0cd19UL;
-       c->Nl=0;        c->Nh=0;
-       c->num=0;       c->md_len=SHA256_DIGEST_LENGTH;
-       return 1;
-       }
-
-unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md)
-       {
-       SHA256_CTX c;
-       static unsigned char m[SHA224_DIGEST_LENGTH];
-
-       if (md == NULL) md=m;
-       SHA224_Init(&c);
-       SHA256_Update(&c,d,n);
-       SHA256_Final(md,&c);
-       OPENSSL_cleanse(&c,sizeof(c));
-       return(md);
-       }
-
-unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md)
-       {
-       SHA256_CTX c;
-       static unsigned char m[SHA256_DIGEST_LENGTH];
-
-       if (md == NULL) md=m;
-       SHA256_Init(&c);
-       SHA256_Update(&c,d,n);
-       SHA256_Final(md,&c);
-       OPENSSL_cleanse(&c,sizeof(c));
-       return(md);
-       }
-
-int SHA224_Update(SHA256_CTX *c, const void *data, size_t len)
-{   return SHA256_Update (c,data,len);   }
-int SHA224_Final (unsigned char *md, SHA256_CTX *c)
-{   return SHA256_Final (md,c);   }
-
-#ifndef        SHA_LONG_LOG2
-#define        SHA_LONG_LOG2   2       /* default to 32 bits */
-#endif
-
-#define        DATA_ORDER_IS_BIG_ENDIAN
-
-#define        HASH_LONG               SHA_LONG
-#define        HASH_LONG_LOG2          SHA_LONG_LOG2
-#define        HASH_CTX                SHA256_CTX
-#define        HASH_CBLOCK             SHA_CBLOCK
-#define        HASH_LBLOCK             SHA_LBLOCK
-/*
- * Note that FIPS180-2 discusses "Truncation of the Hash Function Output."
- * default: case below covers for it. It's not clear however if it's
- * permitted to truncate to amount of bytes not divisible by 4. I bet not,
- * but if it is, then default: case shall be extended. For reference.
- * Idea behind separate cases for pre-defined lenghts is to let the
- * compiler decide if it's appropriate to unroll small loops.
- */
-#define        HASH_MAKE_STRING(c,s)   do {    \
-       unsigned long ll;               \
-       unsigned int  n;                \
-       switch ((c)->md_len)            \
-       {   case SHA224_DIGEST_LENGTH:  \
-               for (n=0;n<SHA224_DIGEST_LENGTH/4;n++)  \
-               {   ll=(c)->h[n]; HOST_l2c(ll,(s));   } \
-               break;                  \
-           case SHA256_DIGEST_LENGTH:  \
-               for (n=0;n<SHA256_DIGEST_LENGTH/4;n++)  \
-               {   ll=(c)->h[n]; HOST_l2c(ll,(s));   } \
-               break;                  \
-           default:                    \
-               if ((c)->md_len > SHA256_DIGEST_LENGTH) \
-                   return 0;                           \
-               for (n=0;n<(c)->md_len/4;n++)           \
-               {   ll=(c)->h[n]; HOST_l2c(ll,(s));   } \
-               break;                  \
-       }                               \
-       } while (0)
-
-#define        HASH_UPDATE             SHA256_Update
-#define        HASH_TRANSFORM          SHA256_Transform
-#define        HASH_FINAL              SHA256_Final
-#define        HASH_BLOCK_HOST_ORDER   sha256_block_host_order
-#define        HASH_BLOCK_DATA_ORDER   sha256_block_data_order
-void sha256_block_host_order (SHA256_CTX *ctx, const void *in, size_t num);
-void sha256_block_data_order (SHA256_CTX *ctx, const void *in, size_t num);
-
-#include "fips_md32_common.h"
-
-#ifdef SHA256_ASM
-void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host);
-#else
-static const SHA_LONG K256[64] = {
-       0x428a2f98UL,0x71374491UL,0xb5c0fbcfUL,0xe9b5dba5UL,
-       0x3956c25bUL,0x59f111f1UL,0x923f82a4UL,0xab1c5ed5UL,
-       0xd807aa98UL,0x12835b01UL,0x243185beUL,0x550c7dc3UL,
-       0x72be5d74UL,0x80deb1feUL,0x9bdc06a7UL,0xc19bf174UL,
-       0xe49b69c1UL,0xefbe4786UL,0x0fc19dc6UL,0x240ca1ccUL,
-       0x2de92c6fUL,0x4a7484aaUL,0x5cb0a9dcUL,0x76f988daUL,
-       0x983e5152UL,0xa831c66dUL,0xb00327c8UL,0xbf597fc7UL,
-       0xc6e00bf3UL,0xd5a79147UL,0x06ca6351UL,0x14292967UL,
-       0x27b70a85UL,0x2e1b2138UL,0x4d2c6dfcUL,0x53380d13UL,
-       0x650a7354UL,0x766a0abbUL,0x81c2c92eUL,0x92722c85UL,
-       0xa2bfe8a1UL,0xa81a664bUL,0xc24b8b70UL,0xc76c51a3UL,
-       0xd192e819UL,0xd6990624UL,0xf40e3585UL,0x106aa070UL,
-       0x19a4c116UL,0x1e376c08UL,0x2748774cUL,0x34b0bcb5UL,
-       0x391c0cb3UL,0x4ed8aa4aUL,0x5b9cca4fUL,0x682e6ff3UL,
-       0x748f82eeUL,0x78a5636fUL,0x84c87814UL,0x8cc70208UL,
-       0x90befffaUL,0xa4506cebUL,0xbef9a3f7UL,0xc67178f2UL };
-
-/*
- * FIPS specification refers to right rotations, while our ROTATE macro
- * is left one. This is why you might notice that rotation coefficients
- * differ from those observed in FIPS document by 32-N...
- */
-#define Sigma0(x)      (ROTATE((x),30) ^ ROTATE((x),19) ^ ROTATE((x),10))
-#define Sigma1(x)      (ROTATE((x),26) ^ ROTATE((x),21) ^ ROTATE((x),7))
-#define sigma0(x)      (ROTATE((x),25) ^ ROTATE((x),14) ^ ((x)>>3))
-#define sigma1(x)      (ROTATE((x),15) ^ ROTATE((x),13) ^ ((x)>>10))
-
-#define Ch(x,y,z)      (((x) & (y)) ^ ((~(x)) & (z)))
-#define Maj(x,y,z)     (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
-
-#ifdef OPENSSL_SMALL_FOOTPRINT
-
-static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
-       {
-       unsigned MD32_REG_T a,b,c,d,e,f,g,h,s0,s1,T1,T2;
-       SHA_LONG        X[16];
-       int i;
-       const unsigned char *data=in;
-
-                       while (num--) {
-
-       a = ctx->h[0];  b = ctx->h[1];  c = ctx->h[2];  d = ctx->h[3];
-       e = ctx->h[4];  f = ctx->h[5];  g = ctx->h[6];  h = ctx->h[7];
-
-       if (host)
-               {
-               const SHA_LONG *W=(const SHA_LONG *)data;
-
-               for (i=0;i<16;i++)
-                       {
-                       T1 = X[i] = W[i];
-                       T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
-                       T2 = Sigma0(a) + Maj(a,b,c);
-                       h = g;  g = f;  f = e;  e = d + T1;
-                       d = c;  c = b;  b = a;  a = T1 + T2;
-                       }
-
-               data += SHA256_CBLOCK;
-               }
-       else
-               {
-               SHA_LONG l;
-
-               for (i=0;i<16;i++)
-                       {
-                       HOST_c2l(data,l); T1 = X[i] = l;
-                       T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
-                       T2 = Sigma0(a) + Maj(a,b,c);
-                       h = g;  g = f;  f = e;  e = d + T1;
-                       d = c;  c = b;  b = a;  a = T1 + T2;
-                       }
-               }
-
-       for (;i<64;i++)
-               {
-               s0 = X[(i+1)&0x0f];     s0 = sigma0(s0);
-               s1 = X[(i+14)&0x0f];    s1 = sigma1(s1);
-
-               T1 = X[i&0xf] += s0 + s1 + X[(i+9)&0xf];
-               T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
-               T2 = Sigma0(a) + Maj(a,b,c);
-               h = g;  g = f;  f = e;  e = d + T1;
-               d = c;  c = b;  b = a;  a = T1 + T2;
-               }
-
-       ctx->h[0] += a; ctx->h[1] += b; ctx->h[2] += c; ctx->h[3] += d;
-       ctx->h[4] += e; ctx->h[5] += f; ctx->h[6] += g; ctx->h[7] += h;
-
-                       }
-}
-
-#else
-
-#define        ROUND_00_15(i,a,b,c,d,e,f,g,h)          do {    \
-       T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];      \
-       h = Sigma0(a) + Maj(a,b,c);                     \
-       d += T1;        h += T1;                } while (0)
-
-#define        ROUND_16_63(i,a,b,c,d,e,f,g,h,X)        do {    \
-       s0 = X[(i+1)&0x0f];     s0 = sigma0(s0);        \
-       s1 = X[(i+14)&0x0f];    s1 = sigma1(s1);        \
-       T1 = X[(i)&0x0f] += s0 + s1 + X[(i+9)&0x0f];    \
-       ROUND_00_15(i,a,b,c,d,e,f,g,h);         } while (0)
-
-static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
-       {
-       unsigned MD32_REG_T a,b,c,d,e,f,g,h,s0,s1,T1;
-       SHA_LONG        X[16];
-       int i;
-       const unsigned char *data=in;
-
-                       while (num--) {
-
-       a = ctx->h[0];  b = ctx->h[1];  c = ctx->h[2];  d = ctx->h[3];
-       e = ctx->h[4];  f = ctx->h[5];  g = ctx->h[6];  h = ctx->h[7];
-
-       if (host)
-               {
-               const SHA_LONG *W=(const SHA_LONG *)data;
-
-               T1 = X[0] = W[0];       ROUND_00_15(0,a,b,c,d,e,f,g,h);
-               T1 = X[1] = W[1];       ROUND_00_15(1,h,a,b,c,d,e,f,g);
-               T1 = X[2] = W[2];       ROUND_00_15(2,g,h,a,b,c,d,e,f);
-               T1 = X[3] = W[3];       ROUND_00_15(3,f,g,h,a,b,c,d,e);
-               T1 = X[4] = W[4];       ROUND_00_15(4,e,f,g,h,a,b,c,d);
-               T1 = X[5] = W[5];       ROUND_00_15(5,d,e,f,g,h,a,b,c);
-               T1 = X[6] = W[6];       ROUND_00_15(6,c,d,e,f,g,h,a,b);
-               T1 = X[7] = W[7];       ROUND_00_15(7,b,c,d,e,f,g,h,a);
-               T1 = X[8] = W[8];       ROUND_00_15(8,a,b,c,d,e,f,g,h);
-               T1 = X[9] = W[9];       ROUND_00_15(9,h,a,b,c,d,e,f,g);
-               T1 = X[10] = W[10];     ROUND_00_15(10,g,h,a,b,c,d,e,f);
-               T1 = X[11] = W[11];     ROUND_00_15(11,f,g,h,a,b,c,d,e);
-               T1 = X[12] = W[12];     ROUND_00_15(12,e,f,g,h,a,b,c,d);
-               T1 = X[13] = W[13];     ROUND_00_15(13,d,e,f,g,h,a,b,c);
-               T1 = X[14] = W[14];     ROUND_00_15(14,c,d,e,f,g,h,a,b);
-               T1 = X[15] = W[15];     ROUND_00_15(15,b,c,d,e,f,g,h,a);
-
-               data += SHA256_CBLOCK;
-               }
-       else
-               {
-               SHA_LONG l;
-
-               HOST_c2l(data,l); T1 = X[0] = l;  ROUND_00_15(0,a,b,c,d,e,f,g,h);
-               HOST_c2l(data,l); T1 = X[1] = l;  ROUND_00_15(1,h,a,b,c,d,e,f,g);
-               HOST_c2l(data,l); T1 = X[2] = l;  ROUND_00_15(2,g,h,a,b,c,d,e,f);
-               HOST_c2l(data,l); T1 = X[3] = l;  ROUND_00_15(3,f,g,h,a,b,c,d,e);
-               HOST_c2l(data,l); T1 = X[4] = l;  ROUND_00_15(4,e,f,g,h,a,b,c,d);
-               HOST_c2l(data,l); T1 = X[5] = l;  ROUND_00_15(5,d,e,f,g,h,a,b,c);
-               HOST_c2l(data,l); T1 = X[6] = l;  ROUND_00_15(6,c,d,e,f,g,h,a,b);
-               HOST_c2l(data,l); T1 = X[7] = l;  ROUND_00_15(7,b,c,d,e,f,g,h,a);
-               HOST_c2l(data,l); T1 = X[8] = l;  ROUND_00_15(8,a,b,c,d,e,f,g,h);
-               HOST_c2l(data,l); T1 = X[9] = l;  ROUND_00_15(9,h,a,b,c,d,e,f,g);
-               HOST_c2l(data,l); T1 = X[10] = l; ROUND_00_15(10,g,h,a,b,c,d,e,f);
-               HOST_c2l(data,l); T1 = X[11] = l; ROUND_00_15(11,f,g,h,a,b,c,d,e);
-               HOST_c2l(data,l); T1 = X[12] = l; ROUND_00_15(12,e,f,g,h,a,b,c,d);
-               HOST_c2l(data,l); T1 = X[13] = l; ROUND_00_15(13,d,e,f,g,h,a,b,c);
-               HOST_c2l(data,l); T1 = X[14] = l; ROUND_00_15(14,c,d,e,f,g,h,a,b);
-               HOST_c2l(data,l); T1 = X[15] = l; ROUND_00_15(15,b,c,d,e,f,g,h,a);
-               }
-
-       for (i=16;i<64;i+=8)
-               {
-               ROUND_16_63(i+0,a,b,c,d,e,f,g,h,X);
-               ROUND_16_63(i+1,h,a,b,c,d,e,f,g,X);
-               ROUND_16_63(i+2,g,h,a,b,c,d,e,f,X);
-               ROUND_16_63(i+3,f,g,h,a,b,c,d,e,X);
-               ROUND_16_63(i+4,e,f,g,h,a,b,c,d,X);
-               ROUND_16_63(i+5,d,e,f,g,h,a,b,c,X);
-               ROUND_16_63(i+6,c,d,e,f,g,h,a,b,X);
-               ROUND_16_63(i+7,b,c,d,e,f,g,h,a,X);
-               }
-
-       ctx->h[0] += a; ctx->h[1] += b; ctx->h[2] += c; ctx->h[3] += d;
-       ctx->h[4] += e; ctx->h[5] += f; ctx->h[6] += g; ctx->h[7] += h;
-
-                       }
-       }
-
-#endif
-#endif /* SHA256_ASM */
-
-/*
- * Idea is to trade couple of cycles for some space. On IA-32 we save
- * about 4K in "big footprint" case. In "small footprint" case any gain
- * is appreciated:-)
- */
-void HASH_BLOCK_HOST_ORDER (SHA256_CTX *ctx, const void *in, size_t num)
-{   sha256_block (ctx,in,num,1);   }
-
-void HASH_BLOCK_DATA_ORDER (SHA256_CTX *ctx, const void *in, size_t num)
-{   sha256_block (ctx,in,num,0);   }
-
-#endif
-
-#endif /* OPENSSL_NO_SHA256 */
-
diff --git a/fips-1.0/sha/fips_sha512.c b/fips-1.0/sha/fips_sha512.c
deleted file mode 100644 (file)
index 9e906af..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-/* crypto/sha/sha512.c */
-/* ====================================================================
- * Copyright (c) 2004 The OpenSSL Project.  All rights reserved
- * according to the OpenSSL license [found in ../../LICENSE].
- * ====================================================================
- */
-#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA512)
-/*
- * IMPLEMENTATION NOTES.
- *
- * As you might have noticed 32-bit hash algorithms:
- *
- * - permit SHA_LONG to be wider than 32-bit (case on CRAY);
- * - optimized versions implement two transform functions: one operating
- *   on [aligned] data in host byte order and one - on data in input
- *   stream byte order;
- * - share common byte-order neutral collector and padding function
- *   implementations, ../md32_common.h;
- *
- * Neither of the above applies to this SHA-512 implementations. Reasons
- * [in reverse order] are:
- *
- * - it's the only 64-bit hash algorithm for the moment of this writing,
- *   there is no need for common collector/padding implementation [yet];
- * - by supporting only one transform function [which operates on
- *   *aligned* data in input stream byte order, big-endian in this case]
- *   we minimize burden of maintenance in two ways: a) collector/padding
- *   function is simpler; b) only one transform function to stare at;
- * - SHA_LONG64 is required to be exactly 64-bit in order to be able to
- *   apply a number of optimizations to mitigate potential performance
- *   penalties caused by previous design decision;
- *
- * Caveat lector.
- *
- * Implementation relies on the fact that "long long" is 64-bit on
- * both 32- and 64-bit platforms. If some compiler vendor comes up
- * with 128-bit long long, adjustment to sha.h would be required.
- * As this implementation relies on 64-bit integer type, it's totally
- * inappropriate for platforms which don't support it, most notably
- * 16-bit platforms.
- *                                     <appro@fy.chalmers.se>
- */
-#include <stdlib.h>
-#include <string.h>
-
-#include <openssl/opensslconf.h>
-#include <openssl/crypto.h>
-#include <openssl/fips_sha.h>
-#include <openssl/fips.h>
-#include <openssl/opensslv.h>
-
-#ifdef OPENSSL_FIPS
-
-const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT;
-
-#if defined(_M_IX86) || defined(_M_AMD64) || defined(__i386) || defined(__x86_64)
-#define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
-#endif
-
-int SHA384_Init (SHA512_CTX *c)
-       {
-       c->h[0]=U64(0xcbbb9d5dc1059ed8);
-       c->h[1]=U64(0x629a292a367cd507);
-       c->h[2]=U64(0x9159015a3070dd17);
-       c->h[3]=U64(0x152fecd8f70e5939);
-       c->h[4]=U64(0x67332667ffc00b31);
-       c->h[5]=U64(0x8eb44a8768581511);
-       c->h[6]=U64(0xdb0c2e0d64f98fa7);
-       c->h[7]=U64(0x47b5481dbefa4fa4);
-        c->Nl=0;        c->Nh=0;
-        c->num=0;       c->md_len=SHA384_DIGEST_LENGTH;
-        return 1;
-       }
-
-int SHA512_Init (SHA512_CTX *c)
-       {
-       c->h[0]=U64(0x6a09e667f3bcc908);
-       c->h[1]=U64(0xbb67ae8584caa73b);
-       c->h[2]=U64(0x3c6ef372fe94f82b);
-       c->h[3]=U64(0xa54ff53a5f1d36f1);
-       c->h[4]=U64(0x510e527fade682d1);
-       c->h[5]=U64(0x9b05688c2b3e6c1f);
-       c->h[6]=U64(0x1f83d9abfb41bd6b);
-       c->h[7]=U64(0x5be0cd19137e2179);
-        c->Nl=0;        c->Nh=0;
-        c->num=0;       c->md_len=SHA512_DIGEST_LENGTH;
-        return 1;
-       }
-
-#ifndef SHA512_ASM
-static
-#endif
-void sha512_block (SHA512_CTX *ctx, const void *in, size_t num);
-
-int SHA512_Final (unsigned char *md, SHA512_CTX *c)
-       {
-       unsigned char *p=(unsigned char *)c->u.p;
-       size_t n=c->num;
-
-       p[n]=0x80;      /* There always is a room for one */
-       n++;
-       if (n > (sizeof(c->u)-16))
-               memset (p+n,0,sizeof(c->u)-n), n=0,
-               sha512_block (c,p,1);
-
-       memset (p+n,0,sizeof(c->u)-16-n);
-#ifdef B_ENDIAN
-       c->u.d[SHA_LBLOCK-2] = c->Nh;
-       c->u.d[SHA_LBLOCK-1] = c->Nl;
-#else
-       p[sizeof(c->u)-1]  = (unsigned char)(c->Nl);
-       p[sizeof(c->u)-2]  = (unsigned char)(c->Nl>>8);
-       p[sizeof(c->u)-3]  = (unsigned char)(c->Nl>>16);
-       p[sizeof(c->u)-4]  = (unsigned char)(c->Nl>>24);
-       p[sizeof(c->u)-5]  = (unsigned char)(c->Nl>>32);
-       p[sizeof(c->u)-6]  = (unsigned char)(c->Nl>>40);
-       p[sizeof(c->u)-7]  = (unsigned char)(c->Nl>>48);
-       p[sizeof(c->u)-8]  = (unsigned char)(c->Nl>>56);
-       p[sizeof(c->u)-9]  = (unsigned char)(c->Nh);
-       p[sizeof(c->u)-10] = (unsigned char)(c->Nh>>8);
-       p[sizeof(c->u)-11] = (unsigned char)(c->Nh>>16);
-       p[sizeof(c->u)-12] = (unsigned char)(c->Nh>>24);
-       p[sizeof(c->u)-13] = (unsigned char)(c->Nh>>32);
-       p[sizeof(c->u)-14] = (unsigned char)(c->Nh>>40);
-       p[sizeof(c->u)-15] = (unsigned char)(c->Nh>>48);
-       p[sizeof(c->u)-16] = (unsigned char)(c->Nh>>56);
-#endif
-
-       sha512_block (c,p,1);
-
-       if (md==0) return 0;
-
-       switch (c->md_len)
-               {
-               /* Let compiler decide if it's appropriate to unroll... */
-               case SHA384_DIGEST_LENGTH:
-                       for (n=0;n<SHA384_DIGEST_LENGTH/8;n++)
-                               {
-                               SHA_LONG64 t = c->h[n];
-
-                               *(md++) = (unsigned char)(t>>56);
-                               *(md++) = (unsigned char)(t>>48);
-                               *(md++) = (unsigned char)(t>>40);
-                               *(md++) = (unsigned char)(t>>32);
-                               *(md++) = (unsigned char)(t>>24);
-                               *(md++) = (unsigned char)(t>>16);
-                               *(md++) = (unsigned char)(t>>8);
-                               *(md++) = (unsigned char)(t);
-                               }
-                       break;
-               case SHA512_DIGEST_LENGTH:
-                       for (n=0;n<SHA512_DIGEST_LENGTH/8;n++)
-                               {
-                               SHA_LONG64 t = c->h[n];
-
-                               *(md++) = (unsigned char)(t>>56);
-                               *(md++) = (unsigned char)(t>>48);
-                               *(md++) = (unsigned char)(t>>40);
-                               *(md++) = (unsigned char)(t>>32);
-                               *(md++) = (unsigned char)(t>>24);
-                               *(md++) = (unsigned char)(t>>16);
-                               *(md++) = (unsigned char)(t>>8);
-                               *(md++) = (unsigned char)(t);
-                               }
-                       break;
-               /* ... as well as make sure md_len is not abused. */
-               default:        return 0;
-               }
-
-       return 1;
-       }
-
-int SHA384_Final (unsigned char *md,SHA512_CTX *c)
-{   return SHA512_Final (md,c);   }
-
-int SHA512_Update (SHA512_CTX *c, const void *_data, size_t len)
-       {
-       SHA_LONG64      l;
-       unsigned char  *p=c->u.p;
-       const unsigned char *data=(const unsigned char *)_data;
-
-       if(FIPS_selftest_failed())
-               return 0;
-
-       if (len==0) return  1;
-
-       l = (c->Nl+(((SHA_LONG64)len)<<3))&U64(0xffffffffffffffff);
-       if (l < c->Nl)          c->Nh++;
-       if (sizeof(len)>=8)     c->Nh+=(((SHA_LONG64)len)>>61);
-       c->Nl=l;
-
-       if (c->num != 0)
-               {
-               size_t n = sizeof(c->u) - c->num;
-
-               if (len < n)
-                       {
-                       memcpy (p+c->num,data,len), c->num += len;
-                       return 1;
-                       }
-               else    {
-                       memcpy (p+c->num,data,n), c->num = 0;
-                       len-=n, data+=n;
-                       sha512_block (c,p,1);
-                       }
-               }
-
-       if (len >= sizeof(c->u))
-               {
-#ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
-               if ((size_t)data%sizeof(c->u.d[0]) != 0)
-                       while (len >= sizeof(c->u))
-                               memcpy (p,data,sizeof(c->u)),
-                               sha512_block (c,p,1),
-                               len  -= sizeof(c->u),
-                               data += sizeof(c->u);
-               else
-#endif
-                       sha512_block (c,data,len/sizeof(c->u)),
-                       data += len,
-                       len  %= sizeof(c->u),
-                       data -= len;
-               }
-
-       if (len != 0)   memcpy (p,data,len), c->num = (int)len;
-
-       return 1;
-       }
-
-int SHA384_Update (SHA512_CTX *c, const void *data, size_t len)
-{   return SHA512_Update (c,data,len);   }
-
-void SHA512_Transform (SHA512_CTX *c, const unsigned char *data)
-{   sha512_block (c,data,1);  }
-
-unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
-       {
-       SHA512_CTX c;
-       static unsigned char m[SHA384_DIGEST_LENGTH];
-
-       if (md == NULL) md=m;
-       SHA384_Init(&c);
-       SHA512_Update(&c,d,n);
-       SHA512_Final(md,&c);
-       OPENSSL_cleanse(&c,sizeof(c));
-       return(md);
-       }
-
-unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md)
-       {
-       SHA512_CTX c;
-       static unsigned char m[SHA512_DIGEST_LENGTH];
-
-       if (md == NULL) md=m;
-       SHA512_Init(&c);
-       SHA512_Update(&c,d,n);
-       SHA512_Final(md,&c);
-       OPENSSL_cleanse(&c,sizeof(c));
-       return(md);
-       }
-
-#ifndef SHA512_ASM
-static const SHA_LONG64 K512[80] = {
-        U64(0x428a2f98d728ae22),U64(0x7137449123ef65cd),
-        U64(0xb5c0fbcfec4d3b2f),U64(0xe9b5dba58189dbbc),
-        U64(0x3956c25bf348b538),U64(0x59f111f1b605d019),
-        U64(0x923f82a4af194f9b),U64(0xab1c5ed5da6d8118),
-        U64(0xd807aa98a3030242),U64(0x12835b0145706fbe),
-        U64(0x243185be4ee4b28c),U64(0x550c7dc3d5ffb4e2),
-        U64(0x72be5d74f27b896f),U64(0x80deb1fe3b1696b1),
-        U64(0x9bdc06a725c71235),U64(0xc19bf174cf692694),
-        U64(0xe49b69c19ef14ad2),U64(0xefbe4786384f25e3),
-        U64(0x0fc19dc68b8cd5b5),U64(0x240ca1cc77ac9c65),
-        U64(0x2de92c6f592b0275),U64(0x4a7484aa6ea6e483),
-        U64(0x5cb0a9dcbd41fbd4),U64(0x76f988da831153b5),
-        U64(0x983e5152ee66dfab),U64(0xa831c66d2db43210),
-        U64(0xb00327c898fb213f),U64(0xbf597fc7beef0ee4),
-        U64(0xc6e00bf33da88fc2),U64(0xd5a79147930aa725),
-        U64(0x06ca6351e003826f),U64(0x142929670a0e6e70),
-        U64(0x27b70a8546d22ffc),U64(0x2e1b21385c26c926),
-        U64(0x4d2c6dfc5ac42aed),U64(0x53380d139d95b3df),
-        U64(0x650a73548baf63de),U64(0x766a0abb3c77b2a8),
-        U64(0x81c2c92e47edaee6),U64(0x92722c851482353b),
-        U64(0xa2bfe8a14cf10364),U64(0xa81a664bbc423001),
-        U64(0xc24b8b70d0f89791),U64(0xc76c51a30654be30),
-        U64(0xd192e819d6ef5218),U64(0xd69906245565a910),
-        U64(0xf40e35855771202a),U64(0x106aa07032bbd1b8),
-        U64(0x19a4c116b8d2d0c8),U64(0x1e376c085141ab53),
-        U64(0x2748774cdf8eeb99),U64(0x34b0bcb5e19b48a8),
-        U64(0x391c0cb3c5c95a63),U64(0x4ed8aa4ae3418acb),
-        U64(0x5b9cca4f7763e373),U64(0x682e6ff3d6b2b8a3),
-        U64(0x748f82ee5defb2fc),U64(0x78a5636f43172f60),
-        U64(0x84c87814a1f0ab72),U64(0x8cc702081a6439ec),
-        U64(0x90befffa23631e28),U64(0xa4506cebde82bde9),
-        U64(0xbef9a3f7b2c67915),U64(0xc67178f2e372532b),
-        U64(0xca273eceea26619c),U64(0xd186b8c721c0c207),
-        U64(0xeada7dd6cde0eb1e),U64(0xf57d4f7fee6ed178),
-        U64(0x06f067aa72176fba),U64(0x0a637dc5a2c898a6),
-        U64(0x113f9804bef90dae),U64(0x1b710b35131c471b),
-        U64(0x28db77f523047d84),U64(0x32caab7b40c72493),
-        U64(0x3c9ebe0a15c9bebc),U64(0x431d67c49c100d4c),
-        U64(0x4cc5d4becb3e42b6),U64(0x597f299cfc657e2a),
-        U64(0x5fcb6fab3ad6faec),U64(0x6c44198c4a475817) };
-
-#ifndef PEDANTIC
-# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-#  if defined(__x86_64) || defined(__x86_64__)
-#   define PULL64(x) ({ SHA_LONG64 ret=*((const SHA_LONG64 *)(&(x)));  \
-                               asm ("bswapq    %0"             \
-                               : "=r"(ret)                     \
-                               : "0"(ret)); ret;               })
-#  endif
-# endif
-#endif
-
-#ifndef PULL64
-#define B(x,j)    (((SHA_LONG64)(*(((const unsigned char *)(&x))+j)))<<((7-j)*8))
-#define PULL64(x) (B(x,0)|B(x,1)|B(x,2)|B(x,3)|B(x,4)|B(x,5)|B(x,6)|B(x,7))
-#endif
-
-#ifndef PEDANTIC
-# if defined(_MSC_VER)
-#  if defined(_WIN64)  /* applies to both IA-64 and AMD64 */
-#   define ROTR(a,n)   _rotr64((a),n)
-#  endif
-# elif defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-#  if defined(__x86_64) || defined(__x86_64__)
-#   define ROTR(a,n)   ({ unsigned long ret;           \
-                               asm ("rorq %1,%0"       \
-                               : "=r"(ret)             \
-                               : "J"(n),"0"(a)         \
-                               : "cc"); ret;           })
-#  elif defined(_ARCH_PPC) && defined(__64BIT__)
-#   define ROTR(a,n)   ({ unsigned long ret;           \
-                               asm ("rotrdi %0,%1,%2"  \
-                               : "=r"(ret)             \
-                               : "r"(a),"K"(n)); ret;  })
-#  endif
-# endif
-#endif
-
-#ifndef ROTR
-#define ROTR(x,s)      (((x)>>s) | (x)<<(64-s))
-#endif
-
-#define Sigma0(x)      (ROTR((x),28) ^ ROTR((x),34) ^ ROTR((x),39))
-#define Sigma1(x)      (ROTR((x),14) ^ ROTR((x),18) ^ ROTR((x),41))
-#define sigma0(x)      (ROTR((x),1)  ^ ROTR((x),8)  ^ ((x)>>7))
-#define sigma1(x)      (ROTR((x),19) ^ ROTR((x),61) ^ ((x)>>6))
-
-#define Ch(x,y,z)      (((x) & (y)) ^ ((~(x)) & (z)))
-#define Maj(x,y,z)     (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
-
-#ifdef OPENSSL_SMALL_FOOTPRINT
-
-static void sha512_block (SHA512_CTX *ctx, const void *in, size_t num)
-       {
-       const SHA_LONG64 *W=in;
-       SHA_LONG64      a,b,c,d,e,f,g,h,s0,s1,T1,T2;
-       SHA_LONG64      X[16];
-       int i;
-
-                       while (num--) {
-
-       a = ctx->h[0];  b = ctx->h[1];  c = ctx->h[2];  d = ctx->h[3];
-       e = ctx->h[4];  f = ctx->h[5];  g = ctx->h[6];  h = ctx->h[7];
-
-       for (i=0;i<16;i++)
-               {
-#ifdef B_ENDIAN
-               T1 = X[i] = W[i];
-#else
-               T1 = X[i] = PULL64(W[i]);
-#endif
-               T1 += h + Sigma1(e) + Ch(e,f,g) + K512[i];
-               T2 = Sigma0(a) + Maj(a,b,c);
-               h = g;  g = f;  f = e;  e = d + T1;
-               d = c;  c = b;  b = a;  a = T1 + T2;
-               }
-
-       for (;i<80;i++)
-               {
-               s0 = X[(i+1)&0x0f];     s0 = sigma0(s0);
-               s1 = X[(i+14)&0x0f];    s1 = sigma1(s1);
-
-               T1 = X[i&0xf] += s0 + s1 + X[(i+9)&0xf];
-               T1 += h + Sigma1(e) + Ch(e,f,g) + K512[i];
-               T2 = Sigma0(a) + Maj(a,b,c);
-               h = g;  g = f;  f = e;  e = d + T1;
-               d = c;  c = b;  b = a;  a = T1 + T2;
-               }
-
-       ctx->h[0] += a; ctx->h[1] += b; ctx->h[2] += c; ctx->h[3] += d;
-       ctx->h[4] += e; ctx->h[5] += f; ctx->h[6] += g; ctx->h[7] += h;
-
-                       W+=SHA_LBLOCK;
-                       }
-       }
-
-#else
-
-#define        ROUND_00_15(i,a,b,c,d,e,f,g,h)          do {    \
-       T1 += h + Sigma1(e) + Ch(e,f,g) + K512[i];      \
-       h = Sigma0(a) + Maj(a,b,c);                     \
-       d += T1;        h += T1;                } while (0)
-
-#define        ROUND_16_80(i,a,b,c,d,e,f,g,h,X)        do {    \
-       s0 = X[(i+1)&0x0f];     s0 = sigma0(s0);        \
-       s1 = X[(i+14)&0x0f];    s1 = sigma1(s1);        \
-       T1 = X[(i)&0x0f] += s0 + s1 + X[(i+9)&0x0f];    \
-       ROUND_00_15(i,a,b,c,d,e,f,g,h);         } while (0)
-
-static void sha512_block (SHA512_CTX *ctx, const void *in, size_t num)
-       {
-       const SHA_LONG64 *W=in;
-       SHA_LONG64      a,b,c,d,e,f,g,h,s0,s1,T1;
-       SHA_LONG64      X[16];
-       int i;
-
-                       while (num--) {
-
-       a = ctx->h[0];  b = ctx->h[1];  c = ctx->h[2];  d = ctx->h[3];
-       e = ctx->h[4];  f = ctx->h[5];  g = ctx->h[6];  h = ctx->h[7];
-
-#ifdef B_ENDIAN
-       T1 = X[0] = W[0];       ROUND_00_15(0,a,b,c,d,e,f,g,h);
-       T1 = X[1] = W[1];       ROUND_00_15(1,h,a,b,c,d,e,f,g);
-       T1 = X[2] = W[2];       ROUND_00_15(2,g,h,a,b,c,d,e,f);
-       T1 = X[3] = W[3];       ROUND_00_15(3,f,g,h,a,b,c,d,e);
-       T1 = X[4] = W[4];       ROUND_00_15(4,e,f,g,h,a,b,c,d);
-       T1 = X[5] = W[5];       ROUND_00_15(5,d,e,f,g,h,a,b,c);
-       T1 = X[6] = W[6];       ROUND_00_15(6,c,d,e,f,g,h,a,b);
-       T1 = X[7] = W[7];       ROUND_00_15(7,b,c,d,e,f,g,h,a);
-       T1 = X[8] = W[8];       ROUND_00_15(8,a,b,c,d,e,f,g,h);
-       T1 = X[9] = W[9];       ROUND_00_15(9,h,a,b,c,d,e,f,g);
-       T1 = X[10] = W[10];     ROUND_00_15(10,g,h,a,b,c,d,e,f);
-       T1 = X[11] = W[11];     ROUND_00_15(11,f,g,h,a,b,c,d,e);
-       T1 = X[12] = W[12];     ROUND_00_15(12,e,f,g,h,a,b,c,d);
-       T1 = X[13] = W[13];     ROUND_00_15(13,d,e,f,g,h,a,b,c);
-       T1 = X[14] = W[14];     ROUND_00_15(14,c,d,e,f,g,h,a,b);
-       T1 = X[15] = W[15];     ROUND_00_15(15,b,c,d,e,f,g,h,a);
-#else
-       T1 = X[0]  = PULL64(W[0]);      ROUND_00_15(0,a,b,c,d,e,f,g,h);
-       T1 = X[1]  = PULL64(W[1]);      ROUND_00_15(1,h,a,b,c,d,e,f,g);
-       T1 = X[2]  = PULL64(W[2]);      ROUND_00_15(2,g,h,a,b,c,d,e,f);
-       T1 = X[3]  = PULL64(W[3]);      ROUND_00_15(3,f,g,h,a,b,c,d,e);
-       T1 = X[4]  = PULL64(W[4]);      ROUND_00_15(4,e,f,g,h,a,b,c,d);
-       T1 = X[5]  = PULL64(W[5]);      ROUND_00_15(5,d,e,f,g,h,a,b,c);
-       T1 = X[6]  = PULL64(W[6]);      ROUND_00_15(6,c,d,e,f,g,h,a,b);
-       T1 = X[7]  = PULL64(W[7]);      ROUND_00_15(7,b,c,d,e,f,g,h,a);
-       T1 = X[8]  = PULL64(W[8]);      ROUND_00_15(8,a,b,c,d,e,f,g,h);
-       T1 = X[9]  = PULL64(W[9]);      ROUND_00_15(9,h,a,b,c,d,e,f,g);
-       T1 = X[10] = PULL64(W[10]);     ROUND_00_15(10,g,h,a,b,c,d,e,f);
-       T1 = X[11] = PULL64(W[11]);     ROUND_00_15(11,f,g,h,a,b,c,d,e);
-       T1 = X[12] = PULL64(W[12]);     ROUND_00_15(12,e,f,g,h,a,b,c,d);
-       T1 = X[13] = PULL64(W[13]);     ROUND_00_15(13,d,e,f,g,h,a,b,c);
-       T1 = X[14] = PULL64(W[14]);     ROUND_00_15(14,c,d,e,f,g,h,a,b);
-       T1 = X[15] = PULL64(W[15]);     ROUND_00_15(15,b,c,d,e,f,g,h,a);
-#endif
-
-       for (i=16;i<80;i+=8)
-               {
-               ROUND_16_80(i+0,a,b,c,d,e,f,g,h,X);
-               ROUND_16_80(i+1,h,a,b,c,d,e,f,g,X);
-               ROUND_16_80(i+2,g,h,a,b,c,d,e,f,X);
-               ROUND_16_80(i+3,f,g,h,a,b,c,d,e,X);
-               ROUND_16_80(i+4,e,f,g,h,a,b,c,d,X);
-               ROUND_16_80(i+5,d,e,f,g,h,a,b,c,X);
-               ROUND_16_80(i+6,c,d,e,f,g,h,a,b,X);
-               ROUND_16_80(i+7,b,c,d,e,f,g,h,a,X);
-               }
-
-       ctx->h[0] += a; ctx->h[1] += b; ctx->h[2] += c; ctx->h[3] += d;
-       ctx->h[4] += e; ctx->h[5] += f; ctx->h[6] += g; ctx->h[7] += h;
-
-                       W+=SHA_LBLOCK;
-                       }
-       }
-
-#endif
-
-#endif /* SHA512_ASM */
-
-#endif
-
-#endif /* OPENSSL_NO_SHA512 */
-
diff --git a/fips-1.0/sha/fips_sha_locl.h b/fips-1.0/sha/fips_sha_locl.h
deleted file mode 100644 (file)
index bf31d3b..0000000
+++ /dev/null
@@ -1,482 +0,0 @@
-/* crypto/sha/sha_locl.h */
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * 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 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <openssl/opensslconf.h>
-#include <openssl/fips_sha.h>
-#include <openssl/fips.h>
-
-#ifndef SHA_LONG_LOG2
-#define SHA_LONG_LOG2  2       /* default to 32 bits */
-#endif
-
-#define DATA_ORDER_IS_BIG_ENDIAN
-
-#define HASH_LONG               SHA_LONG
-#define HASH_LONG_LOG2          SHA_LONG_LOG2
-#define HASH_CTX                SHA_CTX
-#define HASH_CBLOCK             SHA_CBLOCK
-#define HASH_LBLOCK             SHA_LBLOCK
-#define HASH_MAKE_STRING(c,s)   do {   \
-       unsigned long ll;               \
-       ll=(c)->h0; HOST_l2c(ll,(s));   \
-       ll=(c)->h1; HOST_l2c(ll,(s));   \
-       ll=(c)->h2; HOST_l2c(ll,(s));   \
-       ll=(c)->h3; HOST_l2c(ll,(s));   \
-       ll=(c)->h4; HOST_l2c(ll,(s));   \
-       } while (0)
-
-#if defined(SHA_0)
-
-# define HASH_UPDATE                   SHA_Update
-# define HASH_TRANSFORM                SHA_Transform
-# define HASH_FINAL                    SHA_Final
-# define HASH_INIT                     SHA_Init
-# define HASH_BLOCK_HOST_ORDER         sha_block_host_order
-# define HASH_BLOCK_DATA_ORDER         sha_block_data_order
-# define Xupdate(a,ix,ia,ib,ic,id)     (ix=(a)=(ia^ib^ic^id))
-
-  void sha_block_host_order (SHA_CTX *c, const void *p,size_t num);
-  void sha_block_data_order (SHA_CTX *c, const void *p,size_t num);
-
-#elif defined(SHA_1)
-
-# define HASH_UPDATE                   SHA1_Update
-# define HASH_TRANSFORM                SHA1_Transform
-# define HASH_FINAL                    SHA1_Final
-# define HASH_INIT                     SHA1_Init
-# define HASH_BLOCK_HOST_ORDER         sha1_block_host_order
-# define HASH_BLOCK_DATA_ORDER         sha1_block_data_order
-# if defined(__MWERKS__) && defined(__MC68K__)
-   /* Metrowerks for Motorola fails otherwise:-( <appro@fy.chalmers.se> */
-#  define Xupdate(a,ix,ia,ib,ic,id)    do { (a)=(ia^ib^ic^id);         \
-                                            ix=(a)=ROTATE((a),1);      \
-                                       } while (0)
-# else
-#  define Xupdate(a,ix,ia,ib,ic,id)    ( (a)=(ia^ib^ic^id),    \
-                                         ix=(a)=ROTATE((a),1)  \
-                                       )
-# endif
-
-# ifdef SHA1_ASM
-#  if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__)
-#   define sha1_block_host_order               sha1_block_asm_host_order
-#   define DONT_IMPLEMENT_BLOCK_HOST_ORDER
-#   define sha1_block_data_order               sha1_block_asm_data_order
-#   define DONT_IMPLEMENT_BLOCK_DATA_ORDER
-#   define HASH_BLOCK_DATA_ORDER_ALIGNED       sha1_block_asm_data_order
-#  endif
-# endif
-  void sha1_block_host_order (SHA_CTX *c, const void *p,size_t num);
-  void sha1_block_data_order (SHA_CTX *c, const void *p,size_t num);
-
-#else
-# error "Either SHA_0 or SHA_1 must be defined."
-#endif
-
-#include "fips_md32_common.h"
-
-#define INIT_DATA_h0 0x67452301UL
-#define INIT_DATA_h1 0xefcdab89UL
-#define INIT_DATA_h2 0x98badcfeUL
-#define INIT_DATA_h3 0x10325476UL
-#define INIT_DATA_h4 0xc3d2e1f0UL
-
-int HASH_INIT (SHA_CTX *c)
-       {
-       /* This assert denotes binary compatibility in 0.9.7 context
-           and commonly optimized away by compiler. */
-       OPENSSL_assert(sizeof(unsigned long)<=sizeof(size_t));
-       c->h0=INIT_DATA_h0;
-       c->h1=INIT_DATA_h1;
-       c->h2=INIT_DATA_h2;
-       c->h3=INIT_DATA_h3;
-       c->h4=INIT_DATA_h4;
-       c->Nl=0;
-       c->Nh=0;
-       c->num=0;
-       return 1;
-       }
-
-#define K_00_19        0x5a827999UL
-#define K_20_39 0x6ed9eba1UL
-#define K_40_59 0x8f1bbcdcUL
-#define K_60_79 0xca62c1d6UL
-
-/* As  pointed out by Wei Dai <weidai@eskimo.com>, F() below can be
- * simplified to the code in F_00_19.  Wei attributes these optimisations
- * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
- * #define F(x,y,z) (((x) & (y))  |  ((~(x)) & (z)))
- * I've just become aware of another tweak to be made, again from Wei Dai,
- * in F_40_59, (x&a)|(y&a) -> (x|y)&a
- */
-#define        F_00_19(b,c,d)  ((((c) ^ (d)) & (b)) ^ (d)) 
-#define        F_20_39(b,c,d)  ((b) ^ (c) ^ (d))
-#define F_40_59(b,c,d) (((b) & (c)) | (((b)|(c)) & (d))) 
-#define        F_60_79(b,c,d)  F_20_39(b,c,d)
-
-#define BODY_00_15(i,a,b,c,d,e,f,xi) \
-       (f)=xi+(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
-       (b)=ROTATE((b),30);
-
-#define BODY_16_19(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
-       Xupdate(f,xi,xa,xb,xc,xd); \
-       (f)+=(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
-       (b)=ROTATE((b),30);
-
-#define BODY_20_31(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
-       Xupdate(f,xi,xa,xb,xc,xd); \
-       (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
-       (b)=ROTATE((b),30);
-
-#define BODY_32_39(i,a,b,c,d,e,f,xa,xb,xc,xd) \
-       Xupdate(f,xa,xa,xb,xc,xd); \
-       (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
-       (b)=ROTATE((b),30);
-
-#define BODY_40_59(i,a,b,c,d,e,f,xa,xb,xc,xd) \
-       Xupdate(f,xa,xa,xb,xc,xd); \
-       (f)+=(e)+K_40_59+ROTATE((a),5)+F_40_59((b),(c),(d)); \
-       (b)=ROTATE((b),30);
-
-#define BODY_60_79(i,a,b,c,d,e,f,xa,xb,xc,xd) \
-       Xupdate(f,xa,xa,xb,xc,xd); \
-       (f)=xa+(e)+K_60_79+ROTATE((a),5)+F_60_79((b),(c),(d)); \
-       (b)=ROTATE((b),30);
-
-#ifdef X
-#undef X
-#endif
-#ifndef MD32_XARRAY
-  /*
-   * Originally X was an array. As it's automatic it's natural
-   * to expect RISC compiler to accomodate at least part of it in
-   * the register bank, isn't it? Unfortunately not all compilers
-   * "find" this expectation reasonable:-( On order to make such
-   * compilers generate better code I replace X[] with a bunch of
-   * X0, X1, etc. See the function body below...
-   *                                   <appro@fy.chalmers.se>
-   */
-# define X(i)  XX##i
-#else
-  /*
-   * However! Some compilers (most notably HP C) get overwhelmed by
-   * that many local variables so that we have to have the way to
-   * fall down to the original behavior.
-   */
-# define X(i)  XX[i]
-#endif
-
-#ifndef DONT_IMPLEMENT_BLOCK_HOST_ORDER
-void HASH_BLOCK_HOST_ORDER (SHA_CTX *c, const void *d, size_t num)
-       {
-       const SHA_LONG *W=d;
-       register unsigned MD32_REG_T A,B,C,D,E,T;
-#ifndef MD32_XARRAY
-       unsigned MD32_REG_T     XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
-                               XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
-#else
-       SHA_LONG        XX[16];
-#endif
-
-       if(FIPS_selftest_failed())
-           return;
-
-       A=c->h0;
-       B=c->h1;
-       C=c->h2;
-       D=c->h3;
-       E=c->h4;
-
-       for (;;)
-               {
-       BODY_00_15( 0,A,B,C,D,E,T,W[ 0]);
-       BODY_00_15( 1,T,A,B,C,D,E,W[ 1]);
-       BODY_00_15( 2,E,T,A,B,C,D,W[ 2]);
-       BODY_00_15( 3,D,E,T,A,B,C,W[ 3]);
-       BODY_00_15( 4,C,D,E,T,A,B,W[ 4]);
-       BODY_00_15( 5,B,C,D,E,T,A,W[ 5]);
-       BODY_00_15( 6,A,B,C,D,E,T,W[ 6]);
-       BODY_00_15( 7,T,A,B,C,D,E,W[ 7]);
-       BODY_00_15( 8,E,T,A,B,C,D,W[ 8]);
-       BODY_00_15( 9,D,E,T,A,B,C,W[ 9]);
-       BODY_00_15(10,C,D,E,T,A,B,W[10]);
-       BODY_00_15(11,B,C,D,E,T,A,W[11]);
-       BODY_00_15(12,A,B,C,D,E,T,W[12]);
-       BODY_00_15(13,T,A,B,C,D,E,W[13]);
-       BODY_00_15(14,E,T,A,B,C,D,W[14]);
-       BODY_00_15(15,D,E,T,A,B,C,W[15]);
-
-       BODY_16_19(16,C,D,E,T,A,B,X( 0),W[ 0],W[ 2],W[ 8],W[13]);
-       BODY_16_19(17,B,C,D,E,T,A,X( 1),W[ 1],W[ 3],W[ 9],W[14]);
-       BODY_16_19(18,A,B,C,D,E,T,X( 2),W[ 2],W[ 4],W[10],W[15]);
-       BODY_16_19(19,T,A,B,C,D,E,X( 3),W[ 3],W[ 5],W[11],X( 0));
-
-       BODY_20_31(20,E,T,A,B,C,D,X( 4),W[ 4],W[ 6],W[12],X( 1));
-       BODY_20_31(21,D,E,T,A,B,C,X( 5),W[ 5],W[ 7],W[13],X( 2));
-       BODY_20_31(22,C,D,E,T,A,B,X( 6),W[ 6],W[ 8],W[14],X( 3));
-       BODY_20_31(23,B,C,D,E,T,A,X( 7),W[ 7],W[ 9],W[15],X( 4));
-       BODY_20_31(24,A,B,C,D,E,T,X( 8),W[ 8],W[10],X( 0),X( 5));
-       BODY_20_31(25,T,A,B,C,D,E,X( 9),W[ 9],W[11],X( 1),X( 6));
-       BODY_20_31(26,E,T,A,B,C,D,X(10),W[10],W[12],X( 2),X( 7));
-       BODY_20_31(27,D,E,T,A,B,C,X(11),W[11],W[13],X( 3),X( 8));
-       BODY_20_31(28,C,D,E,T,A,B,X(12),W[12],W[14],X( 4),X( 9));
-       BODY_20_31(29,B,C,D,E,T,A,X(13),W[13],W[15],X( 5),X(10));
-       BODY_20_31(30,A,B,C,D,E,T,X(14),W[14],X( 0),X( 6),X(11));
-       BODY_20_31(31,T,A,B,C,D,E,X(15),W[15],X( 1),X( 7),X(12));
-
-       BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13));
-       BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14));
-       BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15));
-       BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0));
-       BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1));
-       BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2));
-       BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3));
-       BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4));
-
-       BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5));
-       BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6));
-       BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7));
-       BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8));
-       BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9));
-       BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10));
-       BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11));
-       BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12));
-       BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13));
-       BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14));
-       BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15));
-       BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0));
-       BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1));
-       BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2));
-       BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3));
-       BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4));
-       BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5));
-       BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6));
-       BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7));
-       BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8));
-
-       BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9));
-       BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10));
-       BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11));
-       BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12));
-       BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13));
-       BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14));
-       BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15));
-       BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0));
-       BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1));
-       BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2));
-       BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3));
-       BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4));
-       BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5));
-       BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6));
-       BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7));
-       BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8));
-       BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9));
-       BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10));
-       BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11));
-       BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12));
-       
-       c->h0=(c->h0+E)&0xffffffffL; 
-       c->h1=(c->h1+T)&0xffffffffL;
-       c->h2=(c->h2+A)&0xffffffffL;
-       c->h3=(c->h3+B)&0xffffffffL;
-       c->h4=(c->h4+C)&0xffffffffL;
-
-       if (--num == 0) break;
-
-       A=c->h0;
-       B=c->h1;
-       C=c->h2;
-       D=c->h3;
-       E=c->h4;
-
-       W+=SHA_LBLOCK;
-               }
-       }
-#endif
-
-#ifndef DONT_IMPLEMENT_BLOCK_DATA_ORDER
-void HASH_BLOCK_DATA_ORDER (SHA_CTX *c, const void *p, size_t num)
-       {
-       const unsigned char *data=p;
-       register unsigned MD32_REG_T A,B,C,D,E,T,l;
-#ifndef MD32_XARRAY
-       unsigned MD32_REG_T     XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
-                               XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
-#else
-       SHA_LONG        XX[16];
-#endif
-
-       if(FIPS_selftest_failed())
-           return;
-
-       A=c->h0;
-       B=c->h1;
-       C=c->h2;
-       D=c->h3;
-       E=c->h4;
-
-       for (;;)
-               {
-
-       HOST_c2l(data,l); X( 0)=l;              HOST_c2l(data,l); X( 1)=l;
-       BODY_00_15( 0,A,B,C,D,E,T,X( 0));       HOST_c2l(data,l); X( 2)=l;
-       BODY_00_15( 1,T,A,B,C,D,E,X( 1));       HOST_c2l(data,l); X( 3)=l;
-       BODY_00_15( 2,E,T,A,B,C,D,X( 2));       HOST_c2l(data,l); X( 4)=l;
-       BODY_00_15( 3,D,E,T,A,B,C,X( 3));       HOST_c2l(data,l); X( 5)=l;
-       BODY_00_15( 4,C,D,E,T,A,B,X( 4));       HOST_c2l(data,l); X( 6)=l;
-       BODY_00_15( 5,B,C,D,E,T,A,X( 5));       HOST_c2l(data,l); X( 7)=l;
-       BODY_00_15( 6,A,B,C,D,E,T,X( 6));       HOST_c2l(data,l); X( 8)=l;
-       BODY_00_15( 7,T,A,B,C,D,E,X( 7));       HOST_c2l(data,l); X( 9)=l;
-       BODY_00_15( 8,E,T,A,B,C,D,X( 8));       HOST_c2l(data,l); X(10)=l;
-       BODY_00_15( 9,D,E,T,A,B,C,X( 9));       HOST_c2l(data,l); X(11)=l;
-       BODY_00_15(10,C,D,E,T,A,B,X(10));       HOST_c2l(data,l); X(12)=l;
-       BODY_00_15(11,B,C,D,E,T,A,X(11));       HOST_c2l(data,l); X(13)=l;
-       BODY_00_15(12,A,B,C,D,E,T,X(12));       HOST_c2l(data,l); X(14)=l;
-       BODY_00_15(13,T,A,B,C,D,E,X(13));       HOST_c2l(data,l); X(15)=l;
-       BODY_00_15(14,E,T,A,B,C,D,X(14));
-       BODY_00_15(15,D,E,T,A,B,C,X(15));
-
-       BODY_16_19(16,C,D,E,T,A,B,X( 0),X( 0),X( 2),X( 8),X(13));
-       BODY_16_19(17,B,C,D,E,T,A,X( 1),X( 1),X( 3),X( 9),X(14));
-       BODY_16_19(18,A,B,C,D,E,T,X( 2),X( 2),X( 4),X(10),X(15));
-       BODY_16_19(19,T,A,B,C,D,E,X( 3),X( 3),X( 5),X(11),X( 0));
-
-       BODY_20_31(20,E,T,A,B,C,D,X( 4),X( 4),X( 6),X(12),X( 1));
-       BODY_20_31(21,D,E,T,A,B,C,X( 5),X( 5),X( 7),X(13),X( 2));
-       BODY_20_31(22,C,D,E,T,A,B,X( 6),X( 6),X( 8),X(14),X( 3));
-       BODY_20_31(23,B,C,D,E,T,A,X( 7),X( 7),X( 9),X(15),X( 4));
-       BODY_20_31(24,A,B,C,D,E,T,X( 8),X( 8),X(10),X( 0),X( 5));
-       BODY_20_31(25,T,A,B,C,D,E,X( 9),X( 9),X(11),X( 1),X( 6));
-       BODY_20_31(26,E,T,A,B,C,D,X(10),X(10),X(12),X( 2),X( 7));
-       BODY_20_31(27,D,E,T,A,B,C,X(11),X(11),X(13),X( 3),X( 8));
-       BODY_20_31(28,C,D,E,T,A,B,X(12),X(12),X(14),X( 4),X( 9));
-       BODY_20_31(29,B,C,D,E,T,A,X(13),X(13),X(15),X( 5),X(10));
-       BODY_20_31(30,A,B,C,D,E,T,X(14),X(14),X( 0),X( 6),X(11));
-       BODY_20_31(31,T,A,B,C,D,E,X(15),X(15),X( 1),X( 7),X(12));
-
-       BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13));
-       BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14));
-       BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15));
-       BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0));
-       BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1));
-       BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2));
-       BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3));
-       BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4));
-
-       BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5));
-       BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6));
-       BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7));
-       BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8));
-       BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9));
-       BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10));
-       BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11));
-       BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12));
-       BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13));
-       BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14));
-       BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15));
-       BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0));
-       BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1));
-       BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2));
-       BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3));
-       BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4));
-       BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5));
-       BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6));
-       BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7));
-       BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8));
-
-       BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9));
-       BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10));
-       BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11));
-       BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12));
-       BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13));
-       BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14));
-       BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15));
-       BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0));
-       BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1));
-       BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2));
-       BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3));
-       BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4));
-       BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5));
-       BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6));
-       BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7));
-       BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8));
-       BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9));
-       BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10));
-       BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11));
-       BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12));
-       
-       c->h0=(c->h0+E)&0xffffffffL; 
-       c->h1=(c->h1+T)&0xffffffffL;
-       c->h2=(c->h2+A)&0xffffffffL;
-       c->h3=(c->h3+B)&0xffffffffL;
-       c->h4=(c->h4+C)&0xffffffffL;
-
-       if (--num == 0) break;
-
-       A=c->h0;
-       B=c->h1;
-       C=c->h2;
-       D=c->h3;
-       E=c->h4;
-
-               }
-       }
-#endif
index 8c10c2cd83112e2c3ae0789a9784e2bb5250ad17..aba7acc610e1c11aa67594a0405585b065d8b79f 100644 (file)
@@ -51,7 +51,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <openssl/opensslconf.h>
-#include <openssl/fips_sha.h>
+#include <openssl/sha.h>
 #include <openssl/hmac.h>
 
 int FIPS_selftest_failed() { return 0; }
index 49073510bcecaec1e1602d1785a29bbd02b7805f..8421b999aa28c7219a76438b2e4932cea8dbf1ca 100644 (file)
@@ -671,12 +671,11 @@ fips_dssvs.o: ../include/openssl/bio.h ../include/openssl/bn.h
 fips_dssvs.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
 fips_dssvs.o: ../include/openssl/e_os2.h ../include/openssl/err.h
 fips_dssvs.o: ../include/openssl/evp.h ../include/openssl/fips.h
-fips_dssvs.o: ../include/openssl/fips_sha.h ../include/openssl/lhash.h
-fips_dssvs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
-fips_dssvs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
-fips_dssvs.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
-fips_dssvs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
-fips_dssvs.o: fips_dssvs.c
+fips_dssvs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
+fips_dssvs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
+fips_dssvs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
+fips_dssvs.o: ../include/openssl/safestack.h ../include/openssl/stack.h
+fips_dssvs.o: ../include/openssl/symhacks.h fips_dssvs.c
 fips_hmactest.o: ../fips-1.0/fips_utl.h ../include/openssl/asn1.h
 fips_hmactest.o: ../include/openssl/bio.h ../include/openssl/buffer.h
 fips_hmactest.o: ../include/openssl/conf.h ../include/openssl/crypto.h
@@ -785,9 +784,9 @@ fips_test_suite.o: ../include/openssl/bn.h ../include/openssl/crypto.h
 fips_test_suite.o: ../include/openssl/des.h ../include/openssl/des_old.h
 fips_test_suite.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
 fips_test_suite.o: ../include/openssl/err.h ../include/openssl/evp.h
-fips_test_suite.o: ../include/openssl/fips.h ../include/openssl/fips_sha.h
-fips_test_suite.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
-fips_test_suite.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
+fips_test_suite.o: ../include/openssl/fips.h ../include/openssl/hmac.h
+fips_test_suite.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
+fips_test_suite.o: ../include/openssl/objects.h
 fips_test_suite.o: ../include/openssl/opensslconf.h
 fips_test_suite.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
 fips_test_suite.o: ../include/openssl/rand.h ../include/openssl/rsa.h
index 2a7c98237f120bcd8068e0ff38edaaccab806c25..07f8619e5a6fb4146319eb013a5a273daebd64d9 100755 (executable)
@@ -291,7 +291,7 @@ $crypto.=" crypto/krb5/krb5_asn.h";
 $crypto.=" crypto/tmdiff.h";
 $crypto.=" crypto/store/store.h";
 $crypto.=" crypto/pqueue/pqueue.h";
-$crypto.=" fips-1.0/fips.h fips-1.0/rand/fips_rand.h fips-1.0/sha/fips_sha.h";
+$crypto.=" fips-1.0/fips.h fips-1.0/rand/fips_rand.h";
 
 my $symhacks="crypto/symhacks.h";