| ... | @@ -44,7 +44,7 @@ pub fn Blake2s(comptime out_bits: usize) type { | ... | @@ -44,7 +44,7 @@ pub fn Blake2s(comptime out_bits: usize) type { |
| 44 | pub const key_length_min = 0; | 44 | pub const key_length_min = 0; |
| 45 | pub const key_length_max = 32; | 45 | pub const key_length_max = 32; |
| 46 | pub const key_length = 32; // recommended key length | 46 | pub const key_length = 32; // recommended key length |
| 47 | pub const Options = struct { key: ?[]const u8 = null, salt: ?[8]u8 = null, context: ?[8]u8 = null }; | 47 | pub const Options = struct { key: ?[]const u8 = null, salt: ?[8]u8 = null, context: ?[8]u8 = null, expected_out_bits: usize = out_bits }; |
| 48 | | 48 | |
| 49 | const iv = [8]u32{ | 49 | const iv = [8]u32{ |
| 50 | 0x6A09E667, | 50 | 0x6A09E667, |
| ... | @@ -84,7 +84,7 @@ pub fn Blake2s(comptime out_bits: usize) type { | ... | @@ -84,7 +84,7 @@ pub fn Blake2s(comptime out_bits: usize) type { |
| 84 | | 84 | |
| 85 | const key_len = if (options.key) |key| key.len else 0; | 85 | const key_len = if (options.key) |key| key.len else 0; |
| 86 | // default parameters | 86 | // default parameters |
| 87 | d.h[0] ^= 0x01010000 ^ @truncate(u32, key_len << 8) ^ @intCast(u32, out_bits >> 3); | 87 | d.h[0] ^= 0x01010000 ^ @truncate(u32, key_len << 8) ^ @intCast(u32, options.expected_out_bits >> 3); |
| 88 | d.t = 0; | 88 | d.t = 0; |
| 89 | d.buf_len = 0; | 89 | d.buf_len = 0; |
| 90 | | 90 | |
| ... | @@ -385,7 +385,7 @@ pub fn Blake2b(comptime out_bits: usize) type { | ... | @@ -385,7 +385,7 @@ pub fn Blake2b(comptime out_bits: usize) type { |
| 385 | pub const key_length_min = 0; | 385 | pub const key_length_min = 0; |
| 386 | pub const key_length_max = 64; | 386 | pub const key_length_max = 64; |
| 387 | pub const key_length = 32; // recommended key length | 387 | pub const key_length = 32; // recommended key length |
| 388 | pub const Options = struct { key: ?[]const u8 = null, salt: ?[16]u8 = null, context: ?[16]u8 = null }; | 388 | pub const Options = struct { key: ?[]const u8 = null, salt: ?[16]u8 = null, context: ?[16]u8 = null, expected_out_bits: usize = out_bits }; |
| 389 | | 389 | |
| 390 | const iv = [8]u64{ | 390 | const iv = [8]u64{ |
| 391 | 0x6a09e667f3bcc908, | 391 | 0x6a09e667f3bcc908, |
| ... | @@ -427,7 +427,7 @@ pub fn Blake2b(comptime out_bits: usize) type { | ... | @@ -427,7 +427,7 @@ pub fn Blake2b(comptime out_bits: usize) type { |
| 427 | | 427 | |
| 428 | const key_len = if (options.key) |key| key.len else 0; | 428 | const key_len = if (options.key) |key| key.len else 0; |
| 429 | // default parameters | 429 | // default parameters |
| 430 | d.h[0] ^= 0x01010000 ^ (key_len << 8) ^ (out_bits >> 3); | 430 | d.h[0] ^= 0x01010000 ^ (key_len << 8) ^ (options.expected_out_bits >> 3); |
| 431 | d.t = 0; | 431 | d.t = 0; |
| 432 | d.buf_len = 0; | 432 | d.buf_len = 0; |
| 433 | | 433 | |