lib/noise/functions/hash/blake2s.rb in noise-ruby-0.7.0 vs lib/noise/functions/hash/blake2s.rb in noise-ruby-0.7.1
- old
+ new
@@ -60,11 +60,11 @@
# @return context
def init(out_len, key)
raise ArgumentError if out_len == 0 || out_len > 32
h = IV.dup
h[0] ^= 0x01010000 ^ (key.size << 8) ^ out_len
- t = [0, 0]
+ t = 0
c = 0
b = Array.new(Blake2s::BLOCKLEN).fill(0, key.size)
ctx = Context.new(b, h, t, c, out_len)
if key.size > 0
update_internal(ctx, key)
@@ -74,32 +74,22 @@
end
def update_internal(ctx, input)
input.size.times do |i|
if ctx.c == Blake2s::BLOCKLEN
- ctx.t[0] += ctx.c
- # if ctx.t[0] < ctx.c
- if ctx.t[0] > 0xFFFFFFFF
- ctx.t[0] = ctx.t[0] - 0xFFFFFFFF
- ctx.t[1] += 1
- end
+ ctx.t += ctx.c
compress(ctx, false)
ctx.c = 0
end
ctx.b[ctx.c] = input[i]
ctx.c += 1
end
end
def final(ctx, out)
- ctx.t[0] += ctx.c
- if ctx.t[0] > 0xFFFFFFFF
- ctx.t[0] = ctx.t[0] - 0xFFFFFFFF
- ctx.t[1] += 1
- end
-
+ ctx.t += ctx.c
while ctx.c < Blake2s::BLOCKLEN
ctx.b[ctx.c] = 0
ctx.c += 1
end
compress(ctx, true)
@@ -149,15 +139,13 @@
8.times do |i|
v[i] = ctx.h[i]
v[i + 8] = IV[i]
end
- v[12] ^= ctx.t[0]
- v[13] ^= ctx.t[1]
+ v[12] ^= ctx.t & 0xFFFFFFFF
+ v[13] ^= (ctx.t / 0x100000000) & 0xFFFFFFFF
- if last
- v[14] = ~v[14] & 0xFFFFFFFF
- end
+ v[14] = (last ? ~v[14] : v[14]) & 0xFFFFFFFF
16.times do |i|
m[i] = get32(ctx.b[4 * i], ctx.b[4 * i + 1], ctx.b[4 * i + 2], ctx.b[4 * i + 3])
end