| ... | @@ -122,14 +122,14 @@ pub const Block = struct { | ... | @@ -122,14 +122,14 @@ pub const Block = struct { |
| 122 | | 122 | |
| 123 | // Last round uses s-box directly and XORs to produce output. | 123 | // Last round uses s-box directly and XORs to produce output. |
| 124 | var x: [4]u8 = undefined; | 124 | var x: [4]u8 = undefined; |
| 125 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s3 >> 24)), @as(u8, @truncate(s2 >> 16)), @as(u8, @truncate(s1 >> 8)), @as(u8, @truncate(s0))); | 125 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s0)), @as(u8, @truncate(s1 >> 8)), @as(u8, @truncate(s2 >> 16)), @as(u8, @truncate(s3 >> 24))); |
| 126 | var t0 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 126 | var t0 = mem.readIntLittle(u32, &x); |
| 127 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s0 >> 24)), @as(u8, @truncate(s3 >> 16)), @as(u8, @truncate(s2 >> 8)), @as(u8, @truncate(s1))); | 127 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s1)), @as(u8, @truncate(s2 >> 8)), @as(u8, @truncate(s3 >> 16)), @as(u8, @truncate(s0 >> 24))); |
| 128 | var t1 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 128 | var t1 = mem.readIntLittle(u32, &x); |
| 129 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s1 >> 24)), @as(u8, @truncate(s0 >> 16)), @as(u8, @truncate(s3 >> 8)), @as(u8, @truncate(s2))); | 129 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s2)), @as(u8, @truncate(s3 >> 8)), @as(u8, @truncate(s0 >> 16)), @as(u8, @truncate(s1 >> 24))); |
| 130 | var t2 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 130 | var t2 = mem.readIntLittle(u32, &x); |
| 131 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s2 >> 24)), @as(u8, @truncate(s1 >> 16)), @as(u8, @truncate(s0 >> 8)), @as(u8, @truncate(s3))); | 131 | x = sbox_lookup(&sbox_encrypt, @as(u8, @truncate(s3)), @as(u8, @truncate(s0 >> 8)), @as(u8, @truncate(s1 >> 16)), @as(u8, @truncate(s2 >> 24))); |
| 132 | var t3 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 132 | var t3 = mem.readIntLittle(u32, &x); |
| 133 | | 133 | |
| 134 | t0 ^= round_key.repr[0]; | 134 | t0 ^= round_key.repr[0]; |
| 135 | t1 ^= round_key.repr[1]; | 135 | t1 ^= round_key.repr[1]; |
| ... | @@ -218,14 +218,14 @@ pub const Block = struct { | ... | @@ -218,14 +218,14 @@ pub const Block = struct { |
| 218 | | 218 | |
| 219 | // Last round uses s-box directly and XORs to produce output. | 219 | // Last round uses s-box directly and XORs to produce output. |
| 220 | var x: [4]u8 = undefined; | 220 | var x: [4]u8 = undefined; |
| 221 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s1 >> 24)), @as(u8, @truncate(s2 >> 16)), @as(u8, @truncate(s3 >> 8)), @as(u8, @truncate(s0))); | 221 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s0)), @as(u8, @truncate(s3 >> 8)), @as(u8, @truncate(s2 >> 16)), @as(u8, @truncate(s1 >> 24))); |
| 222 | var t0 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 222 | var t0 = mem.readIntLittle(u32, &x); |
| 223 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s2 >> 24)), @as(u8, @truncate(s3 >> 16)), @as(u8, @truncate(s0 >> 8)), @as(u8, @truncate(s1))); | 223 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s1)), @as(u8, @truncate(s0 >> 8)), @as(u8, @truncate(s3 >> 16)), @as(u8, @truncate(s2 >> 24))); |
| 224 | var t1 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 224 | var t1 = mem.readIntLittle(u32, &x); |
| 225 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s3 >> 24)), @as(u8, @truncate(s0 >> 16)), @as(u8, @truncate(s1 >> 8)), @as(u8, @truncate(s2))); | 225 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s2)), @as(u8, @truncate(s1 >> 8)), @as(u8, @truncate(s0 >> 16)), @as(u8, @truncate(s3 >> 24))); |
| 226 | var t2 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 226 | var t2 = mem.readIntLittle(u32, &x); |
| 227 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s0 >> 24)), @as(u8, @truncate(s1 >> 16)), @as(u8, @truncate(s2 >> 8)), @as(u8, @truncate(s3))); | 227 | x = sbox_lookup(&sbox_decrypt, @as(u8, @truncate(s3)), @as(u8, @truncate(s2 >> 8)), @as(u8, @truncate(s1 >> 16)), @as(u8, @truncate(s0 >> 24))); |
| 228 | var t3 = @as(u32, x[0]) << 24 | @as(u32, x[1]) << 16 | @as(u32, x[2]) << 8 | @as(u32, x[3]); | 228 | var t3 = mem.readIntLittle(u32, &x); |
| 229 | | 229 | |
| 230 | t0 ^= round_key.repr[0]; | 230 | t0 ^= round_key.repr[0]; |
| 231 | t1 ^= round_key.repr[1]; | 231 | t1 ^= round_key.repr[1]; |
| ... | @@ -349,7 +349,7 @@ fn KeySchedule(comptime Aes: type) type { | ... | @@ -349,7 +349,7 @@ fn KeySchedule(comptime Aes: type) type { |
| 349 | // Apply sbox_encrypt to each byte in w. | 349 | // Apply sbox_encrypt to each byte in w. |
| 350 | fn func(w: u32) u32 { | 350 | fn func(w: u32) u32 { |
| 351 | const x = sbox_lookup(&sbox_key_schedule, @as(u8, @truncate(w)), @as(u8, @truncate(w >> 8)), @as(u8, @truncate(w >> 16)), @as(u8, @truncate(w >> 24))); | 351 | const x = sbox_lookup(&sbox_key_schedule, @as(u8, @truncate(w)), @as(u8, @truncate(w >> 8)), @as(u8, @truncate(w >> 16)), @as(u8, @truncate(w >> 24))); |
| 352 | return @as(u32, x[3]) << 24 | @as(u32, x[2]) << 16 | @as(u32, x[1]) << 8 | @as(u32, x[0]); | 352 | return mem.readIntLittle(u32, &x); |
| 353 | } | 353 | } |
| 354 | }.func; | 354 | }.func; |
| 355 | | 355 | |