rs_internal_state/rotors/
sha512rotor.rs

1use rs_n_bit_words::{NBitWord, TSize};
2
3type U64Word = NBitWord<u64>;
4
5/// Process hashing steps of SHA-384, SHA-512, SHA-512/224 and SHA-512/256
6pub 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}