Skip to content
This repository was archived by the owner on Nov 30, 2022. It is now read-only.

Commit 5e33d88

Browse files
committed
Merge #162: use rotate_left function instead of macro
2fa65a0 use rotate_left function instead of macro (Riccardo Casatta) Pull request description: `rotate_left` is now available in our MSRV: https://doc.rust-lang.org/std/primitive.u32.html#method.rotate_left ACKs for top commit: tcharding: ACK 2fa65a0 apoelstra: ACK 2fa65a0 hooray! Tree-SHA512: 59557c88e4c025f13f6ec7e09ca048e9e34f0463b0e412c4e2e015e2af11f5edc95a0344a7a2e2fe59c8ff49141acd03f0978b0848cae685e440dc0b222069be
2 parents d0ec620 + 2fa65a0 commit 5e33d88

File tree

5 files changed

+12
-22
lines changed

5 files changed

+12
-22
lines changed

src/ripemd160.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ macro_rules! round(
169169
($a:expr, $b:expr, $c:expr, $d:expr, $e:expr,
170170
$x:expr, $bits:expr, $add:expr, $round:expr) => ({
171171
$a = $a.wrapping_add($round).wrapping_add($x).wrapping_add($add);
172-
$a = circular_lshift32!($bits, $a).wrapping_add($e);
173-
$c = circular_lshift32!(10, $c);
172+
$a = $a.rotate_left($bits).wrapping_add($e);
173+
$c = $c.rotate_left(10);
174174
});
175175
);
176176

src/sha1.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ impl HashEngine {
162162
*w_val = util::slice_to_u32_be(buff_bytes);
163163
}
164164
for i in 16..80 {
165-
w[i] = circular_lshift32!(1, w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);
165+
w[i] =(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]).rotate_left(1);
166166
}
167167

168168
let mut a = self.h[0];
@@ -180,10 +180,10 @@ impl HashEngine {
180180
_ => unreachable!()
181181
};
182182

183-
let new_a = circular_lshift32!(5, a).wrapping_add(f).wrapping_add(e).wrapping_add(k).wrapping_add(wi);
183+
let new_a = a.rotate_left(5).wrapping_add(f).wrapping_add(e).wrapping_add(k).wrapping_add(wi);
184184
e = d;
185185
d = c;
186-
c = circular_lshift32!(30, b);
186+
c = b.rotate_left(30);
187187
b = a;
188188
a = new_a;
189189
}

src/sha256.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,9 @@ impl hex::FromHex for Midstate {
233233

234234
macro_rules! Ch( ($x:expr, $y:expr, $z:expr) => ($z ^ ($x & ($y ^ $z))) );
235235
macro_rules! Maj( ($x:expr, $y:expr, $z:expr) => (($x & $y) | ($z & ($x | $y))) );
236-
macro_rules! Sigma0( ($x:expr) => (circular_lshift32!(30, $x) ^ circular_lshift32!(19, $x) ^ circular_lshift32!(10, $x)) ); macro_rules! Sigma1( ($x:expr) => (circular_lshift32!(26, $x) ^ circular_lshift32!(21, $x) ^ circular_lshift32!(7, $x)) );
237-
macro_rules! sigma0( ($x:expr) => (circular_lshift32!(25, $x) ^ circular_lshift32!(14, $x) ^ ($x >> 3)) );
238-
macro_rules! sigma1( ($x:expr) => (circular_lshift32!(15, $x) ^ circular_lshift32!(13, $x) ^ ($x >> 10)) );
236+
macro_rules! Sigma0( ($x:expr) => ($x.rotate_left(30) ^ $x.rotate_left(19) ^ $x.rotate_left(10)) ); macro_rules! Sigma1( ($x:expr) => ( $x.rotate_left(26) ^ $x.rotate_left(21) ^ $x.rotate_left(7)) );
237+
macro_rules! sigma0( ($x:expr) => ($x.rotate_left(25) ^ $x.rotate_left(14) ^ ($x >> 3)) );
238+
macro_rules! sigma1( ($x:expr) => ($x.rotate_left(15) ^ $x.rotate_left(13) ^ ($x >> 10)) );
239239

240240
macro_rules! round(
241241
// first round

src/sha512.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,10 +212,10 @@ impl crate::Hash for Hash {
212212

213213
macro_rules! Ch( ($x:expr, $y:expr, $z:expr) => ($z ^ ($x & ($y ^ $z))) );
214214
macro_rules! Maj( ($x:expr, $y:expr, $z:expr) => (($x & $y) | ($z & ($x | $y))) );
215-
macro_rules! Sigma0( ($x:expr) => (circular_lshift64!(36, $x) ^ circular_lshift64!(30, $x) ^ circular_lshift64!(25, $x)) );
216-
macro_rules! Sigma1( ($x:expr) => (circular_lshift64!(50, $x) ^ circular_lshift64!(46, $x) ^ circular_lshift64!(23, $x)) );
217-
macro_rules! sigma0( ($x:expr) => (circular_lshift64!(63, $x) ^ circular_lshift64!(56, $x) ^ ($x >> 7)) );
218-
macro_rules! sigma1( ($x:expr) => (circular_lshift64!(45, $x) ^ circular_lshift64!(3, $x) ^ ($x >> 6)) );
215+
macro_rules! Sigma0( ($x:expr) => ($x.rotate_left(36) ^ $x.rotate_left(30) ^ $x.rotate_left(25)) );
216+
macro_rules! Sigma1( ($x:expr) => ($x.rotate_left(50) ^ $x.rotate_left(46) ^ $x.rotate_left(23)) );
217+
macro_rules! sigma0( ($x:expr) => ($x.rotate_left(63) ^ $x.rotate_left(56) ^ ($x >> 7)) );
218+
macro_rules! sigma1( ($x:expr) => ($x.rotate_left(45) ^ $x.rotate_left(3) ^ ($x >> 6)) );
219219

220220
macro_rules! round(
221221
// first round

src/util.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,6 @@
1212
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
1313
//
1414

15-
/// Circular left-shift a 32-bit word.
16-
macro_rules! circular_lshift32 (
17-
($shift:expr, $w:expr) => (($w << $shift) | ($w >> (32 - $shift)))
18-
);
19-
20-
/// Circular left-shift a 64-bit word.
21-
macro_rules! circular_lshift64 (
22-
($shift:expr, $w:expr) => (($w << $shift) | ($w >> (64 - $shift)))
23-
);
24-
2515
#[macro_export]
2616
/// Adds hexadecimal formatting implementation of a trait `$imp` to a given type `$ty`.
2717
macro_rules! hex_fmt_impl(

0 commit comments

Comments
 (0)