| ... | @@ -33,7 +33,7 @@ pub const State = struct { | ... | @@ -33,7 +33,7 @@ pub const State = struct { |
| 33 | var data: [BLOCKBYTES / 4]u32 = undefined; | 33 | var data: [BLOCKBYTES / 4]u32 = undefined; |
| 34 | var i: usize = 0; | 34 | var i: usize = 0; |
| 35 | while (i < State.BLOCKBYTES) : (i += 4) { | 35 | while (i < State.BLOCKBYTES) : (i += 4) { |
| 36 | data[i / 4] = mem.readIntLittle(u32, initial_state[i..][0..4]); | 36 | data[i / 4] = mem.readIntNative(u32, initial_state[i..][0..4]); |
| 37 | } | 37 | } |
| 38 | return Self{ .data = data }; | 38 | return Self{ .data = data }; |
| 39 | } | 39 | } |
| ... | @@ -184,27 +184,31 @@ pub const State = struct { | ... | @@ -184,27 +184,31 @@ pub const State = struct { |
| 184 | | 184 | |
| 185 | test "permute" { | 185 | test "permute" { |
| 186 | // test vector from gimli-20170627 | 186 | // test vector from gimli-20170627 |
| 187 | var state = State{ | 187 | const tv_input = [3][4]u32{ |
| 188 | .data = blk: { | 188 | [4]u32{ 0x00000000, 0x9e3779ba, 0x3c6ef37a, 0xdaa66d46 }, |
| 189 | var input: [12]u32 = undefined; | 189 | [4]u32{ 0x78dde724, 0x1715611a, 0xb54cdb2e, 0x53845566 }, |
| 190 | var i = @as(u32, 0); | 190 | [4]u32{ 0xf1bbcfc8, 0x8ff34a5a, 0x2e2ac522, 0xcc624026 }, |
| 191 | while (i < 12) : (i += 1) { | | |
| 192 | input[i] = i * i * i + i *% 0x9e3779b9; | | |
| 193 | } | | |
| 194 | testing.expectEqualSlices(u32, &input, &[_]u32{ | | |
| 195 | 0x00000000, 0x9e3779ba, 0x3c6ef37a, 0xdaa66d46, | | |
| 196 | 0x78dde724, 0x1715611a, 0xb54cdb2e, 0x53845566, | | |
| 197 | 0xf1bbcfc8, 0x8ff34a5a, 0x2e2ac522, 0xcc624026, | | |
| 198 | }); | | |
| 199 | break :blk input; | | |
| 200 | }, | | |
| 201 | }; | 191 | }; |
| | 192 | var input: [48]u8 = undefined; |
| | 193 | var i: usize = 0; |
| | 194 | while (i < 12) : (i += 1) { |
| | 195 | mem.writeIntLittle(u32, input[i * 4 ..][0..4], tv_input[i / 4][i % 4]); |
| | 196 | } |
| | 197 | |
| | 198 | var state = State.init(input); |
| 202 | state.permute(); | 199 | state.permute(); |
| 203 | testing.expectEqualSlices(u32, &state.data, &[_]u32{ | 200 | |
| 204 | 0xba11c85a, 0x91bad119, 0x380ce880, 0xd24c2c68, | 201 | const tv_output = [3][4]u32{ |
| 205 | 0x3eceffea, 0x277a921c, 0x4f73a0bd, 0xda5a9cd8, | 202 | [4]u32{ 0xba11c85a, 0x91bad119, 0x380ce880, 0xd24c2c68 }, |
| 206 | 0x84b673f0, 0x34e52ff7, 0x9e2bef49, 0xf41bb8d6, | 203 | [4]u32{ 0x3eceffea, 0x277a921c, 0x4f73a0bd, 0xda5a9cd8 }, |
| 207 | }); | 204 | [4]u32{ 0x84b673f0, 0x34e52ff7, 0x9e2bef49, 0xf41bb8d6 }, |
| | 205 | }; |
| | 206 | var expected_output: [48]u8 = undefined; |
| | 207 | i = 0; |
| | 208 | while (i < 12) : (i += 1) { |
| | 209 | mem.writeIntLittle(u32, expected_output[i * 4 ..][0..4], tv_output[i / 4][i % 4]); |
| | 210 | } |
| | 211 | testing.expectEqualSlices(u8, state.toSliceConst(), expected_output[0..]); |
| 208 | } | 212 | } |
| 209 | | 213 | |
| 210 | pub const Hash = struct { | 214 | pub const Hash = struct { |
| ... | @@ -269,9 +273,6 @@ pub fn hash(out: *[Hash.digest_length]u8, in: []const u8, options: Hash.Options) | ... | @@ -269,9 +273,6 @@ pub fn hash(out: *[Hash.digest_length]u8, in: []const u8, options: Hash.Options) |
| 269 | } | 273 | } |
| 270 | | 274 | |
| 271 | test "hash" { | 275 | test "hash" { |
| 272 | // https://github.com/ziglang/zig/issues/5127 | | |
| 273 | if (std.Target.current.cpu.arch == .mips) return error.SkipZigTest; | | |
| 274 | | | |
| 275 | // a test vector (30) from NIST KAT submission. | 276 | // a test vector (30) from NIST KAT submission. |
| 276 | var msg: [58 / 2]u8 = undefined; | 277 | var msg: [58 / 2]u8 = undefined; |
| 277 | try std.fmt.hexToBytes(&msg, "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C"); | 278 | try std.fmt.hexToBytes(&msg, "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C"); |
| ... | @@ -423,9 +424,6 @@ pub const Aead = struct { | ... | @@ -423,9 +424,6 @@ pub const Aead = struct { |
| 423 | }; | 424 | }; |
| 424 | | 425 | |
| 425 | test "cipher" { | 426 | test "cipher" { |
| 426 | // https://github.com/ziglang/zig/issues/5127 | | |
| 427 | if (std.Target.current.cpu.arch == .mips) return error.SkipZigTest; | | |
| 428 | | | |
| 429 | var key: [32]u8 = undefined; | 427 | var key: [32]u8 = undefined; |
| 430 | try std.fmt.hexToBytes(&key, "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"); | 428 | try std.fmt.hexToBytes(&key, "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"); |
| 431 | var nonce: [16]u8 = undefined; | 429 | var nonce: [16]u8 = undefined; |