moved all stuff to github

This commit is contained in:
Antonio Juarez 2014-03-03 22:07:58 +00:00
parent 095fbeeb67
commit 296ae46ed8
388 changed files with 95937 additions and 469 deletions

96
tests/hash/main.cpp Normal file
View file

@ -0,0 +1,96 @@
// Copyright (c) 2012-2013 The Cryptonote developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <cstddef>
#include <fstream>
#include <iomanip>
#include <ios>
#include <string>
#include "warnings.h"
#include "crypto/hash.h"
#include "../io.h"
using namespace std;
using namespace crypto;
typedef crypto::hash chash;
PUSH_WARNINGS
DISABLE_VS_WARNINGS(4297)
extern "C" {
static void hash_tree(const void *data, size_t length, char *hash) {
if ((length & 31) != 0) {
throw ios_base::failure("Invalid input length for tree_hash");
}
tree_hash((const char (*)[32]) data, length >> 5, hash);
}
}
POP_WARNINGS
extern "C" typedef void hash_f(const void *, size_t, char *);
struct hash_func {
const string name;
hash_f &f;
} hashes[] = {{"fast", cn_fast_hash}, {"slow", cn_slow_hash}, {"tree", hash_tree},
{"extra-blake", hash_extra_blake}, {"extra-groestl", hash_extra_groestl},
{"extra-jh", hash_extra_jh}, {"extra-skein", hash_extra_skein}};
int main(int argc, char *argv[]) {
hash_f *f;
hash_func *hf;
fstream input;
vector<char> data;
chash expected, actual;
size_t test = 0;
bool error = false;
if (argc != 3) {
cerr << "Wrong number of arguments" << endl;
return 1;
}
for (hf = hashes;; hf++) {
if (hf >= &hashes[sizeof(hashes) / sizeof(hash_func)]) {
cerr << "Unknown function" << endl;
return 1;
}
if (argv[1] == hf->name) {
f = &hf->f;
break;
}
}
input.open(argv[2], ios_base::in);
for (;;) {
++test;
input.exceptions(ios_base::badbit);
get(input, expected);
if (input.rdstate() & ios_base::eofbit) {
break;
}
input.exceptions(ios_base::badbit | ios_base::failbit | ios_base::eofbit);
input.clear(input.rdstate());
get(input, data);
f(data.data(), data.size(), (char *) &actual);
if (expected != actual) {
size_t i;
cerr << "Hash mismatch on test " << test << endl << "Input: ";
if (data.size() == 0) {
cerr << "empty";
} else {
for (i = 0; i < data.size(); i++) {
cerr << setbase(16) << setw(2) << setfill('0') << int(static_cast<unsigned char>(data[i]));
}
}
cerr << endl << "Expected hash: ";
for (i = 0; i < 32; i++) {
cerr << setbase(16) << setw(2) << setfill('0') << int(reinterpret_cast<unsigned char *>(&expected)[i]);
}
cerr << endl << "Actual hash: ";
for (i = 0; i < 32; i++) {
cerr << setbase(16) << setw(2) << setfill('0') << int(reinterpret_cast<unsigned char *>(&actual)[i]);
}
cerr << endl;
error = true;
}
}
return error ? 1 : 0;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

321
tests/hash/tests-fast.txt Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,4 @@
2f8e3df40bd11f9ac90c743ca8e32bb391da4fb98612aa3b6cdc639ee00b31f5 6465206f6d6e69627573206475626974616e64756d
722fa8ccd594d40e4a41f3822734304c8d5eff7e1b528408e2229da38ba553c4 6162756e64616e732063617574656c61206e6f6e206e6f636574
bbec2cacf69866a8e740380fe7b818fc78f8571221742d729d9d02d7f8989b87 63617665617420656d70746f72
b1257de4efc5ce28c6b40ceb1c6c8f812a64634eb3e81c5220bee9b2b76a6f05 6578206e6968696c6f206e6968696c20666974

16
tests/hash/tests-tree.txt Normal file
View file

@ -0,0 +1,16 @@
676567f8b1b470207c20d8efbaacfa64b2753301b46139562111636f36304bb8 676567f8b1b470207c20d8efbaacfa64b2753301b46139562111636f36304bb8
5077570fed2363a14fa978218185b914059e23517faf366f08a87cf3c47fd58e 3124758667bc8e76e25403eee75a1044175d58fcd3b984e0745d0ab18f473984975ce54240407d80eedba2b395bcad5be99b5c920abc2423865e3066edd4847a
f8e26aaa7c36523cea4c5202f2df159c62bf70d10670c96aed516dbfd5cb5227 decc1e0aa505d7d5fbe8ed823d7f5da55307c4cc7008e306da82dbce492a0576dbcf0c26646d36b36a92408941f5f2539f7715bcb1e2b1309cedb86ae4211554f56f5e6b2fce16536e44c851d473d1f994793873996ba448dd59b3b4b922b183
45f6e06fc0263e667caddd8fba84c9fb723a961a01a5b115f7cab7fe8f2c7e44 53edbbf98d3fa50a85fd2d46c42502aafad3fea30bc25ba4f16ec8bf4a475c4d87da8ad3e5c90aae0b10a559a77a0985608eaa3cc3dd338239be52572c3bdf4ba403d27466991997b3cf4e8d238d002a1451ccc9c4790269d0f0085d9382d60fef37717f59726e4cc8787d5d2d75238ba9adb9627a8f4aeeec8d80465ed3f5fb
e678fb87749ec082a9f92537716de8e19d8bd5bc4c4d832bd3fcfd42498dac83 051a082e670c688e6a0fc2c8fd5b66b7a23cd380c7c49bd0cfffb0e80fb8c2334bb717c5e90db0ac353dfc0750c8b43a07edae0be99d6e820acc6da9f113123ae084c38ccdbf9c6730e228b5d98e7beb9843cfb523747cc32f09f2b16def67f76765cee044883827b9af31c179d3135b16c30f04453943d9676a59b907a6439658f6c98159b8fa1b152f1bcf748740754ca31c918501dbd577faf602c641df59
7db3258ea536fef652eaaa9ccb158045770900b3c301d727bcb7e60f9831ae2c 4231b54cddc617d06e0e311536fa400e5be0a35aab5fec9ec8d98f6c6dad3916fe6cdb1f63be231f95cdc83bb15b0d99d32d9922331b738c423625471fad7f408e60c0773fe78938b054e28b86ac06a194d141c1bde5f3c6f2b11468b43702cb3121b40ccbcb5461fa9321c35c9342e21efd7c1c22f523d78b9d4de28112b6cc51552642ffc126c66f25038f9d3b0cf485cc252215c144d51a139c8ea9a0ecc16e81d8d92dd3660d885deca60070d3d00069d89db1a85acb9c1f18d0c90736a7
ad56b3e027d78a372adebe839e154668aec5236f7d40296cfdb562fca1dc73c2 68e09573a758b75ea8e7d925fe81e3155afecddc4c8aeb3fe70d87411ee53aceac63c0233d172cd49b2708350fd64e2cf4dccb13352e3a159c06647c609429349197163eca2c2dae0c8643fdfe5d346b2ffd45a2d46f38599efbfa587c3ac0c3119e19508e009556fe53e4f78ef30eed649cdc1e090c8cb662eae1863fdc683bbabea966764f550a142dd68e5b8eb1930ff0c7333c9f2555712489a8cf6a5d188a70841510fca540b8c0425123efca47d5a698cf392e3bdbb7226053459fae01fd19ddb9d16d5f5499525feb49ffca9411e7ac48de15256559f3f65f899b80af
090a95612ed9df6eeb854ae320355889a302498b4f5164a79d8e384a3a0d9748 42e7f4058ca80d513c140837dd661acde3fb914779079baccfe188cbce275aed4b515094bb49ab9a825bcc2ac13f84b14a9defeb1b62fc68124b088272a3562696d62ccdfb5d896b2d2b410a2a79f9b1e7849feebc17617ba12a08d4e80affe970ff2fb79917ac13708f79be215bb6484d298b2fe22b4818536e74894db5e0350e1505ca2681da7b7d7171e3d10c89348cab160ff5b2e739d3591443d2af60db5eb36c50a2dfdb79b8ab83b0792161ac4756d9b831f1863188e10c81af5077d0fdb123f66e51670f03a203ff2287dea6827dcd5afd4904736ec4fe9f3b52f7e2bed7beaa1543bd8bfbfff6a8ae8bf1791dc34efa92c6342532fa33a3b72b6c9f
997ac1178ab7414bab823fbca45b5630df8d1d8263063e6c57da463b85d68a74 947fbbc55ad237fc5dbd7d52dddd44bf3f2a09005c78873422f7ef282d8e6fcc554e35c9566febf91cbbcb1d57a7ebd119abb0ad33a006d01623b7b379e966e00be000ae2fe8a45940e99c953d22014bae4932d8493ad4a551a97d437db2939dd53abedc11a63417f76257a5587f382a57d46d63c372182600c7920bcaf74e9e65289e8c45123ac8a54a45a6104dce5b8c065065ff3a3b6f8bf4d86bf96cb56116df4e01eb3153223d5f3a8c0d7de9eb348158e5ca0c363568674215f68b6ff8e54aeb4a2661f1144cb4f1bde7f9e6371d8a5568d4b3ff3382c65e143ae5d3a5834c890559be95b8b80b82c83d70df85c934bf9dd4b0f2b5f60b8553bd1c1e537b7a1f78a89a17a335a06f5d7143dfecff0c10a2e0a524c91ce913ae04501b65
d7647e967e4f1ad3d5a0b2d231f62c4fe8fea85b845a72aaf57aeea96f2388f2 5b0bf1b5c843cc5ea8e907c0d6ea901f1d4259cd61e68895fa1a9df76973ac6c87ee22343802565be146e4fcd768cde3cdd1b1996b8626e53b62648a9fd7f5aee2ce5b4aacb090d1beeaf42d47e7f0e90174af6554e8bd4aea3df45e90537eb7572b9583b3fcedf56ff69c412c4576a1353458292b7a6b10536887da47fb95c999ff1a074dfb52db43cf423e81e02aacb267b5f3b48761de9c3a73efe199d710e09043e4701792d04112d18e33d5f78efe4fbda461b4e0f2f55f07ca04eed04762d956b396ff0471c28f48462bf9b6b47caac50be8dd822198a39366071b18f4d4e8188bd11421b606108e9bbcfb1377e122c36083beca6a2306e48bfdbc64c9e6435ed838eba78e0af101abf79ff9600f6cc1b2b776783491161ae2d1d8df2d436a20c053c9237a7d224016878906352eba550d778e91ba830906b8d0be4e6e
bc4b8c89368a254ccd0fb8ad2e9bcf95e06e1189b9a87774a3f70c51809967ef 0bea27a480254ca07321850f25294478628ce83a025af4624902644f9dec23e8fb2c2313332449ae662e59b0bf99c30263a573f152cdcfd731402fe4bc10a758fbc005a236a1fb4c06f25c0564726bace64ae59c9051fc4e6171b5fb1466623f5c6a33ed05f196a6eb43852aa0735f1004245a58f68d3f8848ee916dcdfea2d7c63159daff81f0a9d10261d416ba290752f8333afbb7e22ca1b9c7f55b9023386b759fa69caa43c5caa7c339a0ddcfd95d9c12bea4c2cb450838080b54e270c4aa6580cdbb3431acb13dad236d1999d8b1ec1ed78f3e14061a890c6720947d18ee2dfa62ae4ad5e5ad6d8234ce99a1b2a21ba096325d8acf951380eacac551423d108b090ede16d479483ca0f9acc6cf1db8b8e4597b1c64738675f13665f84043ace791a58acf22d31e6298e7687c24276252f10396c203d38a79b232b200d1c53abb01b9678296797b9e08e4bf0251d8acfe3f42127db1295e3c90241a594d
d765c015e0d30f911278d3b011faba39e8707962d90dabafb37081805dfbe121 dbbd17543ddcc85cd6e3d96d08ae74f1eb5bb69b5d04ed538622423e0f78add6152cf461b569d733167cf18c94c5c09061aced2c59cbd75529c3e5d857528d6be15dab61315fa2e18ad41fc7e7c99cd274e1f7e4e6005e48015118153fd78b190a4960c135213f187da7675369611ad66b546cb5b041ab1743deae82edad9c4e62dabbff022a54c1f1cbd65614fad0d33f894ace380426618330339f238e703e40df8ef6a73ec8de5e35a2c41904552be0d029cfafe3629662dafd39069d25a1982e021ca076aff80f75ccc92ce29219ea273874a29a9c5357dc630a244a0025a7bccd0b6489f38b9603027a032b048cdaa5c88bafb1e72f4a69e0040c0c7b4532b1a91e7b92ed2cd5533b8a4f119ab15c76943204ecbe61b15dd2610c49ed38b771e6ba16c7beb09c70c0550afac81f3580d12491c4470c4773424796a857539616f29cd2df4e187363d24c22bb6cc91530705d7057b9a4380767d9fd8be0963ba503132cac79c870fa4c42fc32ee39a7a3c2ded84cd4b6e302d132f3d8e2ea
3828d41d973d48f171a901cd67f99d073cfbc4dc954fe9c58a48f31a2b0c8927 ac68da2f276c44fcddf6018bfad995e66a50ef120dbcd734834f2473542179f0754c132933fffa46b3c61b01231b5a30cdca82b16afdb5f5183a4f733345dade7ddb2a26b4adf0c23520a8e2d7bf979a7aeca3022153da6a65091172c34ec3a2b8bd5bc6e2dd971cf9b6582b0cdc24f84c48ee23a47c078ecfe306a3791eabe93fc38d28e6a82bb3f80448b7fa3b3f687e59447e6b41074217cf336e4ba50b580f8724b18f95908a13517f5215b67b1b9d0f7129c4e91efa23df763142be2e28f4d394cd6493ea6185aefa0ce8d73b5c0c11f5e8ada75a7c29438ce162749deb113cba0d436005742d35e7397d4fec8419b24320a21dcb18089e5c7644abe3d57b2554c19c0eb55ebfe943ac13beafcd9bad66a967fcc1e747c778bf452c6ccfc9b96772caf052bd768d50977cda7255f479510af8628d5e24125b9482b0e786a65e99bdfb73e6c6e57f01458a7735d0e16b30546d1856683002aa1d0980b54afc8086b75eff6b7a0b448e31e2bf741b24e7399dded0321f745ef034d4c80fc15719b81a797b751c27110480e48c7e98e27aa9397b7c58917147200fd4770d55
834e5f13dd06f541753f60fe2b5854eff15e54c4141cc0836c4688769a0db0a4 ec58450fe3887a480b39cc493599bf4107d276f57453257bbd1446ccec960ce8aad0e7623c1ac4fe07c2255376dd1aaf4b78a079e8f701a74560805d295d466a6987e81e2ed74b4ccc6a0f121eb6f173f4efeb74f801e1b80e1ee97bf4216376c00a92962c5234d276bea8975e49718c546c3027d57131333a4e4c5756899ba7c9643ff8335553325d4706cd72930b09d632c561072b39b49106c2d424fa6773bbb0bb01fed84effb8ed7471b14581213e49b8fd8dacd1c3f9c50f2a915bfcd77d07abb95cd0aa13df084adc54a04e3214c639cef5cc22fd0a1477a1a196a919d37dff128318900dce936b5cf3a3154fb05f9b2841481554805b681c2943eeade2b21fcc72c6380dc70d4f404dcfe0c0686f94f979989e663f4028189ae5839f0ff8d2c58b4ea09797ece5f5554fccb824c24293b7b7bf8af4da3536548ee5ebbf80c8ea56f88bfa8174df124f5acdecb9e919041ec664e384a8eaeb8e20be270350a2f1cb65f691c0cb1392226a928a3a3aac3f69fe5eab76d125fdeb5ea4c4b2dd59993e7df68221c0da90a1ee89885b217bb6b67ab2d64feb33b66b31087795ddeeb52d40c9a260da14b383caad730ddc8f1e6b59baf7bf110a452a05e8bb
bca11932a196feb98e7779662b8c0f3754a6438311209a858bb891de6bf09581 23c2a65a1917cb82949e89ca65585f4d0b09a5d90a912aed4d8aff9af2a2ce6594305a47ad8e6b744a5fd79cb27e5f4a3b28a3893c655efe3f61105c85183c822d293c74b60d4cc0c7ee002616a97411a3b1d3d8c1be1079a1b300e8e17c95568defd202af2d290cbf1e678e881430d05419c2c543b8e476b424232bc7396e14928e459597e6a8cf9cc6c95051b16d0bcc0e4034ffbcd4ee321b9e94bbc0a1729ee8ab4cd43158c4e8e571ee64c2102f181402238cd53a57693dbfdd5e6be3bf23103e73c40248ce7afb8dad6dd2c2107aab20569f740197d64efbe6159a553c013c04c5c54aa9a4dbe41f2910554bba612e16fe3c682d493c7a1b35c0b3476337badb053bae123c6306442812f5f2df8995c29d7e9c218d4d9e86699cca19d06be9688bf8150d487ede28911089ea86d0be0986b51adc270317c438b622748321d2d9c9f93400b73d7fdbe3e1f6ff36f16be9416b568a80e2764a258b6789d570d80bf91e832baa1ab92289759eb2504ab4b0d3b826e944f5f4beb5d6a3764dd9225a0a1e78a7d0485ffc6808651ef1a26bda9c7e436ab48587e91cfdab4a7c1dbb13a78025ac77baa1e389f9b82994c6cb725c30708a266b5e1a9d0b52128ba340a4a609095e70cc7b30cf6d3a2156b4a35c1bba574f240c37f94718616e48
2d0ad2566627b50cd45125e89e963433b212b368cd2d91662c44813ba9ec90c2 21f750d5d938dd4ed1fa4daa4d260beb5b73509de9a9b145624d3f1afb671461b07d768cf1f5f8266b89ecdc150a2ad55ccd76d4c12d3a380b21862809a85af623269a23ee1b4694b26aa317b5cd4f259925f6b3288a8f60fb871b1ad3ac00cb1e6c55eddfc438e1f3e7b638ea6026cc01495010bafdfd789c47dff282c1af4c6a8f83e5f2fca6940a756ef4faa15c7137082a7c31dffe0b2f5112d126ad4af1d536c0e626cc9d2fe1b72256f5285728558f22a3dbb36e0918bcfc01d4ae7284d0bfb8e90647cdb01c292a53a31ff3fe6f350882f1dae2b09374db45f4d54c67d3b4e0829c4f9f63ad235d8ef838d8fb39546d90d99bbd831aff55dbbb642e2bf529ceccd0479b9f194475c2a15143f0edac762e9bbce810436e765550c69e234c22276c41d7d7e28c10afc5e144a9ce32aa9c0f28bb4fcf171af7d7404fa5e28b79dc97bd4147f4df6d38b935bd83fb634414bae9d64a32ab45384fba5b8da5c147d51cd2a8f7f2a9c07b1bddc5b28b74bf0c0f0632ac2fc43d0d306dd1ac1481cabe60a358d6043d4733202d489664a929d6bf76a39828954846beb47a3baacb35d2065cbe3ad34cf78bf895f6323a6d76fc1256306f58e4baecabd7a779388c6bf2734897c193d39c343fce49a456f0ef84cf963593c5401a14621cc6ec1bef01b53735ccb02bc96c5fd454105053e3b016174437ed83b25d2a79a88268f2