| ... | @@ -73,11 +73,11 @@ fn salsaXor(tmp: *align(16) [16]u32, in: []align(16) const u32, out: []align(16) | ... | @@ -73,11 +73,11 @@ fn salsaXor(tmp: *align(16) [16]u32, in: []align(16) const u32, out: []align(16) |
| 73 | } | 73 | } |
| 74 | | 74 | |
| 75 | fn blockMix(tmp: *align(16) [16]u32, in: []align(16) const u32, out: []align(16) u32, r: u30) void { | 75 | fn blockMix(tmp: *align(16) [16]u32, in: []align(16) const u32, out: []align(16) u32, r: u30) void { |
| 76 | blockCopy(tmp, in[(2 * r - 1) * 16 ..], 1); | 76 | blockCopy(tmp, @alignCast(16, in[(2 * r - 1) * 16 ..]), 1); |
| 77 | var i: usize = 0; | 77 | var i: usize = 0; |
| 78 | while (i < 2 * r) : (i += 2) { | 78 | while (i < 2 * r) : (i += 2) { |
| 79 | salsaXor(tmp, in[i * 16 ..], out[i * 8 ..]); | 79 | salsaXor(tmp, @alignCast(16, in[i * 16 ..]), @alignCast(16, out[i * 8 ..])); |
| 80 | salsaXor(tmp, in[i * 16 + 16 ..], out[i * 8 + r * 16 ..]); | 80 | salsaXor(tmp, @alignCast(16, in[i * 16 + 16 ..]), @alignCast(16, out[i * 8 + r * 16 ..])); |
| 81 | } | 81 | } |
| 82 | } | 82 | } |
| 83 | | 83 | |
| ... | @@ -87,8 +87,8 @@ fn integerify(b: []align(16) const u32, r: u30) u64 { | ... | @@ -87,8 +87,8 @@ fn integerify(b: []align(16) const u32, r: u30) u64 { |
| 87 | } | 87 | } |
| 88 | | 88 | |
| 89 | fn smix(b: []align(16) u8, r: u30, n: usize, v: []align(16) u32, xy: []align(16) u32) void { | 89 | fn smix(b: []align(16) u8, r: u30, n: usize, v: []align(16) u32, xy: []align(16) u32) void { |
| 90 | var x = xy[0 .. 32 * r]; | 90 | var x = @alignCast(16, xy[0 .. 32 * r]); |
| 91 | var y = xy[32 * r ..]; | 91 | var y = @alignCast(16, xy[32 * r ..]); |
| 92 | | 92 | |
| 93 | for (x) |*v1, j| { | 93 | for (x) |*v1, j| { |
| 94 | v1.* = mem.readIntSliceLittle(u32, b[4 * j ..]); | 94 | v1.* = mem.readIntSliceLittle(u32, b[4 * j ..]); |
| ... | @@ -97,21 +97,21 @@ fn smix(b: []align(16) u8, r: u30, n: usize, v: []align(16) u32, xy: []align(16) | ... | @@ -97,21 +97,21 @@ fn smix(b: []align(16) u8, r: u30, n: usize, v: []align(16) u32, xy: []align(16) |
| 97 | var tmp: [16]u32 align(16) = undefined; | 97 | var tmp: [16]u32 align(16) = undefined; |
| 98 | var i: usize = 0; | 98 | var i: usize = 0; |
| 99 | while (i < n) : (i += 2) { | 99 | while (i < n) : (i += 2) { |
| 100 | blockCopy(v[i * (32 * r) ..], x, 2 * r); | 100 | blockCopy(@alignCast(16, v[i * (32 * r) ..]), x, 2 * r); |
| 101 | blockMix(&tmp, x, y, r); | 101 | blockMix(&tmp, x, y, r); |
| 102 | | 102 | |
| 103 | blockCopy(v[(i + 1) * (32 * r) ..], y, 2 * r); | 103 | blockCopy(@alignCast(16, v[(i + 1) * (32 * r) ..]), y, 2 * r); |
| 104 | blockMix(&tmp, y, x, r); | 104 | blockMix(&tmp, y, x, r); |
| 105 | } | 105 | } |
| 106 | | 106 | |
| 107 | i = 0; | 107 | i = 0; |
| 108 | while (i < n) : (i += 2) { | 108 | while (i < n) : (i += 2) { |
| 109 | var j = @intCast(usize, integerify(x, r) & (n - 1)); | 109 | var j = @intCast(usize, integerify(x, r) & (n - 1)); |
| 110 | blockXor(x, v[j * (32 * r) ..], 2 * r); | 110 | blockXor(x, @alignCast(16, v[j * (32 * r) ..]), 2 * r); |
| 111 | blockMix(&tmp, x, y, r); | 111 | blockMix(&tmp, x, y, r); |
| 112 | | 112 | |
| 113 | j = @intCast(usize, integerify(y, r) & (n - 1)); | 113 | j = @intCast(usize, integerify(y, r) & (n - 1)); |
| 114 | blockXor(y, v[j * (32 * r) ..], 2 * r); | 114 | blockXor(y, @alignCast(16, v[j * (32 * r) ..]), 2 * r); |
| 115 | blockMix(&tmp, y, x, r); | 115 | blockMix(&tmp, y, x, r); |
| 116 | } | 116 | } |
| 117 | | 117 | |
| ... | @@ -201,7 +201,7 @@ pub fn kdf( | ... | @@ -201,7 +201,7 @@ pub fn kdf( |
| 201 | try pwhash.pbkdf2(dk, password, salt, 1, HmacSha256); | 201 | try pwhash.pbkdf2(dk, password, salt, 1, HmacSha256); |
| 202 | var i: u32 = 0; | 202 | var i: u32 = 0; |
| 203 | while (i < params.p) : (i += 1) { | 203 | while (i < params.p) : (i += 1) { |
| 204 | smix(dk[i * 128 * params.r ..], params.r, n, v, xy); | 204 | smix(@alignCast(16, dk[i * 128 * params.r ..]), params.r, n, v, xy); |
| 205 | } | 205 | } |
| 206 | try pwhash.pbkdf2(derived_key, password, dk, 1, HmacSha256); | 206 | try pwhash.pbkdf2(derived_key, password, dk, 1, HmacSha256); |
| 207 | } | 207 | } |