svn: /php/php-src/trunk/ NEWS ext/hash/hash_tiger.c ext/hash/tests/tiger.phpt
| From: | Michael Wallner | Date: | Tue, 17 Jan 2012 15:25:54 +0000 |
| Subject: | svn: /php/php-src/trunk/ NEWS ext/hash/hash_tiger.c ext/hash/tests/tiger.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-67460@lists.php.net to get a copy of this message | ||
mike Tue, 17 Jan 2012 15:25:54 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=322419
Log:
adapted tiger hash byte print order to those of md5 and sha1
see http://en.wikipedia.org/wiki/Tiger_(cryptography)
http://www.cs.technion.ac.il/~biham/Reports/Tiger/test-vectors-nessie-format.dat
Closes Bug #60221 Tiger hash output byte order
Bug: https://bugs.php.net/60221 (error getting bug
information)
Changed paths:
U php/php-src/trunk/NEWS
U php/php-src/trunk/ext/hash/hash_tiger.c
U php/php-src/trunk/ext/hash/tests/tiger.phpt
Modified: php/php-src/trunk/NEWS
===================================================================
--- php/php-src/trunk/NEWS 2012-01-17 14:48:41 UTC (rev 322418)
+++ php/php-src/trunk/NEWS 2012-01-17 15:25:54 UTC (rev 322419)
@@ -32,6 +32,9 @@
still exists for backward compatibility but is doing nothing). (Pierrick)
. Fixed bug #54995 (Missing CURLINFO_RESPONSE_CODE support). (Pierrick)
+- hash
+ . Fixed bug #60221 (Tiger hash output byte order) (Mike)
+
- pgsql
. Added pg_escape_literal() and pg_escape_identifier() (Yasuo)
Modified: php/php-src/trunk/ext/hash/hash_tiger.c
===================================================================
--- php/php-src/trunk/ext/hash/hash_tiger.c 2012-01-17 14:48:41 UTC (rev 322418)
+++ php/php-src/trunk/ext/hash/hash_tiger.c 2012-01-17 15:25:54 UTC (rev 322419)
@@ -169,6 +169,15 @@
tiger_compress(context->passes, ((php_hash_uint64 *) context->buffer), context->state);
}
+static inline void TigerDigest(unsigned char *digest_str, unsigned int digest_len, PHP_TIGER_CTX
*context)
+{
+ unsigned int i;
+
+ for (i = 0; i < digest_len; ++i) {
+ digest_str[i] = (unsigned char) ((context->state[i/8] >> (8 * (i%8))) & 0xff);
+ }
+}
+
PHP_HASH_API void PHP_3TIGERInit(PHP_TIGER_CTX *context)
{
memset(context, 0, sizeof(*context));
@@ -216,84 +225,21 @@
PHP_HASH_API void PHP_TIGER128Final(unsigned char digest[16], PHP_TIGER_CTX *context)
{
TigerFinalize(context);
-
- digest[0] = (unsigned char) ((context->state[0] >> 56) & 0xff);
- digest[1] = (unsigned char) ((context->state[0] >> 48) & 0xff);
- digest[2] = (unsigned char) ((context->state[0] >> 40) & 0xff);
- digest[3] = (unsigned char) ((context->state[0] >> 32) & 0xff);
- digest[4] = (unsigned char) ((context->state[0] >> 24) & 0xff);
- digest[5] = (unsigned char) ((context->state[0] >> 16) & 0xff);
- digest[6] = (unsigned char) ((context->state[0] >> 8) & 0xff);
- digest[7] = (unsigned char) (context->state[0] & 0xff);
- digest[8] = (unsigned char) ((context->state[1] >> 56) & 0xff);
- digest[9] = (unsigned char) ((context->state[1] >> 48) & 0xff);
- digest[10] = (unsigned char) ((context->state[1] >> 40) & 0xff);
- digest[11] = (unsigned char) ((context->state[1] >> 32) & 0xff);
- digest[12] = (unsigned char) ((context->state[1] >> 24) & 0xff);
- digest[13] = (unsigned char) ((context->state[1] >> 16) & 0xff);
- digest[14] = (unsigned char) ((context->state[1] >> 8) & 0xff);
- digest[15] = (unsigned char) (context->state[1] & 0xff);
-
+ TigerDigest(digest, 16, context);
memset(context, 0, sizeof(*context));
}
PHP_HASH_API void PHP_TIGER160Final(unsigned char digest[20], PHP_TIGER_CTX *context)
{
TigerFinalize(context);
-
- digest[0] = (unsigned char) ((context->state[0] >> 56) & 0xff);
- digest[1] = (unsigned char) ((context->state[0] >> 48) & 0xff);
- digest[2] = (unsigned char) ((context->state[0] >> 40) & 0xff);
- digest[3] = (unsigned char) ((context->state[0] >> 32) & 0xff);
- digest[4] = (unsigned char) ((context->state[0] >> 24) & 0xff);
- digest[5] = (unsigned char) ((context->state[0] >> 16) & 0xff);
- digest[6] = (unsigned char) ((context->state[0] >> 8) & 0xff);
- digest[7] = (unsigned char) (context->state[0] & 0xff);
- digest[8] = (unsigned char) ((context->state[1] >> 56) & 0xff);
- digest[9] = (unsigned char) ((context->state[1] >> 48) & 0xff);
- digest[10] = (unsigned char) ((context->state[1] >> 40) & 0xff);
- digest[11] = (unsigned char) ((context->state[1] >> 32) & 0xff);
- digest[12] = (unsigned char) ((context->state[1] >> 24) & 0xff);
- digest[13] = (unsigned char) ((context->state[1] >> 16) & 0xff);
- digest[14] = (unsigned char) ((context->state[1] >> 8) & 0xff);
- digest[15] = (unsigned char) (context->state[1] & 0xff);
- digest[16] = (unsigned char) ((context->state[2] >> 56) & 0xff);
- digest[17] = (unsigned char) ((context->state[2] >> 48) & 0xff);
- digest[18] = (unsigned char) ((context->state[2] >> 40) & 0xff);
- digest[19] = (unsigned char) ((context->state[2] >> 32) & 0xff);
-
+ TigerDigest(digest, 20, context);
memset(context, 0, sizeof(*context));
}
PHP_HASH_API void PHP_TIGER192Final(unsigned char digest[24], PHP_TIGER_CTX *context)
{
TigerFinalize(context);
-
- digest[0] = (unsigned char) ((context->state[0] >> 56) & 0xff);
- digest[1] = (unsigned char) ((context->state[0] >> 48) & 0xff);
- digest[2] = (unsigned char) ((context->state[0] >> 40) & 0xff);
- digest[3] = (unsigned char) ((context->state[0] >> 32) & 0xff);
- digest[4] = (unsigned char) ((context->state[0] >> 24) & 0xff);
- digest[5] = (unsigned char) ((context->state[0] >> 16) & 0xff);
- digest[6] = (unsigned char) ((context->state[0] >> 8) & 0xff);
- digest[7] = (unsigned char) (context->state[0] & 0xff);
- digest[8] = (unsigned char) ((context->state[1] >> 56) & 0xff);
- digest[9] = (unsigned char) ((context->state[1] >> 48) & 0xff);
- digest[10] = (unsigned char) ((context->state[1] >> 40) & 0xff);
- digest[11] = (unsigned char) ((context->state[1] >> 32) & 0xff);
- digest[12] = (unsigned char) ((context->state[1] >> 24) & 0xff);
- digest[13] = (unsigned char) ((context->state[1] >> 16) & 0xff);
- digest[14] = (unsigned char) ((context->state[1] >> 8) & 0xff);
- digest[15] = (unsigned char) (context->state[1] & 0xff);
- digest[16] = (unsigned char) ((context->state[2] >> 56) & 0xff);
- digest[17] = (unsigned char) ((context->state[2] >> 48) & 0xff);
- digest[18] = (unsigned char) ((context->state[2] >> 40) & 0xff);
- digest[19] = (unsigned char) ((context->state[2] >> 32) & 0xff);
- digest[20] = (unsigned char) ((context->state[2] >> 24) & 0xff);
- digest[21] = (unsigned char) ((context->state[2] >> 16) & 0xff);
- digest[22] = (unsigned char) ((context->state[2] >> 8) & 0xff);
- digest[23] = (unsigned char) (context->state[2] & 0xff);
-
+ TigerDigest(digest, 24, context);
memset(context, 0, sizeof(*context));
}
Modified: php/php-src/trunk/ext/hash/tests/tiger.phpt
===================================================================
--- php/php-src/trunk/ext/hash/tests/tiger.phpt 2012-01-17 14:48:41 UTC (rev 322418)
+++ php/php-src/trunk/ext/hash/tests/tiger.phpt 2012-01-17 15:25:54 UTC (rev 322419)
@@ -11,8 +11,9 @@
echo hash('tiger192,3', str_repeat('abc', 64)),"\n";
?>
--EXPECT--
-24f0130c63ac933216166e76b1bb925ff373de2d49584e7a
-f258c1e88414ab2a527ab541ffc5b8bf935f7b951c132951
-8ee409a14e6066933b63d5b2abca63d71a78f55e29eb4649
-2586156d16bf9ab1e6e48bdf5e038f8053c30e071db3bcb0
-3ee8a9405396ddba1bc038508af4164ac1fe59ef58916a85
+3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3
+2aab1484e8c158f2bfb8c5ff41b57a525129131c957b5f93
+9366604ea109e48ed763caabb2d5633b4946eb295ef5781a
+b19abf166d158625808f035edf8be4e6b0bcb31d070ec353
+badd965340a9e83e4a16f48a5038c01b856a9158ef59fec1
+