# crypto.keccak.State: add checks to prevent insecure transitions \(\#22020\) · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/a5d4ad17b716508c2e1a2c1c0cf0b32bed08e26f)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: a5d4ad17b716508c2e1a2c1c0cf0b32bed08e26f

Requested commit: a5d4ad17b716508c2e1a2c1c0cf0b32bed08e26f

Commit: a5d4ad17b716508c2e1a2c1c0cf0b32bed08e26f

Tree: a602295b1c5f4d79476054e62a23a5d38afebcaa

Author: Frank Denis

Committer: GitHub

## Message

```
crypto.keccak.State: add checks to prevent insecure transitions (#22020)

* crypto.keccak.State: don't unconditionally permute after a squeeze()

Now, squeeze() behaves like absorb()

Namely,

squeeze(x[0..t]);
squeeze(x[t..n)); with t <= n

becomes equivalent to squeeze(x[0..n]).

* keccak: in debug mode, track transitions to prevent insecure ones.

Fixes #22019 
```

## Parents

- [dafe1a910d1b236e7cfba40231f3c730f18f5d1f](https://git.cafe/gitcafe/zig/commit/dafe1a910d1b236e7cfba40231f3c730f18f5d1f?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/a5d4ad17b716508c2e1a2c1c0cf0b32bed08e26f?format=markdown)
