authorgravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2026-05-29 12:50:59+02:00
committergravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2026-09-20 16:05:33+02:00
logcaa9b1c54dc60007bbf46b425a2947542c8a61ad
treef9ae947cdb9e912739be4271789253c4dbe574c7
parentcd14ed892b6b5786ae4498140e9ccddbfcc9b971

Inline the state initialization


1 files changed, 20 insertions(+), 28 deletions(-)

lib/std/crypto/argon2.zig+20-28
......@@ -176,32 +176,6 @@ fn blake2bLong(out: []u8, in: []const u8) void {
176176 @memcpy(out_slice, out_buf[0..out_slice.len]);
177177}
178178
179fn initBlocks(
180 blocks: *Blocks,
181 h0: *H0,
182 memory: u32,
183 threads: u24,
184) void {
185 var block0: [1024]u8 = undefined;
186 var lane: u24 = 0;
187 while (lane < threads) : (lane += 1) {
188 const j = lane * (memory / threads);
189 mem.writeInt(u32, h0[Blake2b512.digest_length + 4 ..][0..4], lane, .little);
190
191 mem.writeInt(u32, h0[Blake2b512.digest_length..][0..4], 0, .little);
192 blake2bLong(&block0, h0);
193 for (&blocks.items[j + 0], 0..) |*v, i| {
194 v.* = mem.readInt(u64, block0[i * 8 ..][0..8], .little);
195 }
196
197 mem.writeInt(u32, h0[Blake2b512.digest_length..][0..4], 1, .little);
198 blake2bLong(&block0, h0);
199 for (&blocks.items[j + 1], 0..) |*v, i| {
200 v.* = mem.readInt(u64, block0[i * 8 ..][0..8], .little);
201 }
202 }
203}
204
205179fn processBlocks(
206180 blocks: *Blocks,
207181 time: u32,
......@@ -529,9 +503,27 @@ pub fn kdf(
529503 var blocks = try Blocks.initCapacity(allocator, memory);
530504 defer blocks.deinit();
531505
532 _ = blocks.addManyAsSliceAssumeCapacity(memory);
506 const items = blocks.addManyAsSliceAssumeCapacity(memory);
507
508 var block0: [1024]u8 = undefined;
509 var lane: u24 = 0;
510 while (lane < params.p) : (lane += 1) {
511 const j = lane * (memory / params.p);
512 mem.writeInt(u32, h0[Blake2b512.digest_length + 4 ..][0..4], lane, .little);
513
514 mem.writeInt(u32, h0[Blake2b512.digest_length..][0..4], 0, .little);
515 blake2bLong(&block0, &h0);
516 for (&items[j + 0], 0..) |*v, i| {
517 v.* = mem.readInt(u64, block0[i * 8 ..][0..8], .little);
518 }
519
520 mem.writeInt(u32, h0[Blake2b512.digest_length..][0..4], 1, .little);
521 blake2bLong(&block0, &h0);
522 for (&items[j + 1], 0..) |*v, i| {
523 v.* = mem.readInt(u64, block0[i * 8 ..][0..8], .little);
524 }
525 }
533526
534 initBlocks(&blocks, &h0, memory, params.p);
535527 try processBlocks(&blocks, params.t, memory, params.p, mode, io);
536528 finalize(&blocks, memory, params.p, derived_key);
537529}