core/crypto/_sha3: Cleanups

- Use `math/bits`
This commit is contained in:
Yawning Angel
2023-11-16 00:29:30 +09:00
parent b0397581db
commit 7c1119f217
+7 -25
View File
@@ -11,7 +11,7 @@ package _sha3
To use the original Keccak padding, set the is_keccak bool to true, otherwise it will use SHA3 padding.
*/
import "../util"
import "core:math/bits"
ROUNDS :: 24
@@ -38,7 +38,7 @@ keccakf :: proc "contextless" (st: ^[25]u64) {
0x8000000000008080, 0x0000000080000001, 0x8000000080008008,
}
keccakf_rotc := [?]i32 {
keccakf_rotc := [?]int {
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14,
27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44,
}
@@ -53,18 +53,8 @@ keccakf :: proc "contextless" (st: ^[25]u64) {
bc: [5]u64 = ---
when ODIN_ENDIAN != .Little {
v: uintptr = ---
for i = 0; i < 25; i += 1 {
v := uintptr(&st[i])
st[i] =
u64((^u8)(v + 0)^ << 0) |
u64((^u8)(v + 1)^ << 8) |
u64((^u8)(v + 2)^ << 16) |
u64((^u8)(v + 3)^ << 24) |
u64((^u8)(v + 4)^ << 32) |
u64((^u8)(v + 5)^ << 40) |
u64((^u8)(v + 6)^ << 48) |
u64((^u8)(v + 7)^ << 56)
st[i] = bits.byte_swap(st[i])
}
}
@@ -75,7 +65,7 @@ keccakf :: proc "contextless" (st: ^[25]u64) {
}
for i = 0; i < 5; i += 1 {
t = bc[(i + 4) % 5] ~ util.ROTL64(bc[(i + 1) % 5], 1)
t = bc[(i + 4) % 5] ~ bits.rotate_left64(bc[(i + 1) % 5], 1)
for j = 0; j < 25; j += 5 {
st[j + i] ~= t
}
@@ -86,7 +76,7 @@ keccakf :: proc "contextless" (st: ^[25]u64) {
for i = 0; i < 24; i += 1 {
j = keccakf_piln[i]
bc[0] = st[j]
st[j] = util.ROTL64(t, u64(keccakf_rotc[i]))
st[j] = bits.rotate_left64(t, keccakf_rotc[i])
t = bc[0]
}
@@ -105,16 +95,7 @@ keccakf :: proc "contextless" (st: ^[25]u64) {
when ODIN_ENDIAN != .Little {
for i = 0; i < 25; i += 1 {
v = uintptr(&st[i])
t = st[i]
(^u8)(v + 0)^ = (t >> 0) & 0xff
(^u8)(v + 1)^ = (t >> 8) & 0xff
(^u8)(v + 2)^ = (t >> 16) & 0xff
(^u8)(v + 3)^ = (t >> 24) & 0xff
(^u8)(v + 4)^ = (t >> 32) & 0xff
(^u8)(v + 5)^ = (t >> 40) & 0xff
(^u8)(v + 6)^ = (t >> 48) & 0xff
(^u8)(v + 7)^ = (t >> 56) & 0xff
st[i] = bits.byte_swap(st[i])
}
}
}
@@ -124,6 +105,7 @@ init :: proc "contextless" (c: ^Sha3_Context) {
c.st.q[i] = 0
}
c.rsiz = 200 - 2 * c.mdlen
c.pt = 0
}
update :: proc "contextless" (c: ^Sha3_Context, data: []byte) {