use index assignment in existing code

This commit is contained in:
2026-03-11 15:40:05 +01:00
parent 930d7b56cc
commit 88915bbc8a
6 changed files with 67 additions and 74 deletions

View File

@@ -85,9 +85,9 @@ func crypto.blake2b.hash[outlen: i64, key: ptr, keylen: i64, input: ptr, inputle
if keylen > 0
for i in 0..keylen
mem.write8(block + i, key[i])
block[i] = key[i]
for i in (keylen)..128
mem.write8(block + i, 0)
block[i] = 0
c = 128
else
c = 0
@@ -99,7 +99,7 @@ func crypto.blake2b.hash[outlen: i64, key: ptr, keylen: i64, input: ptr, inputle
t1 = t1 + 1
crypto.blake2b._compress(h, block, t0, t1, 0, iv, sigma)
c = 0
mem.write8(block + c, input[i])
block[c] = input[i]
c = c + 1
t0 = t0 + c
@@ -108,11 +108,11 @@ func crypto.blake2b.hash[outlen: i64, key: ptr, keylen: i64, input: ptr, inputle
if c < 128
for i in (c)..128
mem.write8(block + i, 0)
block[i] = 0
crypto.blake2b._compress(h, block, t0, t1, 1, iv, sigma)
for i in 0..outlen
mem.write8(out + i, ((mem.read64(h + (i >> 3) * 8) >> (8 * (i & 7))) & 0xff))
out[i] = (mem.read64(h + (i >> 3) * 8) >> (8 * (i & 7))) & 0xff
mem.zero_and_free(h, 8 * 8)
mem.zero_and_free(block, 128)
@@ -210,10 +210,9 @@ func crypto.xchacha20._stream[key: ptr, nonce: ptr, out: ptr, len: i64] : void
crypto.xchacha20._hchacha20(key, nonce, subkey)
let nonce12: ptr = mem.alloc(12)
for i in 0..12
mem.write8(nonce12 + i, 0)
mem.zero(nonce12, 12)
for i in 0..8
mem.write8(nonce12 + 4 + i, nonce[16 + i])
nonce12[i + 4] = nonce[16 + i]
let blocknum = 0
let remaining: i64 = len
@@ -225,7 +224,7 @@ func crypto.xchacha20._stream[key: ptr, nonce: ptr, out: ptr, len: i64] : void
if remaining < 64
take = remaining
for i in 0..take
mem.write8(out + (len - remaining) + i, block[i])
out[len - remaining + i] = block[i]
remaining = remaining - take
blocknum = blocknum + 1
mem.zero_and_free(block, 64)
@@ -237,13 +236,13 @@ func crypto.xchacha20._stream[key: ptr, nonce: ptr, out: ptr, len: i64] : void
func crypto.xchacha20.xor_no_auth[key: ptr, nonce: ptr, input: ptr, len: i64] : ptr
if len <= 0
let out: ptr = mem.alloc(1)
mem.write8(out, 0)
out[0] = 0
return out
let out: ptr = mem.alloc(len)
let ks: ptr = mem.alloc(len)
crypto.xchacha20._stream(key, nonce, ks, len)
for i in 0..len
mem.write8(out + i, input[i] ^ ks[i])
out[i] = input[i] ^ ks[i]
mem.zero_and_free(ks, len)
return out
@@ -328,8 +327,8 @@ func crypto.x25519.pack[out: ptr, input: ptr] : void
for i in 0..16
let v: i64 = mem.read64(t + i * 8)
mem.write8(out + i * 2, v & 0xff)
mem.write8(out + i * 2 + 1, (v >> 8) & 0xff)
out[i * 2] = v & 0xff
out[i * 2 + 1] = (v >> 8) & 0xff
mem.zero_and_free(t, 16 * 8)
mem.zero_and_free(m, 16 * 8)
@@ -353,9 +352,9 @@ func crypto.x25519.scalarmult[scalar: ptr, point: ptr] : ptr
// copy and clamp scalar
for i in 0..32
mem.write8(clamped + i, scalar[i])
mem.write8(clamped, clamped[0] & 0xf8)
mem.write8(clamped + 31, (clamped[31] & 0x7f) | 0x40)
clamped[i] = scalar[i]
clamped[0] = clamped[0] & 0xf8
clamped[31] = (clamped[31] & 0x7f) | 0x40
// load point
crypto.x25519.unpack(x, point)