diff --git a/crates/crypto/src/chacha20_poly1305.rs b/crates/crypto/src/chacha20_poly1305.rs index 28ed6af..acef060 100644 --- a/crates/crypto/src/chacha20_poly1305.rs +++ b/crates/crypto/src/chacha20_poly1305.rs @@ -264,11 +264,13 @@ fn poly1305_mac(key: &[u8; 32], data: &[u8]) -> [u8; 16] { g1 &= mask; g2 &= mask; g3 &= mask; + let g4 = g4 & mask; let nmask = !mask; h0 = (h0 & nmask) | g0; h1 = (h1 & nmask) | g1; h2 = (h2 & nmask) | g2; h3 = (h3 & nmask) | g3; + h4 = (h4 & nmask) | g4; // Reassemble h as a 128-bit number (mod 2^128) and add s let h_val: u128 = (h0 as u128)