Skip to content

Commit 32a2dae

Browse files
committed
---
yaml --- r: 79439 b: refs/heads/snap-stage3 c: 6e3b2ab h: refs/heads/master i: 79437: 0d2a11d 79435: c09e531 79431: 765ea19 79423: ab19176 v: v3
1 parent 1975fd0 commit 32a2dae

File tree

2 files changed

+41
-23
lines changed

2 files changed

+41
-23
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 124eb2119c78651cfaaa7a046a101fa2e20f83ca
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: d39cec65b025ad4c6de50e778ffd1177279b5b3d
4+
refs/heads/snap-stage3: 6e3b2ab44d9c03fb7aa8e8b94e711c197de3d337
55
refs/heads/try: ac820906c0e53eab79a98ee64f7231f57c3887b4
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libextra/crypto/sha2.rs

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,8 @@ use cryptoutil::{write_u64_be, write_u32_be, read_u64v_be, read_u32v_be, add_byt
1414
add_bytes_to_bits_tuple, FixedBuffer, FixedBuffer128, FixedBuffer64, StandardPadding};
1515
use digest::Digest;
1616

17-
18-
// Sha-512 and Sha-256 use basically the same calculations which are implemented by these macros.
19-
// Inlining the calculations seems to result in better generated code.
20-
macro_rules! schedule_round( ($t:expr) => (
21-
W[$t] = sigma1(W[$t - 2]) + W[$t - 7] + sigma0(W[$t - 15]) + W[$t - 16];
22-
)
23-
)
24-
25-
macro_rules! sha2_round(
26-
($A:ident, $B:ident, $C:ident, $D:ident,
27-
$E:ident, $F:ident, $G:ident, $H:ident, $K:ident, $t:expr) => (
28-
{
29-
$H += sum1($E) + ch($E, $F, $G) + $K[$t] + W[$t];
30-
$D += $H;
31-
$H += sum0($A) + maj($A, $B, $C);
32-
}
33-
)
34-
)
35-
36-
37-
// A structure that represents that state of a digest computation for the SHA-2 512 family of digest
38-
// functions
17+
// A structure that represents that state of a digest computation for the SHA-2 512 family
18+
// of digest functions
3919
struct Engine512State {
4020
H0: u64,
4121
H1: u64,
@@ -108,6 +88,25 @@ impl Engine512State {
10888

10989
let mut W = [0u64, ..80];
11090

91+
// Sha-512 and Sha-256 use basically the same calculations which are implemented by
92+
// these macros. Inlining the calculations seems to result in better generated code.
93+
macro_rules! schedule_round( ($t:expr) => (
94+
W[$t] = sigma1(W[$t - 2]) + W[$t - 7] + sigma0(W[$t - 15]) + W[$t - 16];
95+
)
96+
)
97+
98+
macro_rules! sha2_round(
99+
($A:ident, $B:ident, $C:ident, $D:ident,
100+
$E:ident, $F:ident, $G:ident, $H:ident, $K:ident, $t:expr) => (
101+
{
102+
$H += sum1($E) + ch($E, $F, $G) + $K[$t] + W[$t];
103+
$D += $H;
104+
$H += sum0($A) + maj($A, $B, $C);
105+
}
106+
)
107+
)
108+
109+
111110
read_u64v_be(W.mut_slice(0, 16), data);
112111

113112
// Putting the message schedule inside the same loop as the round calculations allows for
@@ -505,6 +504,25 @@ impl Engine256State {
505504

506505
let mut W = [0u32, ..64];
507506

507+
// Sha-512 and Sha-256 use basically the same calculations which are implemented
508+
// by these macros. Inlining the calculations seems to result in better generated code.
509+
macro_rules! schedule_round( ($t:expr) => (
510+
W[$t] = sigma1(W[$t - 2]) + W[$t - 7] + sigma0(W[$t - 15]) + W[$t - 16];
511+
)
512+
)
513+
514+
macro_rules! sha2_round(
515+
($A:ident, $B:ident, $C:ident, $D:ident,
516+
$E:ident, $F:ident, $G:ident, $H:ident, $K:ident, $t:expr) => (
517+
{
518+
$H += sum1($E) + ch($E, $F, $G) + $K[$t] + W[$t];
519+
$D += $H;
520+
$H += sum0($A) + maj($A, $B, $C);
521+
}
522+
)
523+
)
524+
525+
508526
read_u32v_be(W.mut_slice(0, 16), data);
509527

510528
// Putting the message schedule inside the same loop as the round calculations allows for

0 commit comments

Comments
 (0)