| ... | @@ -2,6 +2,7 @@ const mem = @import("../mem.zig"); | ... | @@ -2,6 +2,7 @@ const mem = @import("../mem.zig"); |
| 2 | const math = @import("../math/index.zig"); | 2 | const math = @import("../math/index.zig"); |
| 3 | const endian = @import("../endian.zig"); | 3 | const endian = @import("../endian.zig"); |
| 4 | const debug = @import("../debug/index.zig"); | 4 | const debug = @import("../debug/index.zig"); |
| | 5 | const builtin = @import("builtin"); |
| 5 | | 6 | |
| 6 | ///////////////////// | 7 | ///////////////////// |
| 7 | // Sha224 + Sha256 | 8 | // Sha224 + Sha256 |
| ... | @@ -269,12 +270,22 @@ fn Sha2_32(comptime params: Sha2Params32) -> type { return struct { | ... | @@ -269,12 +270,22 @@ fn Sha2_32(comptime params: Sha2Params32) -> type { return struct { |
| 269 | };} | 270 | };} |
| 270 | | 271 | |
| 271 | test "sha224 single" { | 272 | test "sha224 single" { |
| | 273 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 274 | // https://github.com/zig-lang/zig/issues/537 |
| | 275 | return; |
| | 276 | } |
| | 277 | |
| 272 | debug.assert(0xd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f == Sha224.hash("")); | 278 | debug.assert(0xd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f == Sha224.hash("")); |
| 273 | debug.assert(0x23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 == Sha224.hash("abc")); | 279 | debug.assert(0x23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 == Sha224.hash("abc")); |
| 274 | debug.assert(0xc97ca9a559850ce97a04a96def6d99a9e0e0e2ab14e6b8df265fc0b3 == Sha224.hash("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")); | 280 | debug.assert(0xc97ca9a559850ce97a04a96def6d99a9e0e0e2ab14e6b8df265fc0b3 == Sha224.hash("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")); |
| 275 | } | 281 | } |
| 276 | | 282 | |
| 277 | test "sha224 streaming" { | 283 | test "sha224 streaming" { |
| | 284 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 285 | // https://github.com/zig-lang/zig/issues/537 |
| | 286 | return; |
| | 287 | } |
| | 288 | |
| 278 | var h = Sha224.init(); | 289 | var h = Sha224.init(); |
| 279 | | 290 | |
| 280 | debug.assert(0xd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f == h.final()); | 291 | debug.assert(0xd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f == h.final()); |
| ... | @@ -291,12 +302,22 @@ test "sha224 streaming" { | ... | @@ -291,12 +302,22 @@ test "sha224 streaming" { |
| 291 | } | 302 | } |
| 292 | | 303 | |
| 293 | test "sha256 single" { | 304 | test "sha256 single" { |
| | 305 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 306 | // https://github.com/zig-lang/zig/issues/537 |
| | 307 | return; |
| | 308 | } |
| | 309 | |
| 294 | debug.assert(0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 == Sha256.hash("")); | 310 | debug.assert(0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 == Sha256.hash("")); |
| 295 | debug.assert(0xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad == Sha256.hash("abc")); | 311 | debug.assert(0xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad == Sha256.hash("abc")); |
| 296 | debug.assert(0xcf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1 == Sha256.hash("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")); | 312 | debug.assert(0xcf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1 == Sha256.hash("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")); |
| 297 | } | 313 | } |
| 298 | | 314 | |
| 299 | test "sha256 streaming" { | 315 | test "sha256 streaming" { |
| | 316 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 317 | // https://github.com/zig-lang/zig/issues/537 |
| | 318 | return; |
| | 319 | } |
| | 320 | |
| 300 | var h = Sha256.init(); | 321 | var h = Sha256.init(); |
| 301 | | 322 | |
| 302 | debug.assert(0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 == h.final()); | 323 | debug.assert(0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 == h.final()); |
| ... | @@ -373,7 +394,7 @@ fn Sha2_64(comptime params: Sha2Params64) -> type { return struct { | ... | @@ -373,7 +394,7 @@ fn Sha2_64(comptime params: Sha2Params64) -> type { return struct { |
| 373 | // Streaming Cache | 394 | // Streaming Cache |
| 374 | buf: [128]u8, | 395 | buf: [128]u8, |
| 375 | buf_len: u8, | 396 | buf_len: u8, |
| 376 | total_len: u64, | 397 | total_len: u128, |
| 377 | | 398 | |
| 378 | pub fn init() -> Self { | 399 | pub fn init() -> Self { |
| 379 | var d: Self = undefined; | 400 | var d: Self = undefined; |
| ... | @@ -600,6 +621,11 @@ fn Sha2_64(comptime params: Sha2Params64) -> type { return struct { | ... | @@ -600,6 +621,11 @@ fn Sha2_64(comptime params: Sha2Params64) -> type { return struct { |
| 600 | };} | 621 | };} |
| 601 | | 622 | |
| 602 | test "sha384 single" { | 623 | test "sha384 single" { |
| | 624 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 625 | // https://github.com/zig-lang/zig/issues/537 |
| | 626 | return; |
| | 627 | } |
| | 628 | |
| 603 | const h1 = 0x38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b; | 629 | const h1 = 0x38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b; |
| 604 | debug.assert(h1 == Sha384.hash("")); | 630 | debug.assert(h1 == Sha384.hash("")); |
| 605 | | 631 | |
| ... | @@ -611,6 +637,11 @@ test "sha384 single" { | ... | @@ -611,6 +637,11 @@ test "sha384 single" { |
| 611 | } | 637 | } |
| 612 | | 638 | |
| 613 | test "sha384 streaming" { | 639 | test "sha384 streaming" { |
| | 640 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 641 | // https://github.com/zig-lang/zig/issues/537 |
| | 642 | return; |
| | 643 | } |
| | 644 | |
| 614 | var h = Sha384.init(); | 645 | var h = Sha384.init(); |
| 615 | | 646 | |
| 616 | const h1 = 0x38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b; | 647 | const h1 = 0x38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b; |
| ... | @@ -630,6 +661,11 @@ test "sha384 streaming" { | ... | @@ -630,6 +661,11 @@ test "sha384 streaming" { |
| 630 | } | 661 | } |
| 631 | | 662 | |
| 632 | test "sha512 single" { | 663 | test "sha512 single" { |
| | 664 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 665 | // https://github.com/zig-lang/zig/issues/537 |
| | 666 | return; |
| | 667 | } |
| | 668 | |
| 633 | const h1 = 0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e; | 669 | const h1 = 0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e; |
| 634 | debug.assert(h1 == Sha512.hash("")); | 670 | debug.assert(h1 == Sha512.hash("")); |
| 635 | | 671 | |
| ... | @@ -641,6 +677,11 @@ test "sha512 single" { | ... | @@ -641,6 +677,11 @@ test "sha512 single" { |
| 641 | } | 677 | } |
| 642 | | 678 | |
| 643 | test "sha512 streaming" { | 679 | test "sha512 streaming" { |
| | 680 | if (builtin.os == builtin.Os.windows and builtin.arch == builtin.Arch.i386) { |
| | 681 | // https://github.com/zig-lang/zig/issues/537 |
| | 682 | return; |
| | 683 | } |
| | 684 | |
| 644 | var h = Sha512.init(); | 685 | var h = Sha512.init(); |
| 645 | | 686 | |
| 646 | const h1 = 0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e; | 687 | const h1 = 0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e; |