From dae90543c2c1df4e6290ba3ce9c7ad95395015a1 Mon Sep 17 00:00:00 2001 From: AntiochP <30642645+antiochp@users.noreply.github.com> Date: Thu, 18 Jan 2018 13:29:44 -0500 Subject: [PATCH] move siphash out of pow and into util (#633) we are going to use this for generating short ids --- pow/src/cuckoo.rs | 2 +- pow/src/lib.rs | 1 - util/src/lib.rs | 2 ++ {pow => util}/src/siphash.rs | 44 ++++++++++++++++++------------------ 4 files changed, 25 insertions(+), 24 deletions(-) rename {pow => util}/src/siphash.rs (77%) diff --git a/pow/src/cuckoo.rs b/pow/src/cuckoo.rs index cd7859d2e..b82d78a54 100644 --- a/pow/src/cuckoo.rs +++ b/pow/src/cuckoo.rs @@ -23,7 +23,7 @@ use std::cmp; use blake2; use core::core::Proof; -use siphash::siphash24; +use util::siphash::siphash24; use MiningWorker; const MAXPATHLEN: usize = 8192; diff --git a/pow/src/lib.rs b/pow/src/lib.rs index 9488c83a5..4aee10871 100644 --- a/pow/src/lib.rs +++ b/pow/src/lib.rs @@ -44,7 +44,6 @@ extern crate grin_util as util; extern crate cuckoo_miner; -mod siphash; pub mod plugin; pub mod cuckoo; pub mod types; diff --git a/util/src/lib.rs b/util/src/lib.rs index 30b921b69..36f0b44f4 100644 --- a/util/src/lib.rs +++ b/util/src/lib.rs @@ -50,6 +50,8 @@ pub use secp_static::static_secp_instance; pub mod types; pub use types::{LoggingConfig, LogLevel}; +pub mod siphash; + // other utils use std::cell::{Ref, RefCell}; #[allow(unused_imports)] diff --git a/pow/src/siphash.rs b/util/src/siphash.rs similarity index 77% rename from pow/src/siphash.rs rename to util/src/siphash.rs index d1339dda2..d4fc1fe29 100644 --- a/pow/src/siphash.rs +++ b/util/src/siphash.rs @@ -1,4 +1,4 @@ -// Copyright 2016 The Grin Developers +// Copyright 2018 The Grin Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,30 +24,30 @@ pub fn siphash24(v: [u64; 4], nonce: u64) -> u64 { // macro for left rotation macro_rules! rotl { - ($num:ident, $shift:expr) => { - $num = ($num << $shift) | ($num >> (64 - $shift)); - } - } + ($num:ident, $shift:expr) => { + $num = ($num << $shift) | ($num >> (64 - $shift)); + } + } // macro for a single siphash round macro_rules! round { - () => { - v0 = v0.wrapping_add(v1); - v2 = v2.wrapping_add(v3); - rotl!(v1, 13); - rotl!(v3, 16); - v1 ^= v0; - v3 ^= v2; - rotl!(v0, 32); - v2 = v2.wrapping_add(v1); - v0 = v0.wrapping_add(v3); - rotl!(v1, 17); - rotl!(v3, 21); - v1 ^= v2; - v3 ^= v0; - rotl!(v2, 32); - } - } + () => { + v0 = v0.wrapping_add(v1); + v2 = v2.wrapping_add(v3); + rotl!(v1, 13); + rotl!(v3, 16); + v1 ^= v0; + v3 ^= v2; + rotl!(v0, 32); + v2 = v2.wrapping_add(v1); + v0 = v0.wrapping_add(v3); + rotl!(v1, 17); + rotl!(v3, 21); + v1 ^= v2; + v3 ^= v0; + rotl!(v2, 32); + } + } // 2 rounds round!();