mirror of
https://git.wownero.com/wownero/wownero.git
synced 2024-08-15 01:03:23 +00:00
Merge pull request #5126
f1fb06b1
Fixed path to int-util.h (SChernykh)9da0892b
Adding cnv4-2 tweaks (SChernykh)f51397b3
Cryptonight variant 4 aka CryptonightR (SChernykh)
This commit is contained in:
commit
1b4fa00d7c
9 changed files with 611 additions and 51 deletions
|
@ -43,7 +43,7 @@ set_property(TARGET hash-tests
|
|||
PROPERTY
|
||||
FOLDER "tests")
|
||||
|
||||
foreach (hash IN ITEMS fast slow slow-1 slow-2 tree extra-blake extra-groestl extra-jh extra-skein)
|
||||
foreach (hash IN ITEMS fast slow slow-1 slow-2 slow-4 tree extra-blake extra-groestl extra-jh extra-skein)
|
||||
add_test(
|
||||
NAME "hash-${hash}"
|
||||
COMMAND hash-tests "${hash}" "${CMAKE_CURRENT_SOURCE_DIR}/tests-${hash}.txt")
|
||||
|
|
|
@ -44,6 +44,13 @@ using namespace std;
|
|||
using namespace crypto;
|
||||
typedef crypto::hash chash;
|
||||
|
||||
struct V4_Data
|
||||
{
|
||||
const void* data;
|
||||
size_t length;
|
||||
uint64_t height;
|
||||
};
|
||||
|
||||
PUSH_WARNINGS
|
||||
DISABLE_VS_WARNINGS(4297)
|
||||
extern "C" {
|
||||
|
@ -54,13 +61,17 @@ extern "C" {
|
|||
tree_hash((const char (*)[crypto::HASH_SIZE]) data, length >> 5, hash);
|
||||
}
|
||||
static void cn_slow_hash_0(const void *data, size_t length, char *hash) {
|
||||
return cn_slow_hash(data, length, hash, 0/*variant*/, 0/*prehashed*/);
|
||||
return cn_slow_hash(data, length, hash, 0/*variant*/, 0/*prehashed*/, 0/*height*/);
|
||||
}
|
||||
static void cn_slow_hash_1(const void *data, size_t length, char *hash) {
|
||||
return cn_slow_hash(data, length, hash, 1/*variant*/, 0/*prehashed*/);
|
||||
return cn_slow_hash(data, length, hash, 1/*variant*/, 0/*prehashed*/, 0/*height*/);
|
||||
}
|
||||
static void cn_slow_hash_2(const void *data, size_t length, char *hash) {
|
||||
return cn_slow_hash(data, length, hash, 2/*variant*/, 0/*prehashed*/);
|
||||
return cn_slow_hash(data, length, hash, 2/*variant*/, 0/*prehashed*/, 0/*height*/);
|
||||
}
|
||||
static void cn_slow_hash_4(const void *data, size_t, char *hash) {
|
||||
const V4_Data* p = reinterpret_cast<const V4_Data*>(data);
|
||||
return cn_slow_hash(p->data, p->length, hash, 4/*variant*/, 0/*prehashed*/, p->height);
|
||||
}
|
||||
}
|
||||
POP_WARNINGS
|
||||
|
@ -72,7 +83,7 @@ struct hash_func {
|
|||
} hashes[] = {{"fast", cn_fast_hash}, {"slow", cn_slow_hash_0}, {"tree", hash_tree},
|
||||
{"extra-blake", hash_extra_blake}, {"extra-groestl", hash_extra_groestl},
|
||||
{"extra-jh", hash_extra_jh}, {"extra-skein", hash_extra_skein},
|
||||
{"slow-1", cn_slow_hash_1}, {"slow-2", cn_slow_hash_2}};
|
||||
{"slow-1", cn_slow_hash_1}, {"slow-2", cn_slow_hash_2}, {"slow-4", cn_slow_hash_4}};
|
||||
|
||||
int test_variant2_int_sqrt();
|
||||
int test_variant2_int_sqrt_ref();
|
||||
|
@ -140,7 +151,15 @@ int main(int argc, char *argv[]) {
|
|||
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 (f == cn_slow_hash_4) {
|
||||
V4_Data d;
|
||||
d.data = data.data();
|
||||
d.length = data.size();
|
||||
get(input, d.height);
|
||||
f(&d, 0, (char *) &actual);
|
||||
} else {
|
||||
f(data.data(), data.size(), (char *) &actual);
|
||||
}
|
||||
if (expected != actual) {
|
||||
size_t i;
|
||||
cerr << "Hash mismatch on test " << test << endl << "Input: ";
|
||||
|
|
10
tests/hash/tests-slow-4.txt
Normal file
10
tests/hash/tests-slow-4.txt
Normal file
|
@ -0,0 +1,10 @@
|
|||
f759588ad57e758467295443a9bd71490abff8e9dad1b95b6bf2f5d0d78387bc 5468697320697320612074657374205468697320697320612074657374205468697320697320612074657374 1806260
|
||||
5bb833deca2bdd7252a9ccd7b4ce0b6a4854515794b56c207262f7a5b9bdb566 4c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e67 1806261
|
||||
1ee6728da60fbd8d7d55b2b1ade487a3cf52a2c3ac6f520db12c27d8921f6cab 656c69742c2073656420646f20656975736d6f642074656d706f7220696e6369646964756e74207574206c61626f7265 1806262
|
||||
6969fe2ddfb758438d48049f302fc2108a4fcc93e37669170e6db4b0b9b4c4cb 657420646f6c6f7265206d61676e6120616c697175612e20557420656e696d206164206d696e696d2076656e69616d2c 1806263
|
||||
7f3048b4e90d0cbe7a57c0394f37338a01fae3adfdc0e5126d863a895eb04e02 71756973206e6f737472756420657865726369746174696f6e20756c6c616d636f206c61626f726973206e697369 1806264
|
||||
1d290443a4b542af04a82f6b2494a6ee7f20f2754c58e0849032483a56e8e2ef 757420616c697175697020657820656120636f6d6d6f646f20636f6e7365717561742e20447569732061757465 1806265
|
||||
c43cc6567436a86afbd6aa9eaa7c276e9806830334b614b2bee23cc76634f6fd 697275726520646f6c6f7220696e20726570726568656e646572697420696e20766f6c7570746174652076656c6974 1806266
|
||||
87be2479c0c4e8edfdfaa5603e93f4265b3f8224c1c5946feb424819d18990a4 657373652063696c6c756d20646f6c6f726520657520667567696174206e756c6c612070617269617475722e 1806267
|
||||
dd9d6a6d8e47465cceac0877ef889b93e7eba979557e3935d7f86dce11b070f3 4578636570746575722073696e74206f6363616563617420637570696461746174206e6f6e2070726f6964656e742c 1806268
|
||||
75c6f2ae49a20521de97285b431e717125847fb8935ed84a61e7f8d36a2c3d8e 73756e7420696e2063756c706120717569206f666669636961206465736572756e74206d6f6c6c697420616e696d20696420657374206c61626f72756d2e 1806269
|
Loading…
Add table
Add a link
Reference in a new issue