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