| ... | ... | @@ -503,8 +503,14 @@ pub fn chacha20poly1305Open(dst: []u8, ciphertext: []const u8, data: []const u8, |
| 503 | 503 | var computedTag: [16]u8 = undefined; |
| 504 | 504 | mac.final(computedTag[0..]); |
| 505 | 505 | |
| 506 | | // verify mac |
| 507 | | if (!mem.eql(u8, polyTag, computedTag[0..])) { |
| 506 | // verify mac in constant time |
| 507 | // TODO: we can't currently guarantee that this will run in constant time. |
| 508 | // See https://github.com/ziglang/zig/issues/1776 |
| 509 | var acc: u8 = 0; |
| 510 | for (computedTag) |_, i| { |
| 511 | acc |= (computedTag[i] ^ polyTag[i]); |
| 512 | } |
| 513 | if (acc != 0) { |
| 508 | 514 | return false; |
| 509 | 515 | } |
| 510 | 516 | |