So let's say you're trying to do SHA3-224.
If you're on a 64-bit machine you'd presumably use KECCAK-$f$[1600]. In-so-far as I understand it'd have the following parameters:
- Rate: 448 (2*224)
- Capacity: 1152 (1600 - rate)
- Rounds: 24
- Rotation constants: described in https://keccak.team/keccak_specs_summary.html (last table)
With a 32-bit machine you'd presumably be using KECCAK-$f$[800] with the following parameters (last table):
- Rate: 448 (2*224)
- Capacity: 352 (800 - rate)
- Rounds: 22 ($12 + 2*\log_2(800/25)$)
Assuming that that's all correct then what I'm wondering about is how the rotation constants would work.
https://keccak.team/files/Keccak-reference-3.0.pdf#page=21 gives a formula for determining the rotation constants: $(t+1)(t+2)/2$ and https://keccak.team/files/Keccak-reference-3.0.pdf#page=22 shows a table with the results of the formula. To get the rotation constants at https://keccak.team/keccak_specs_summary.html you take the lower lower six bits of each of those numbers (eg. $x \land 0x3F$ or $x \mod 64$).
For KECCAK-$f$[800] would you take the lower five bits (eg. $x \land 0x1F$ or $x \mod 32$) of each of those numbers?
A lot of the 32-bit SHA3 implementations I've seen seem to do KECCAK-$f$[1600] and just simulate 64-bit numbers with 2x 32-bit numbers.