authorgravatar for marc@tiehu.isMarc Tiehuis <marc@tiehu.is> 2018-01-14 09:58:30+13:00
committergravatar for marc@tiehu.isMarc Tiehuis <marc@tiehu.is> 2018-01-14 09:58:30+13:00
log9be9f1ad20ca6c7b2e1c09423c753b1a9e13049d
tree8ad097a94c0b886af59d9cb132a1d1bc512b5947
parent1f3ed5cf27e2d6d6fdb03e67b0327ae34b9fdf4c

Disable win32 tests for Sha2 + correct lengths


2 files changed, 44 insertions(+), 2 deletions(-)

std/crypto/md5.zig+2-1
...@@ -69,7 +69,8 @@ pub const Md5 = struct {...@@ -69,7 +69,8 @@ pub const Md5 = struct {
69 mem.copy(u8, d.buf[d.buf_len..], b[off..]);69 mem.copy(u8, d.buf[d.buf_len..], b[off..]);
70 d.buf_len += u8(b[off..].len);70 d.buf_len += u8(b[off..].len);
7171
72 d.total_len += b.len;72 // Md5 uses the bottom 64-bits for length padding
73 d.total_len +%= b.len;
73 }74 }
7475
75 pub fn final(d: &Self) -> u128 {76 pub fn final(d: &Self) -> u128 {
std/crypto/sha2.zig+42-1
...@@ -2,6 +2,7 @@ const mem = @import("../mem.zig");...@@ -2,6 +2,7 @@ const mem = @import("../mem.zig");
2const math = @import("../math/index.zig");2const math = @import("../math/index.zig");
3const endian = @import("../endian.zig");3const endian = @import("../endian.zig");
4const debug = @import("../debug/index.zig");4const debug = @import("../debug/index.zig");
5const builtin = @import("builtin");
56
6/////////////////////7/////////////////////
7// Sha224 + Sha2568// 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};}
270271
271test "sha224 single" {272test "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}
276282
277test "sha224 streaming" {283test "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();
279290
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}
292303
293test "sha256 single" {304test "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}
298314
299test "sha256 streaming" {315test "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();
301322
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 Cache394 // 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,
377398
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};}
601622
602test "sha384 single" {623test "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(""));
605631
...@@ -611,6 +637,11 @@ test "sha384 single" {...@@ -611,6 +637,11 @@ test "sha384 single" {
611}637}
612638
613test "sha384 streaming" {639test "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();
615646
616 const h1 = 0x38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b;647 const h1 = 0x38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b;
...@@ -630,6 +661,11 @@ test "sha384 streaming" {...@@ -630,6 +661,11 @@ test "sha384 streaming" {
630}661}
631662
632test "sha512 single" {663test "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(""));
635671
...@@ -641,6 +677,11 @@ test "sha512 single" {...@@ -641,6 +677,11 @@ test "sha512 single" {
641}677}
642678
643test "sha512 streaming" {679test "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();
645686
646 const h1 = 0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e;687 const h1 = 0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e;