rs_internal_state/rotors/
sha512rotor.rs1use rs_n_bit_words::{NBitWord, TSize};
2
3type U64Word = NBitWord<u64>;
4
5pub struct Sha512Rotor<'a, 'b>(
7 pub U64Word,
8 pub U64Word,
9 pub U64Word,
10 pub &'a mut U64Word,
11 pub U64Word,
12 pub U64Word,
13 pub U64Word,
14 pub &'b mut U64Word,
15 pub U64Word,
16);
17
18impl Sha512Rotor<'_, '_> {
19 #[inline(always)]
20 pub(crate) fn rnd(&mut self, k: u64) {
21 let t0 = self.4.sigma1() + U64Word::ch(self.4, self.5, self.6) + *self.7 + self.8 + k;
22 *self.3 += t0;
23 *self.7 = t0 + self.0.sigma0() + U64Word::maj(self.0, self.1, self.2);
24 }
25}