[prev in list] [next in list] [prev in thread] [next in thread]
List: rpm-cvs
Subject: [CVS] RPM: rpm/rpmio/ fugue.c fugue.h
From: "Jeff Johnson" <jbj () rpm5 ! org>
Date: 2009-07-24 20:41:23
Message-ID: 20090724204123.D37112705D () rpm5 ! org
[Download RAW message or body]
RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 24-Jul-2009 22:41:23
Branch: HEAD Handle: 2009072420412300
Modified files:
rpm/rpmio fugue.c fugue.h
Log:
- fugue: initialize from tables, not dynamically.
Summary:
Revision Changes Path
2.3 +131 -20 rpm/rpmio/fugue.c
2.4 +6 -6 rpm/rpmio/fugue.h
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/rpmio/fugue.c
============================================================================
$ cvs diff -u -r2.2 -r2.3 fugue.c
--- rpm/rpmio/fugue.c 24 Jul 2009 19:30:32 -0000 2.2
+++ rpm/rpmio/fugue.c 24 Jul 2009 20:41:23 -0000 2.3
@@ -9,19 +9,23 @@
*
*********************************************************/
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
#include "fugue.h"
+const hashFunction fugue256 = {
+ .name = "FUGUE-256",
+ .paramsize = sizeof(fugueParam),
+ .blocksize = 64,
+ .digestsize = 256/8, /* XXX default to FUGUE-256 */
+ .reset = (hashFunctionReset) fugueReset,
+ .update = (hashFunctionUpdate) fugueUpdate,
+ .digest = (hashFunctionDigest) fugueDigest
+};
+
enum { SUCCESS = 0, FAIL = 1, BAD_HASHBITLEN = 2 };
/* ===== "fugue.h" */
-#include <limits.h>
-#include <endian.h>
-#if BYTE_ORDER == BIG_ENDIAN
+#if WORDS_BIGENDIAN
#define BE2HO_8(_x) (_x)
#define HO2BE_8(_x) (_x)
#define BE2HO_4(_x) (_x)
@@ -54,25 +58,130 @@
#define cdiv(_n,_d) ((_n + _d - 1) / _d)
-static struct {
+static const struct {
int hashbitlen;
hashCfg Cfg;
uint32_t IV[16];
} hashSizes[] = {
- {224,{7 ,30,2,5,13},{0}},
- {256,{8 ,30,2,5,13},{0}},
- {384,{12,36,3,6,13},{0}},
- {512,{16,36,4,8,13},{0}},
+ {224,{7 ,30,2,5,13},
+ { 0x0d12c9f4, 0x57f78662, 0x1ce039ee, 0xcbe374e0,
+ 0x627c12a1, 0x15d2439a, 0x9a678dbd, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000 }},
+ {256,{8 ,30,2,5,13},
+ { 0xdebd52e9, 0x5f137166, 0x68f6d4e0, 0x94b5b0d2,
+ 0x1d626cf9, 0xde29f9fb, 0x99e84991, 0x48c2f834,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000 }},
+ {384,{12,36,3,6,13},
+ { 0x0dec61aa, 0x1f2e2531, 0xc7b41da0, 0x85096000,
+ 0x4af45e21, 0x9c5e1b74, 0x9a3e69fa, 0x40b03e47,
+ 0x8aae02e5, 0xe0259ca9, 0x7c5195bc, 0xa195105c,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000 }},
+ {512,{16,36,4,8,13},
+ { 0x7ea50788, 0x75af16e6, 0xdbe4d3c5, 0x27b09aac,
+ 0x17f115d9, 0x54cceeb6, 0x0b02e806, 0xd1ef924a,
+ 0xc9e2c6aa, 0x9813b2dd, 0x3858e6ca, 0x3f207f43,
+ 0xe778ea25, 0xd6dd1f95, 0x1dd16eda, 0x67353ee1 }},
{0}
};
-static uint8_t init_fugue = 0;
-static hash32_s M[4];
-static union {
+#ifdef UNUSED
+static uint8_t init_fugue = 1;
+#endif
+
+static const hash32_s M[4] = {
+ {0x04070101}, {0x07010104}, {0x01010407}, {0x01040701},
+};
+
+static const union {
uint64_t d;
uint8_t b[8];
-} gf2mul[256];
-static uint8_t aessub[256];
+} gf2mul[256] = {
+{0x0000000000000000ull},{0x0706050403020100ull},{0x0e0c0a0806040200ull},{0x090a0f0c05060300ull},
+{0x1c1814100c080400ull},{0x1b1e11140f0a0500ull},{0x12141e180a0c0600ull},{0x15121b1c090e0700ull},
+{0x3830282018100800ull},{0x3f362d241b120900ull},{0x363c22281e140a00ull},{0x313a272c1d160b00ull},
+{0x24283c3014180c00ull},{0x232e3934171a0d00ull},{0x2a243638121c0e00ull},{0x2d22333c111e0f00ull},
+{0x7060504030201000ull},{0x7766554433221100ull},{0x7e6c5a4836241200ull},{0x796a5f4c35261300ull},
+{0x6c7844503c281400ull},{0x6b7e41543f2a1500ull},{0x62744e583a2c1600ull},{0x65724b5c392e1700ull},
+{0x4850786028301800ull},{0x4f567d642b321900ull},{0x465c72682e341a00ull},{0x415a776c2d361b00ull},
+{0x54486c7024381c00ull},{0x534e6974273a1d00ull},{0x5a446678223c1e00ull},{0x5d42637c213e1f00ull},
+{0xe0c0a08060402000ull},{0xe7c6a58463422100ull},{0xeeccaa8866442200ull},{0xe9caaf8c65462300ull},
+{0xfcd8b4906c482400ull},{0xfbdeb1946f4a2500ull},{0xf2d4be986a4c2600ull},{0xf5d2bb9c694e2700ull},
+{0xd8f088a078502800ull},{0xdff68da47b522900ull},{0xd6fc82a87e542a00ull},{0xd1fa87ac7d562b00ull},
+{0xc4e89cb074582c00ull},{0xc3ee99b4775a2d00ull},{0xcae496b8725c2e00ull},{0xcde293bc715e2f00ull},
+{0x90a0f0c050603000ull},{0x97a6f5c453623100ull},{0x9eacfac856643200ull},{0x99aaffcc55663300ull},
+{0x8cb8e4d05c683400ull},{0x8bbee1d45f6a3500ull},{0x82b4eed85a6c3600ull},{0x85b2ebdc596e3700ull},
+{0xa890d8e048703800ull},{0xaf96dde44b723900ull},{0xa69cd2e84e743a00ull},{0xa19ad7ec4d763b00ull},
+{0xb488ccf044783c00ull},{0xb38ec9f4477a3d00ull},{0xba84c6f8427c3e00ull},{0xbd82c3fc417e3f00ull},
+{0xdb9b5b1bc0804000ull},{0xdc9d5e1fc3824100ull},{0xd5975113c6844200ull},{0xd2915417c5864300ull},
+{0xc7834f0bcc884400ull},{0xc0854a0fcf8a4500ull},{0xc98f4503ca8c4600ull},{0xce894007c98e4700ull},
+{0xe3ab733bd8904800ull},{0xe4ad763fdb924900ull},{0xeda77933de944a00ull},{0xeaa17c37dd964b00ull},
+{0xffb3672bd4984c00ull},{0xf8b5622fd79a4d00ull},{0xf1bf6d23d29c4e00ull},{0xf6b96827d19e4f00ull},
+{0xabfb0b5bf0a05000ull},{0xacfd0e5ff3a25100ull},{0xa5f70153f6a45200ull},{0xa2f10457f5a65300ull},
+{0xb7e31f4bfca85400ull},{0xb0e51a4fffaa5500ull},{0xb9ef1543faac5600ull},{0xbee91047f9ae5700ull},
+{0x93cb237be8b05800ull},{0x94cd267febb25900ull},{0x9dc72973eeb45a00ull},{0x9ac12c77edb65b00ull},
+{0x8fd3376be4b85c00ull},{0x88d5326fe7ba5d00ull},{0x81df3d63e2bc5e00ull},{0x86d93867e1be5f00ull},
+{0x3b5bfb9ba0c06000ull},{0x3c5dfe9fa3c26100ull},{0x3557f193a6c46200ull},{0x3251f497a5c66300ull},
+{0x2743ef8bacc86400ull},{0x2045ea8fafca6500ull},{0x294fe583aacc6600ull},{0x2e49e087a9ce6700ull},
+{0x036bd3bbb8d06800ull},{0x046dd6bfbbd26900ull},{0x0d67d9b3bed46a00ull},{0x0a61dcb7bdd66b00ull},
+{0x1f73c7abb4d86c00ull},{0x1875c2afb7da6d00ull},{0x117fcda3b2dc6e00ull},{0x1679c8a7b1de6f00ull},
+{0x4b3babdb90e07000ull},{0x4c3daedf93e27100ull},{0x4537a1d396e47200ull},{0x4231a4d795e67300ull},
+{0x5723bfcb9ce87400ull},{0x5025bacf9fea7500ull},{0x592fb5c39aec7600ull},{0x5e29b0c799ee7700ull},
+{0x730b83fb88f07800ull},{0x740d86ff8bf27900ull},{0x7d0789f38ef47a00ull},{0x7a018cf78df67b00ull},
+{0x6f1397eb84f87c00ull},{0x681592ef87fa7d00ull},{0x611f9de382fc7e00ull},{0x661998e781fe7f00ull},
+{0xad2db6369b1b8000ull},{0xaa2bb33298198100ull},{0xa321bc3e9d1f8200ull},{0xa427b93a9e1d8300ull},
+{0xb135a22697138400ull},{0xb633a72294118500ull},{0xbf39a82e91178600ull},{0xb83fad2a92158700ull},
+{0x951d9e16830b8800ull},{0x921b9b1280098900ull},{0x9b11941e850f8a00ull},{0x9c17911a860d8b00ull},
+{0x89058a068f038c00ull},{0x8e038f028c018d00ull},{0x8709800e89078e00ull},{0x800f850a8a058f00ull},
+{0xdd4de676ab3b9000ull},{0xda4be372a8399100ull},{0xd341ec7ead3f9200ull},{0xd447e97aae3d9300ull},
+{0xc155f266a7339400ull},{0xc653f762a4319500ull},{0xcf59f86ea1379600ull},{0xc85ffd6aa2359700ull},
+{0xe57dce56b32b9800ull},{0xe27bcb52b0299900ull},{0xeb71c45eb52f9a00ull},{0xec77c15ab62d9b00ull},
+{0xf965da46bf239c00ull},{0xfe63df42bc219d00ull},{0xf769d04eb9279e00ull},{0xf06fd54aba259f00ull},
+{0x4ded16b6fb5ba000ull},{0x4aeb13b2f859a100ull},{0x43e11cbefd5fa200ull},{0x44e719bafe5da300ull},
+{0x51f502a6f753a400ull},{0x56f307a2f451a500ull},{0x5ff908aef157a600ull},{0x58ff0daaf255a700ull},
+{0x75dd3e96e34ba800ull},{0x72db3b92e049a900ull},{0x7bd1349ee54faa00ull},{0x7cd7319ae64dab00ull},
+{0x69c52a86ef43ac00ull},{0x6ec32f82ec41ad00ull},{0x67c9208ee947ae00ull},{0x60cf258aea45af00ull},
+{0x3d8d46f6cb7bb000ull},{0x3a8b43f2c879b100ull},{0x33814cfecd7fb200ull},{0x348749face7db300ull},
+{0x219552e6c773b400ull},{0x269357e2c471b500ull},{0x2f9958eec177b600ull},{0x289f5deac275b700ull},
+{0x05bd6ed6d36bb800ull},{0x02bb6bd2d069b900ull},{0x0bb164ded56fba00ull},{0x0cb761dad66dbb00ull},
+{0x19a57ac6df63bc00ull},{0x1ea37fc2dc61bd00ull},{0x17a970ced967be00ull},{0x10af75cada65bf00ull},
+{0x76b6ed2d5b9bc000ull},{0x71b0e8295899c100ull},{0x78bae7255d9fc200ull},{0x7fbce2215e9dc300ull},
+{0x6aaef93d5793c400ull},{0x6da8fc395491c500ull},{0x64a2f3355197c600ull},{0x63a4f6315295c700ull},
+{0x4e86c50d438bc800ull},{0x4980c0094089c900ull},{0x408acf05458fca00ull},{0x478cca01468dcb00ull},
+{0x529ed11d4f83cc00ull},{0x5598d4194c81cd00ull},{0x5c92db154987ce00ull},{0x5b94de114a85cf00ull},
+{0x06d6bd6d6bbbd000ull},{0x01d0b86968b9d100ull},{0x08dab7656dbfd200ull},{0x0fdcb2616ebdd300ull},
+{0x1acea97d67b3d400ull},{0x1dc8ac7964b1d500ull},{0x14c2a37561b7d600ull},{0x13c4a67162b5d700ull},
+{0x3ee6954d73abd800ull},{0x39e0904970a9d900ull},{0x30ea9f4575afda00ull},{0x37ec9a4176addb00ull},
+{0x22fe815d7fa3dc00ull},{0x25f884597ca1dd00ull},{0x2cf28b5579a7de00ull},{0x2bf48e517aa5df00ull},
+{0x96764dad3bdbe000ull},{0x917048a938d9e100ull},{0x987a47a53ddfe200ull},{0x9f7c42a13edde300ull},
+{0x8a6e59bd37d3e400ull},{0x8d685cb934d1e500ull},{0x846253b531d7e600ull},{0x836456b132d5e700ull},
+{0xae46658d23cbe800ull},{0xa940608920c9e900ull},{0xa04a6f8525cfea00ull},{0xa74c6a8126cdeb00ull},
+{0xb25e719d2fc3ec00ull},{0xb55874992cc1ed00ull},{0xbc527b9529c7ee00ull},{0xbb547e912ac5ef00ull},
+{0xe6161ded0bfbf000ull},{0xe11018e908f9f100ull},{0xe81a17e50dfff200ull},{0xef1c12e10efdf300ull},
+{0xfa0e09fd07f3f400ull},{0xfd080cf904f1f500ull},{0xf40203f501f7f600ull},{0xf30406f102f5f700ull},
+{0xde2635cd13ebf800ull},{0xd92030c910e9f900ull},{0xd02a3fc515effa00ull},{0xd72c3ac116edfb00ull},
+{0xc23e21dd1fe3fc00ull},{0xc53824d91ce1fd00ull},{0xcc322bd519e7fe00ull},{0xcb342ed11ae5ff00ull},
+};
+
+static const uint8_t aessub[256] = {
+0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,
+0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,
+0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,
+0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,
+0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,
+0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,
+0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,
+0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,
+0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,
+0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,
+0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,
+0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,
+0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,
+0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,
+0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,
+0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16,
+};
static inline
void Input_Mix(fugueParam* sp, uint32_t sc)
@@ -278,6 +387,7 @@
return 0;
}
+#ifdef UNUSED
static
void Fugue_IV(void)
{
@@ -287,7 +397,7 @@
for (i = 0; hashSizes[i].hashbitlen; i++) {
uint32_t Data = HO2BE_4 ((uint32_t)hashSizes[i].Cfg.n * 32);
memset(&HS, 0, sizeof (fugueParam));
- HS.hashbitlen = hashSizes[i].Cfg.n*32;
+ HS.hashbitlen = hashSizes[i].Cfg.n * 32;
HS.Cfg = &hashSizes[i].Cfg;
Next_Fugue(&HS, &Data, 1);
Done_Fugue(&HS, hashSizes[i].IV, NULL);
@@ -352,7 +462,6 @@
Fugue_IV();
}
-#ifdef UNUSED
static
unsigned Load_Fugue(fugueParam* sp, int hashbitlen, const uint32_t* iv, int hashwordlen)
{
@@ -372,14 +481,16 @@
}
return 0;
}
-#endif
+#endif /* UNUSED */
int
fugueInit(fugueParam *sp, int hashbitlen)
{
int i;
+#ifdef UNUSED
Init_Fugue();
+#endif
for (i = 0; hashSizes[i].hashbitlen; i++)
if (hashSizes[i].hashbitlen == hashbitlen) {
int n = hashSizes[i].Cfg.n;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/fugue.h
============================================================================
$ cvs diff -u -r2.3 -r2.4 fugue.h
--- rpm/rpmio/fugue.h 24 Jul 2009 19:30:32 -0000 2.3
+++ rpm/rpmio/fugue.h 24 Jul 2009 20:41:23 -0000 2.4
@@ -28,12 +28,12 @@
struct _fugueParam
#endif
{
- int hashbitlen;
- hashCfg* Cfg;
- int Base;
- hash32_s State[36];
- uint32_t Partial[1];
- uint64_t TotalBits;
+ int hashbitlen;
+ const hashCfg* Cfg;
+ int Base;
+ hash32_s State[36];
+ uint32_t Partial[1];
+ uint64_t TotalBits;
};
#ifndef __cplusplus
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository rpm-cvs@rpm5.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic