Arquivos
hhvm/hphp/test/test_ext_hash.cpp
T
Sara Golemon 497a22c04f Fix endianness for all tiger algos
The PHP version the implementations in hphp were based off of
had wrong byte ordering.  Fix them in line with PHP having been fixed.
2013-05-06 10:31:24 -07:00

199 linhas
7.7 KiB
C++

/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#include <test/test_ext_hash.h>
#include <runtime/ext/ext_hash.h>
///////////////////////////////////////////////////////////////////////////////
bool TestExtHash::RunTests(const std::string &which) {
bool ret = true;
RUN_TEST(test_hash);
RUN_TEST(test_hash_algos);
RUN_TEST(test_hash_init);
RUN_TEST(test_hash_file);
RUN_TEST(test_hash_final);
RUN_TEST(test_hash_hmac_file);
RUN_TEST(test_hash_hmac);
RUN_TEST(test_hash_update_file);
RUN_TEST(test_hash_update_stream);
RUN_TEST(test_hash_update);
RUN_TEST(test_furchash_hphp_ext);
RUN_TEST(test_furchash_hphp_ext_supported);
RUN_TEST(test_hphp_murmurhash);
return ret;
}
///////////////////////////////////////////////////////////////////////////////
bool TestExtHash::test_hash() {
static const char *expected[] = {
"1072638ba8fc6f2ff06c251b62f426fd",
"a1e0224d596927a56c8bae416b2ef23e",
"5c6ffbdd40d9556b73a21e63c3e0e904",
"c0854fb9fb03c41cce3802cb0d220529e6eef94e",
"68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483",
"b7273c05ad141ccb6696b3659e57137c453b6d64690fa7d5cf96368df4a7138703a8c6ead31727b487b3628746510391",
"0a8c150176c2ba391d7f1670ef4955cd99d3c3ec8cf06198cec30d436f2ac0c9b64229b5a54bdbd5563160503ce992a74be528761da9d0c48b7c74627302eb25",
"077a3fd0a18a01cb23c3e1bede846f99",
"ec457d0a974c48d5685a7efa03d137dc8bbde7e3",
"50c51844b845b31323765ae334349dd6a94db3e5b9624540bcbfa940f6857c3f",
"67b248ca0b750028e76f09f5f9b9b746f04c228ce659f75393c83ee46b82dea011f15f465a7e4f71",
"802dc377bf6dc4f905b90cf2f1ddb39d4958526c3772bce41c03488701630eeede851f5ddc195714ea9e35311a513e31c3b616ffce5756bd963e0fdc092b2f87",
"9370512795923aaeeb76fe3d8ea7433e", // tiger128,3-fb
"9370512795923aaeeb76fe3d8ea7433e", // tiger128,3
"ae3a9295275170933e43a78e3dfe76eb75396b1d", // tiger160,3
"ae3a9295275170933e43a78e3dfe76eb75396b1d5dd69706", // tiger192,3
"358e7b5fed633162893208eb1b2c1cca", // tiger128,4
"358e7b5fed633162893208eb1b2c1cca6b6eef15", // tiger160,4
"358e7b5fed633162893208eb1b2c1cca6b6eef15c60cb01a", // tiger192,4
"1d4ca34cc860789a2a63fab87cd6a2c3ae5ecb1df8bd3cce605ffa2de1fbd73b",
"c10eb0cb71a04377a0452a4aa64853996f73cac95f6ae434df8083d473fac944",
"5e10f17b",
"413a86af",
"4246a382",
"aa517f0b69b75146a39384ec92a02877",
"d9f46869ef2bf66602a0725c079d35a9f3ac6dd0",
"04934beab28037aae8fd658389626368530562b96c9aba89",
"41c959f1e44e931b0473c54c49080d74d49a96ea56e766af408a85fd",
"6c7c17d5784428d4d62b7f652223d64a30c78aa5f2c2c71ce780ec3f0d0ec28d",
"31147399766a068d0417390a4b9fa0c8",
"ad9aa7904f202cdfb1faf7d385d10e3de575f74c",
"1568ff7e99ca98fbeb9a2d4c0318dcc290d0eb10d064d0f6",
"94656ade22076dd122714b4168a2ed8228b554f70eca5728c5038579",
"404e1584994409ee38e0829099521168ba7c3aa1b0e82d1a72ec387fd1317ecf",
"bc0db0f23eabcd9d0c4d0a2e498b8c47",
"51341aa150d38695628491580d8d6dc9850201f7",
"da27cf4bdb2decd4731c69a017534535eecd6d9b9015fc41",
"f8a5d442ef5b82e062599fe38ddbf46999b29f0a15caa8bebabbff68",
"16e1688c75cf09338fce299455ec0f6f783ca1cbb2006203ae6ae98b23f9294a"
};
String data = "The quick brown fox jumped over the lazy dog.";
int i = 0;
VS(f_hash("md2", data), expected[i++]);
VS(f_hash("md4", data), expected[i++]);
VS(f_hash("md5", data), expected[i++]);
VS(f_hash("sha1", data), expected[i++]);
VS(f_hash("sha256", data), expected[i++]);
VS(f_hash("sha384", data), expected[i++]);
VS(f_hash("sha512", data), expected[i++]);
VS(f_hash("ripemd128", data), expected[i++]);
VS(f_hash("ripemd160", data), expected[i++]);
VS(f_hash("ripemd256", data), expected[i++]);
VS(f_hash("ripemd320", data), expected[i++]);
VS(f_hash("whirlpool", data), expected[i++]);
VS(f_hash("tiger128,3-fb", data), expected[i++]);
VS(f_hash("tiger128,3", data), expected[i++]);
VS(f_hash("tiger160,3", data), expected[i++]);
VS(f_hash("tiger192,3", data), expected[i++]);
VS(f_hash("tiger128,4", data), expected[i++]);
VS(f_hash("tiger160,4", data), expected[i++]);
VS(f_hash("tiger192,4", data), expected[i++]);
VS(f_hash("snefru", data), expected[i++]);
VS(f_hash("gost", data), expected[i++]);
VS(f_hash("adler32", data), expected[i++]);
VS(f_hash("crc32", data), expected[i++]);
VS(f_hash("crc32b", data), expected[i++]);
VS(f_hash("haval128,3", data), expected[i++]);
VS(f_hash("haval160,3", data), expected[i++]);
VS(f_hash("haval192,3", data), expected[i++]);
VS(f_hash("haval224,3", data), expected[i++]);
VS(f_hash("haval256,3", data), expected[i++]);
VS(f_hash("haval128,4", data), expected[i++]);
VS(f_hash("haval160,4", data), expected[i++]);
VS(f_hash("haval192,4", data), expected[i++]);
VS(f_hash("haval224,4", data), expected[i++]);
VS(f_hash("haval256,4", data), expected[i++]);
VS(f_hash("haval128,5", data), expected[i++]);
VS(f_hash("haval160,5", data), expected[i++]);
VS(f_hash("haval192,5", data), expected[i++]);
VS(f_hash("haval224,5", data), expected[i++]);
VS(f_hash("haval256,5", data), expected[i++]);
return Count(true);
}
bool TestExtHash::test_hash_algos() {
VERIFY(!f_hash_algos().empty());
return Count(true);
}
bool TestExtHash::test_hash_init() {
Object ctx = f_hash_init("md5");
f_hash_update(ctx, "The quick brown fox ");
f_hash_update(ctx, "jumped over the lazy dog.");
VS(f_hash_final(ctx), "5c6ffbdd40d9556b73a21e63c3e0e904");
return Count(true);
}
bool TestExtHash::test_hash_file() {
VS(f_hash_file("md5", "test/test_hash_file.txt"),
"5c6ffbdd40d9556b73a21e63c3e0e904");
return Count(true);
}
bool TestExtHash::test_hash_final() {
return test_hash_init();
}
bool TestExtHash::test_hash_hmac_file() {
VS(f_hash_hmac_file("md5", "test/test_hash_file.txt", "secret"),
"7eb2b5c37443418fc77c136dd20e859c");
return Count(true);
}
bool TestExtHash::test_hash_hmac() {
VS(f_hash_hmac("ripemd160", "The quick brown fox jumped over the lazy dog.",
"secret"),
"b8e7ae12510bdfb1812e463a7f086122cf37e4f7");
return Count(true);
}
bool TestExtHash::test_hash_update_file() {
// this is the same as hash_update, except reading from a file
return Count(true);
}
bool TestExtHash::test_hash_update_stream() {
// this is the same as hash_update, except reading from a stream
return Count(true);
}
bool TestExtHash::test_hash_update() {
return test_hash_init();
}
bool TestExtHash::test_furchash_hphp_ext() {
if (f_furchash_hphp_ext_supported()) {
VS(f_furchash_hphp_ext("15minutesoffame", 15, 86), 25);
}
return Count(true);
}
bool TestExtHash::test_furchash_hphp_ext_supported() {
// Nothing much to test here, unless duplicating the function logic
return Count(true);
}
bool TestExtHash::test_hphp_murmurhash() {
VS(f_hphp_murmurhash("abc", 3, 1234),1090430250323801564)
return Count(true);
}