Function final [src]

Prototype

pub fn final(d: *Self, out: *[digest_length]u8) void

Parameters

d: *Selfout: *[digest_length]u8

Source

pub fn final(d: *Self, out: *[digest_length]u8) void { // The buffer here will never be completely full. @memset(d.buf[d.buf_len..], 0); // Append padding bits. d.buf[d.buf_len] = 0x80; d.buf_len += 1; // > 448 mod 512 so need to add an extra round to wrap around. if (64 - d.buf_len < 8) { d.round(d.buf[0..]); @memset(d.buf[0..], 0); } // Append message length. var i: usize = 1; var len = d.total_len >> 5; d.buf[56] = @as(u8, @intCast(d.total_len & 0x1f)) << 3; while (i < 8) : (i += 1) { d.buf[56 + i] = @as(u8, @intCast(len & 0xff)); len >>= 8; } d.round(d.buf[0..]); for (d.s, 0..) |s, j| { mem.writeInt(u32, out[4 * j ..][0..4], s, .little); } }