Use fixed-length integers to improve cross-platform compatibility
As discussed in the review of https://github.com/dedis/kyber/pull/490 with @ineiti and @howjmay , Kyber uses structures with Go int-typed fields, which are unsized. This can lead to differences in serialization and hash computations across different processor architectures.
It would be preferable to switch to sized types (int32 and int64), which would provide consistent behaviours across platforms.
Additional notes: this probably needs a major version change, as the fields are involved in the hashes. So if a 64-bit machine stored the fields as int, it would store them as 64-bit fields. Then if we change the int to int32, it would be incompatible. The same thing would happen with a 32-bit system and changing the int to int64.
However, #493 suggests that this never worked on a 32-bit system. So I think if we change every int to int64, it should work.
Following #529 , Kyber now compiles and works in both 32-bit and 64-bit architectures. This effectively makes this issue more problematic.
I've added you (@AnomalRoil and @K1li4nL) and me as assignees so that we can discuss this and decide together the best way forward ahead of the v4 release.