aegis-aead 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -22
- package/dist/aegis128l.d.ts +33 -33
- package/dist/aegis128l.js +225 -235
- package/dist/aegis128x.d.ts +35 -35
- package/dist/aegis128x.js +348 -282
- package/dist/aegis256.d.ts +34 -51
- package/dist/aegis256.js +215 -206
- package/dist/aegis256x.d.ts +32 -33
- package/dist/aegis256x.js +333 -265
- package/dist/aes-bs.d.ts +46 -23
- package/dist/aes-bs.js +2273 -331
- package/dist/index.d.ts +4 -7
- package/dist/index.js +4 -7
- package/dist/random.d.ts +0 -1
- package/dist/random.js +0 -1
- package/dist/utils.d.ts +14 -0
- package/dist/utils.js +31 -0
- package/package.json +6 -6
- package/dist/aegis128l-bs.d.ts +0 -194
- package/dist/aegis128l-bs.d.ts.map +0 -1
- package/dist/aegis128l-bs.js +0 -549
- package/dist/aegis128l-bs.js.map +0 -1
- package/dist/aegis128l.d.ts.map +0 -1
- package/dist/aegis128l.js.map +0 -1
- package/dist/aegis128x.d.ts.map +0 -1
- package/dist/aegis128x.js.map +0 -1
- package/dist/aegis256-bs.d.ts +0 -183
- package/dist/aegis256-bs.d.ts.map +0 -1
- package/dist/aegis256-bs.js +0 -477
- package/dist/aegis256-bs.js.map +0 -1
- package/dist/aegis256.d.ts.map +0 -1
- package/dist/aegis256.js.map +0 -1
- package/dist/aegis256x.d.ts.map +0 -1
- package/dist/aegis256x.js.map +0 -1
- package/dist/aes-bs.d.ts.map +0 -1
- package/dist/aes-bs.js.map +0 -1
- package/dist/aes.d.ts +0 -81
- package/dist/aes.d.ts.map +0 -1
- package/dist/aes.js +0 -232
- package/dist/aes.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/random.d.ts.map +0 -1
- package/dist/random.js.map +0 -1
- package/src/aegis128l-bs.ts +0 -709
- package/src/aegis128l.ts +0 -653
- package/src/aegis128x.ts +0 -932
- package/src/aegis256-bs.ts +0 -625
- package/src/aegis256.ts +0 -597
- package/src/aegis256x.ts +0 -893
- package/src/aes-bs.ts +0 -459
- package/src/aes.ts +0 -271
- package/src/index.ts +0 -126
- package/src/random.ts +0 -41
- package/src/typed-array.d.ts +0 -18
package/dist/aes-bs.js
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
* Bitsliced AES implementation using 32-bit integers.
|
|
3
3
|
* Processes 8 AES blocks simultaneously for constant-time operation.
|
|
4
4
|
* Based on the barrel-shiftrows representation by Adomnicai and Peyrin.
|
|
5
|
+
*
|
|
6
|
+
* The packed layout matches the reference C implementation: the state words
|
|
7
|
+
* are permuted so that bit-plane k of byte group g lives in word 4k + g.
|
|
8
|
+
* The four group lanes of each bit-plane are therefore adjacent, ShiftRows
|
|
9
|
+
* and MixColumns work on isomorphic quads, and an AES round needs no
|
|
10
|
+
* per-round transposes.
|
|
11
|
+
*
|
|
12
|
+
* The hot-path functions (AEGIS rounds, constant-input packing, keystream
|
|
13
|
+
* extraction) are fully unrolled over local variables and generated by
|
|
14
|
+
* scripts/gen-aes-bs.ts.
|
|
5
15
|
*/
|
|
6
16
|
/**
|
|
7
17
|
* Creates a new bitsliced state for 8 AES blocks.
|
|
@@ -20,380 +30,2312 @@ export function createAesBlock() {
|
|
|
20
30
|
* Swaps bits at positions n between a and b using a mask.
|
|
21
31
|
*/
|
|
22
32
|
function swapmove(st, aIdx, bIdx, mask, n) {
|
|
23
|
-
const tmp = (
|
|
24
|
-
st[bIdx] =
|
|
25
|
-
st[aIdx] =
|
|
33
|
+
const tmp = (st[bIdx] ^ (st[aIdx] >>> n)) & mask;
|
|
34
|
+
st[bIdx] = st[bIdx] ^ tmp;
|
|
35
|
+
st[aIdx] = st[aIdx] ^ (tmp << n);
|
|
26
36
|
}
|
|
27
37
|
/**
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return ((x << b) | (x >>> (32 - b))) >>> 0;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* S-box implementation using bitsliced logic gates.
|
|
35
|
-
* Maximov & Ekdahl circuit.
|
|
38
|
+
* Computes the index of a block word in the unpacked state array.
|
|
39
|
+
* @param block - Block index (0-7)
|
|
40
|
+
* @param word - Word index (0-3)
|
|
36
41
|
*/
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
let u1 = st[offset + 1];
|
|
40
|
-
let u2 = st[offset + 2];
|
|
41
|
-
let u3 = st[offset + 3];
|
|
42
|
-
let u4 = st[offset + 4];
|
|
43
|
-
let u5 = st[offset + 5];
|
|
44
|
-
let u6 = st[offset + 6];
|
|
45
|
-
let u7 = st[offset + 7];
|
|
46
|
-
const z24 = (u3 ^ u4) >>> 0;
|
|
47
|
-
const q17 = (u1 ^ u7) >>> 0;
|
|
48
|
-
const q16 = (u5 ^ q17) >>> 0;
|
|
49
|
-
const q0 = (z24 ^ q16) >>> 0;
|
|
50
|
-
const q7 = (z24 ^ u1 ^ u6) >>> 0;
|
|
51
|
-
const q2 = (u2 ^ q0) >>> 0;
|
|
52
|
-
const q1 = (q7 ^ q2) >>> 0;
|
|
53
|
-
const q3 = (u0 ^ q7) >>> 0;
|
|
54
|
-
const q4 = (u0 ^ q2) >>> 0;
|
|
55
|
-
const q5 = (u1 ^ q4) >>> 0;
|
|
56
|
-
const q6 = (u2 ^ u3) >>> 0;
|
|
57
|
-
const q10 = (q6 ^ q7) >>> 0;
|
|
58
|
-
const q8 = (u0 ^ q10) >>> 0;
|
|
59
|
-
const q9 = (q8 ^ q2) >>> 0;
|
|
60
|
-
const q12 = (z24 ^ q17) >>> 0;
|
|
61
|
-
const q15 = (u7 ^ q4) >>> 0;
|
|
62
|
-
const q13 = (z24 ^ q15) >>> 0;
|
|
63
|
-
const q14 = (q15 ^ q0) >>> 0;
|
|
64
|
-
const q11 = u5;
|
|
65
|
-
// NAND(x, y) = ~(x & y)
|
|
66
|
-
// NOR(x, y) = ~(x | y)
|
|
67
|
-
// XNOR(x, y) = ~(x ^ y)
|
|
68
|
-
// MUX(s, x, y) = (x & s) | (y & ~s)
|
|
69
|
-
const nand = (x, y) => ~(x & y) >>> 0;
|
|
70
|
-
const nor = (x, y) => ~(x | y) >>> 0;
|
|
71
|
-
const xnor = (x, y) => ~(x ^ y) >>> 0;
|
|
72
|
-
const mux = (s, x, y) => (((x & s) >>> 0) | ((y & ~s) >>> 0)) >>> 0;
|
|
73
|
-
const t20 = nand(q6, q12);
|
|
74
|
-
const t21 = nand(q3, q14);
|
|
75
|
-
const t22 = nand(q1, q16);
|
|
76
|
-
const x0 = (nor(q3, q14) ^ nand(q0, q7) ^ (t20 ^ t22)) >>> 0;
|
|
77
|
-
const x1 = (nor(q4, q13) ^ nand(q10, q11) ^ (t21 ^ t20)) >>> 0;
|
|
78
|
-
const x2 = (nor(q2, q17) ^ nand(q5, q9) ^ (t21 ^ t22)) >>> 0;
|
|
79
|
-
const x3 = (nor(q8, q15) ^ nand(q2, q17) ^ (t21 ^ nand(q4, q13))) >>> 0;
|
|
80
|
-
const t2 = xnor(nand(x0, x2), nor(x1, x3));
|
|
81
|
-
const y0 = mux(x2, t2, x3);
|
|
82
|
-
const y2 = mux(x0, t2, x1);
|
|
83
|
-
const y1 = mux(t2, x3, mux(x1, x2, 0xffffffff));
|
|
84
|
-
const y3 = mux(t2, x1, mux(x3, x0, 0xffffffff));
|
|
85
|
-
const y02 = (y2 ^ y0) >>> 0;
|
|
86
|
-
const y13 = (y3 ^ y1) >>> 0;
|
|
87
|
-
const y23 = (y3 ^ y2) >>> 0;
|
|
88
|
-
const y01 = (y1 ^ y0) >>> 0;
|
|
89
|
-
const y00 = (y02 ^ y13) >>> 0;
|
|
90
|
-
const n0 = nand(y01, q11);
|
|
91
|
-
const n1 = nand(y0, q12);
|
|
92
|
-
const n2 = nand(y1, q0);
|
|
93
|
-
const n3 = nand(y23, q17);
|
|
94
|
-
const n4 = nand(y2, q5);
|
|
95
|
-
const n5 = nand(y3, q15);
|
|
96
|
-
const n6 = nand(y13, q14);
|
|
97
|
-
const n7 = nand(y00, q16);
|
|
98
|
-
const n8 = nand(y02, q13);
|
|
99
|
-
const n9 = nand(y01, q7);
|
|
100
|
-
const n10 = nand(y0, q10);
|
|
101
|
-
const n11 = nand(y1, q6);
|
|
102
|
-
const n12 = nand(y23, q2);
|
|
103
|
-
const n13 = nand(y2, q9);
|
|
104
|
-
const n14 = nand(y3, q8);
|
|
105
|
-
const n15 = nand(y13, q3);
|
|
106
|
-
const n16 = nand(y00, q1);
|
|
107
|
-
const n17 = nand(y02, q4);
|
|
108
|
-
const h1 = (n4 ^ n1 ^ n5) >>> 0;
|
|
109
|
-
u2 = xnor(n2, h1);
|
|
110
|
-
const h2 = (n9 ^ n15) >>> 0;
|
|
111
|
-
u6 = xnor(h2, (n11 ^ n17) >>> 0);
|
|
112
|
-
const h4 = (n11 ^ n14) >>> 0;
|
|
113
|
-
const h5 = (n9 ^ n12) >>> 0;
|
|
114
|
-
u5 = (h4 ^ h5) >>> 0;
|
|
115
|
-
const h7 = (u2 ^ u6) >>> 0;
|
|
116
|
-
const h8 = (n10 ^ h7) >>> 0;
|
|
117
|
-
u7 = xnor((n16 ^ h2) >>> 0, h8);
|
|
118
|
-
const h9 = (n8 ^ h1) >>> 0;
|
|
119
|
-
const h10 = (n13 ^ h8) >>> 0;
|
|
120
|
-
u3 = (h5 ^ h10) >>> 0;
|
|
121
|
-
const h13 = (h4 ^ n7 ^ h9 ^ h10) >>> 0;
|
|
122
|
-
u4 = (n1 ^ h13) >>> 0;
|
|
123
|
-
const h14 = xnor(n0, u7);
|
|
124
|
-
u1 = xnor(n6, (h7 ^ h9 ^ h14) >>> 0);
|
|
125
|
-
u0 = (h13 ^ n3 ^ n4 ^ h14) >>> 0;
|
|
126
|
-
st[offset] = u0;
|
|
127
|
-
st[offset + 1] = u1;
|
|
128
|
-
st[offset + 2] = u2;
|
|
129
|
-
st[offset + 3] = u3;
|
|
130
|
-
st[offset + 4] = u4;
|
|
131
|
-
st[offset + 5] = u5;
|
|
132
|
-
st[offset + 6] = u6;
|
|
133
|
-
st[offset + 7] = u7;
|
|
42
|
+
export function wordIdx(block, word) {
|
|
43
|
+
return block * 4 + word;
|
|
134
44
|
}
|
|
135
45
|
/**
|
|
136
|
-
*
|
|
46
|
+
* Pack 8 AES blocks into bitsliced representation.
|
|
137
47
|
*/
|
|
138
|
-
function
|
|
48
|
+
export function pack(st) {
|
|
49
|
+
for (let i = 0; i < 32; i += 4) {
|
|
50
|
+
swapmove(st, i, i + 1, 0x00ff00ff, 8);
|
|
51
|
+
swapmove(st, i + 2, i + 3, 0x00ff00ff, 8);
|
|
52
|
+
swapmove(st, i, i + 2, 0x0000ffff, 16);
|
|
53
|
+
swapmove(st, i + 1, i + 3, 0x0000ffff, 16);
|
|
54
|
+
}
|
|
139
55
|
for (let i = 0; i < 4; i++) {
|
|
140
|
-
|
|
56
|
+
swapmove(st, i + 4, i, 0x55555555, 1);
|
|
57
|
+
swapmove(st, i + 12, i + 8, 0x55555555, 1);
|
|
58
|
+
swapmove(st, i + 20, i + 16, 0x55555555, 1);
|
|
59
|
+
swapmove(st, i + 28, i + 24, 0x55555555, 1);
|
|
60
|
+
swapmove(st, i + 8, i, 0x33333333, 2);
|
|
61
|
+
swapmove(st, i + 12, i + 4, 0x33333333, 2);
|
|
62
|
+
swapmove(st, i + 24, i + 16, 0x33333333, 2);
|
|
63
|
+
swapmove(st, i + 28, i + 20, 0x33333333, 2);
|
|
64
|
+
swapmove(st, i + 16, i, 0x0f0f0f0f, 4);
|
|
65
|
+
swapmove(st, i + 20, i + 4, 0x0f0f0f0f, 4);
|
|
66
|
+
swapmove(st, i + 24, i + 8, 0x0f0f0f0f, 4);
|
|
67
|
+
swapmove(st, i + 28, i + 12, 0x0f0f0f0f, 4);
|
|
141
68
|
}
|
|
142
69
|
}
|
|
143
70
|
/**
|
|
144
|
-
*
|
|
71
|
+
* Unpack bitsliced representation to 8 AES blocks.
|
|
145
72
|
*/
|
|
146
|
-
function
|
|
147
|
-
for (let i =
|
|
148
|
-
st
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
st
|
|
73
|
+
export function unpack(st) {
|
|
74
|
+
for (let i = 0; i < 4; i++) {
|
|
75
|
+
swapmove(st, i + 4, i, 0x55555555, 1);
|
|
76
|
+
swapmove(st, i + 12, i + 8, 0x55555555, 1);
|
|
77
|
+
swapmove(st, i + 20, i + 16, 0x55555555, 1);
|
|
78
|
+
swapmove(st, i + 28, i + 24, 0x55555555, 1);
|
|
79
|
+
swapmove(st, i + 8, i, 0x33333333, 2);
|
|
80
|
+
swapmove(st, i + 12, i + 4, 0x33333333, 2);
|
|
81
|
+
swapmove(st, i + 24, i + 16, 0x33333333, 2);
|
|
82
|
+
swapmove(st, i + 28, i + 20, 0x33333333, 2);
|
|
83
|
+
swapmove(st, i + 16, i, 0x0f0f0f0f, 4);
|
|
84
|
+
swapmove(st, i + 20, i + 4, 0x0f0f0f0f, 4);
|
|
85
|
+
swapmove(st, i + 24, i + 8, 0x0f0f0f0f, 4);
|
|
86
|
+
swapmove(st, i + 28, i + 12, 0x0f0f0f0f, 4);
|
|
152
87
|
}
|
|
153
|
-
for (let i =
|
|
154
|
-
st
|
|
88
|
+
for (let i = 0; i < 32; i += 4) {
|
|
89
|
+
swapmove(st, i, i + 2, 0x0000ffff, 16);
|
|
90
|
+
swapmove(st, i + 1, i + 3, 0x0000ffff, 16);
|
|
91
|
+
swapmove(st, i, i + 1, 0x00ff00ff, 8);
|
|
92
|
+
swapmove(st, i + 2, i + 3, 0x00ff00ff, 8);
|
|
155
93
|
}
|
|
156
94
|
}
|
|
157
95
|
/**
|
|
158
|
-
*
|
|
159
|
-
*/
|
|
160
|
-
function mixcolumns(st) {
|
|
161
|
-
const t2_0 = (st[0] ^ st[8]) >>> 0;
|
|
162
|
-
const t2_1 = (st[8] ^ st[16]) >>> 0;
|
|
163
|
-
const t2_2 = (st[16] ^ st[24]) >>> 0;
|
|
164
|
-
const t2_3 = (st[24] ^ st[0]) >>> 0;
|
|
165
|
-
let t0_0 = (st[7] ^ st[15]) >>> 0;
|
|
166
|
-
let t0_1 = (st[15] ^ st[23]) >>> 0;
|
|
167
|
-
let t0_2 = (st[23] ^ st[31]) >>> 0;
|
|
168
|
-
let t0_3 = (st[31] ^ st[7]) >>> 0;
|
|
169
|
-
let t = st[7];
|
|
170
|
-
st[7] = (t2_0 ^ t0_2 ^ st[15]) >>> 0;
|
|
171
|
-
st[15] = (t2_1 ^ t0_2 ^ t) >>> 0;
|
|
172
|
-
t = st[23];
|
|
173
|
-
st[23] = (t2_2 ^ t0_0 ^ st[31]) >>> 0;
|
|
174
|
-
st[31] = (t2_3 ^ t0_0 ^ t) >>> 0;
|
|
175
|
-
let t1_0 = (st[6] ^ st[14]) >>> 0;
|
|
176
|
-
let t1_1 = (st[14] ^ st[22]) >>> 0;
|
|
177
|
-
let t1_2 = (st[22] ^ st[30]) >>> 0;
|
|
178
|
-
let t1_3 = (st[30] ^ st[6]) >>> 0;
|
|
179
|
-
t = st[6];
|
|
180
|
-
let t_bis = st[14];
|
|
181
|
-
st[6] = (t0_0 ^ t2_0 ^ st[14] ^ t1_2) >>> 0;
|
|
182
|
-
st[14] = (t0_1 ^ t2_1 ^ t1_2 ^ t) >>> 0;
|
|
183
|
-
t = st[22];
|
|
184
|
-
st[22] = (t0_2 ^ t2_2 ^ t1_3 ^ t_bis) >>> 0;
|
|
185
|
-
st[30] = (t0_3 ^ t2_3 ^ t1_0 ^ t) >>> 0;
|
|
186
|
-
t0_0 = (st[5] ^ st[13]) >>> 0;
|
|
187
|
-
t0_1 = (st[13] ^ st[21]) >>> 0;
|
|
188
|
-
t0_2 = (st[21] ^ st[29]) >>> 0;
|
|
189
|
-
t0_3 = (st[29] ^ st[5]) >>> 0;
|
|
190
|
-
t = st[5];
|
|
191
|
-
t_bis = st[13];
|
|
192
|
-
st[5] = (t1_0 ^ t0_1 ^ st[29]) >>> 0;
|
|
193
|
-
st[13] = (t1_1 ^ t0_2 ^ t) >>> 0;
|
|
194
|
-
t = st[21];
|
|
195
|
-
st[21] = (t1_2 ^ t0_3 ^ t_bis) >>> 0;
|
|
196
|
-
st[29] = (t1_3 ^ t0_0 ^ t) >>> 0;
|
|
197
|
-
t1_0 = (st[4] ^ st[12]) >>> 0;
|
|
198
|
-
t1_1 = (st[12] ^ st[20]) >>> 0;
|
|
199
|
-
t1_2 = (st[20] ^ st[28]) >>> 0;
|
|
200
|
-
t1_3 = (st[28] ^ st[4]) >>> 0;
|
|
201
|
-
t = st[4];
|
|
202
|
-
t_bis = st[12];
|
|
203
|
-
st[4] = (t0_0 ^ t2_0 ^ t1_1 ^ st[28]) >>> 0;
|
|
204
|
-
st[12] = (t0_1 ^ t2_1 ^ t1_2 ^ t) >>> 0;
|
|
205
|
-
t = st[20];
|
|
206
|
-
st[20] = (t0_2 ^ t2_2 ^ t1_3 ^ t_bis) >>> 0;
|
|
207
|
-
st[28] = (t0_3 ^ t2_3 ^ t1_0 ^ t) >>> 0;
|
|
208
|
-
t0_0 = (st[3] ^ st[11]) >>> 0;
|
|
209
|
-
t0_1 = (st[11] ^ st[19]) >>> 0;
|
|
210
|
-
t0_2 = (st[19] ^ st[27]) >>> 0;
|
|
211
|
-
t0_3 = (st[27] ^ st[3]) >>> 0;
|
|
212
|
-
t = st[3];
|
|
213
|
-
t_bis = st[11];
|
|
214
|
-
st[3] = (t1_0 ^ t2_0 ^ t0_1 ^ st[27]) >>> 0;
|
|
215
|
-
st[11] = (t1_1 ^ t2_1 ^ t0_2 ^ t) >>> 0;
|
|
216
|
-
t = st[19];
|
|
217
|
-
st[19] = (t1_2 ^ t2_2 ^ t0_3 ^ t_bis) >>> 0;
|
|
218
|
-
st[27] = (t1_3 ^ t2_3 ^ t0_0 ^ t) >>> 0;
|
|
219
|
-
t1_0 = (st[2] ^ st[10]) >>> 0;
|
|
220
|
-
t1_1 = (st[10] ^ st[18]) >>> 0;
|
|
221
|
-
t1_2 = (st[18] ^ st[26]) >>> 0;
|
|
222
|
-
t1_3 = (st[26] ^ st[2]) >>> 0;
|
|
223
|
-
t = st[2];
|
|
224
|
-
t_bis = st[10];
|
|
225
|
-
st[2] = (t0_0 ^ t1_1 ^ st[26]) >>> 0;
|
|
226
|
-
st[10] = (t0_1 ^ t1_2 ^ t) >>> 0;
|
|
227
|
-
t = st[18];
|
|
228
|
-
st[18] = (t0_2 ^ t1_3 ^ t_bis) >>> 0;
|
|
229
|
-
st[26] = (t0_3 ^ t1_0 ^ t) >>> 0;
|
|
230
|
-
t0_0 = (st[1] ^ st[9]) >>> 0;
|
|
231
|
-
t0_1 = (st[9] ^ st[17]) >>> 0;
|
|
232
|
-
t0_2 = (st[17] ^ st[25]) >>> 0;
|
|
233
|
-
t0_3 = (st[25] ^ st[1]) >>> 0;
|
|
234
|
-
t = st[1];
|
|
235
|
-
t_bis = st[9];
|
|
236
|
-
st[1] = (t1_0 ^ t0_1 ^ st[25]) >>> 0;
|
|
237
|
-
st[9] = (t1_1 ^ t0_2 ^ t) >>> 0;
|
|
238
|
-
t = st[17];
|
|
239
|
-
st[17] = (t1_2 ^ t0_3 ^ t_bis) >>> 0;
|
|
240
|
-
st[25] = (t1_3 ^ t0_0 ^ t) >>> 0;
|
|
241
|
-
t = st[0];
|
|
242
|
-
t_bis = st[8];
|
|
243
|
-
st[0] = (t0_0 ^ t2_1 ^ st[24]) >>> 0;
|
|
244
|
-
st[8] = (t0_1 ^ t2_2 ^ t) >>> 0;
|
|
245
|
-
t = st[16];
|
|
246
|
-
st[16] = (t0_2 ^ t2_3 ^ t_bis) >>> 0;
|
|
247
|
-
st[24] = (t0_3 ^ t2_0 ^ t) >>> 0;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Complete AES round (SubBytes + ShiftRows + MixColumns).
|
|
251
|
-
* Note: AddRoundKey is handled separately in AEGIS.
|
|
96
|
+
* Put a single AES block into the unpacked state at the given block position.
|
|
252
97
|
*/
|
|
253
|
-
export function
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Pack 8 AES blocks into bitsliced representation.
|
|
260
|
-
*/
|
|
261
|
-
export function pack(st) {
|
|
262
|
-
for (let i = 0; i < 8; i++) {
|
|
263
|
-
swapmove(st, i, i + 8, 0x00ff00ff, 8);
|
|
264
|
-
swapmove(st, i + 16, i + 24, 0x00ff00ff, 8);
|
|
265
|
-
}
|
|
266
|
-
for (let i = 0; i < 16; i++) {
|
|
267
|
-
swapmove(st, i, i + 16, 0x0000ffff, 16);
|
|
268
|
-
}
|
|
269
|
-
for (let i = 0; i < 32; i += 8) {
|
|
270
|
-
swapmove(st, i + 1, i, 0x55555555, 1);
|
|
271
|
-
swapmove(st, i + 3, i + 2, 0x55555555, 1);
|
|
272
|
-
swapmove(st, i + 5, i + 4, 0x55555555, 1);
|
|
273
|
-
swapmove(st, i + 7, i + 6, 0x55555555, 1);
|
|
274
|
-
swapmove(st, i + 2, i, 0x33333333, 2);
|
|
275
|
-
swapmove(st, i + 3, i + 1, 0x33333333, 2);
|
|
276
|
-
swapmove(st, i + 6, i + 4, 0x33333333, 2);
|
|
277
|
-
swapmove(st, i + 7, i + 5, 0x33333333, 2);
|
|
278
|
-
swapmove(st, i + 4, i, 0x0f0f0f0f, 4);
|
|
279
|
-
swapmove(st, i + 5, i + 1, 0x0f0f0f0f, 4);
|
|
280
|
-
swapmove(st, i + 6, i + 2, 0x0f0f0f0f, 4);
|
|
281
|
-
swapmove(st, i + 7, i + 3, 0x0f0f0f0f, 4);
|
|
282
|
-
}
|
|
98
|
+
export function blocksPut(st, s, block) {
|
|
99
|
+
st[block * 4] = s[0];
|
|
100
|
+
st[block * 4 + 1] = s[1];
|
|
101
|
+
st[block * 4 + 2] = s[2];
|
|
102
|
+
st[block * 4 + 3] = s[3];
|
|
283
103
|
}
|
|
284
104
|
/**
|
|
285
|
-
*
|
|
105
|
+
* Load 16 bytes at the given offset into an AES block (little-endian).
|
|
286
106
|
*/
|
|
287
|
-
export function
|
|
288
|
-
for (let i = 0; i <
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
swapmove(st, i + 7, i + 6, 0x55555555, 1);
|
|
293
|
-
swapmove(st, i + 2, i, 0x33333333, 2);
|
|
294
|
-
swapmove(st, i + 3, i + 1, 0x33333333, 2);
|
|
295
|
-
swapmove(st, i + 6, i + 4, 0x33333333, 2);
|
|
296
|
-
swapmove(st, i + 7, i + 5, 0x33333333, 2);
|
|
297
|
-
swapmove(st, i + 4, i, 0x0f0f0f0f, 4);
|
|
298
|
-
swapmove(st, i + 5, i + 1, 0x0f0f0f0f, 4);
|
|
299
|
-
swapmove(st, i + 6, i + 2, 0x0f0f0f0f, 4);
|
|
300
|
-
swapmove(st, i + 7, i + 3, 0x0f0f0f0f, 4);
|
|
301
|
-
}
|
|
302
|
-
for (let i = 0; i < 16; i++) {
|
|
303
|
-
swapmove(st, i, i + 16, 0x0000ffff, 16);
|
|
304
|
-
}
|
|
305
|
-
for (let i = 0; i < 8; i++) {
|
|
306
|
-
swapmove(st, i, i + 8, 0x00ff00ff, 8);
|
|
307
|
-
swapmove(st, i + 16, i + 24, 0x00ff00ff, 8);
|
|
107
|
+
export function blockFromBytes(out, src, off = 0) {
|
|
108
|
+
for (let i = 0; i < 4; i++) {
|
|
109
|
+
const o = off + i * 4;
|
|
110
|
+
out[i] =
|
|
111
|
+
src[o] | (src[o + 1] << 8) | (src[o + 2] << 16) | (src[o + 3] << 24);
|
|
308
112
|
}
|
|
309
113
|
}
|
|
310
114
|
/**
|
|
311
|
-
*
|
|
115
|
+
* Store an AES block as 16 bytes at the given offset (little-endian).
|
|
312
116
|
*/
|
|
313
|
-
export function
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
swapmove(st, 12, 12 + 16, 0x0000ffff, 16);
|
|
322
|
-
for (let i = 0; i < 32; i += 8) {
|
|
323
|
-
swapmove(st, i + 1, i, 0x55555555, 1);
|
|
324
|
-
swapmove(st, i + 5, i + 4, 0x55555555, 1);
|
|
325
|
-
swapmove(st, i + 2, i, 0x33333333, 2);
|
|
326
|
-
swapmove(st, i + 3, i + 1, 0x33333333, 2);
|
|
327
|
-
swapmove(st, i + 6, i + 4, 0x33333333, 2);
|
|
328
|
-
swapmove(st, i + 7, i + 5, 0x33333333, 2);
|
|
329
|
-
swapmove(st, i + 4, i, 0x0f0f0f0f, 4);
|
|
330
|
-
swapmove(st, i + 5, i + 1, 0x0f0f0f0f, 4);
|
|
331
|
-
swapmove(st, i + 6, i + 2, 0x0f0f0f0f, 4);
|
|
332
|
-
swapmove(st, i + 7, i + 3, 0x0f0f0f0f, 4);
|
|
117
|
+
export function blockToBytes(out, src, off = 0) {
|
|
118
|
+
for (let i = 0; i < 4; i++) {
|
|
119
|
+
const w = src[i];
|
|
120
|
+
const o = off + i * 4;
|
|
121
|
+
out[o] = w;
|
|
122
|
+
out[o + 1] = w >>> 8;
|
|
123
|
+
out[o + 2] = w >>> 16;
|
|
124
|
+
out[o + 3] = w >>> 24;
|
|
333
125
|
}
|
|
334
126
|
}
|
|
335
127
|
/**
|
|
336
|
-
*
|
|
337
|
-
* @param block - Block index (0-7)
|
|
338
|
-
* @param word - Word index (0-3)
|
|
128
|
+
* XOR two AES blocks: out = a ^ b
|
|
339
129
|
*/
|
|
340
|
-
export function
|
|
341
|
-
|
|
130
|
+
export function blockXor(out, a, b) {
|
|
131
|
+
out[0] = a[0] ^ b[0];
|
|
132
|
+
out[1] = a[1] ^ b[1];
|
|
133
|
+
out[2] = a[2] ^ b[2];
|
|
134
|
+
out[3] = a[3] ^ b[3];
|
|
342
135
|
}
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Generated code below: produced by scripts/gen-aes-bs.ts, do not edit by hand.
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
343
140
|
/**
|
|
344
|
-
*
|
|
345
|
-
*
|
|
141
|
+
* Fused AEGIS-128L update round on the packed state:
|
|
142
|
+
* st = st ^ rotr8(AESRound(st)) ^ ci, where rotr8 rotates the 8 block lanes.
|
|
346
143
|
*/
|
|
347
|
-
export function
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
144
|
+
export function aegisRound128(st, ci) {
|
|
145
|
+
const u0_0 = st[0];
|
|
146
|
+
const u1_0 = st[4];
|
|
147
|
+
const u2_0 = st[8];
|
|
148
|
+
const u3_0 = st[12];
|
|
149
|
+
const u4_0 = st[16];
|
|
150
|
+
const u5_0 = st[20];
|
|
151
|
+
const u6_0 = st[24];
|
|
152
|
+
const u7_0 = st[28];
|
|
153
|
+
const z24_0 = u3_0 ^ u4_0;
|
|
154
|
+
const q17_0 = u1_0 ^ u7_0;
|
|
155
|
+
const q16_0 = u5_0 ^ q17_0;
|
|
156
|
+
const q0_0 = z24_0 ^ q16_0;
|
|
157
|
+
const q7_0 = z24_0 ^ u1_0 ^ u6_0;
|
|
158
|
+
const q2_0 = u2_0 ^ q0_0;
|
|
159
|
+
const q1_0 = q7_0 ^ q2_0;
|
|
160
|
+
const q3_0 = u0_0 ^ q7_0;
|
|
161
|
+
const q4_0 = u0_0 ^ q2_0;
|
|
162
|
+
const q5_0 = u1_0 ^ q4_0;
|
|
163
|
+
const q6_0 = u2_0 ^ u3_0;
|
|
164
|
+
const q10_0 = q6_0 ^ q7_0;
|
|
165
|
+
const q8_0 = u0_0 ^ q10_0;
|
|
166
|
+
const q9_0 = q8_0 ^ q2_0;
|
|
167
|
+
const q12_0 = z24_0 ^ q17_0;
|
|
168
|
+
const q15_0 = u7_0 ^ q4_0;
|
|
169
|
+
const m02_0 = u0_0 ^ u2_0;
|
|
170
|
+
const m15_0 = u1_0 ^ u5_0;
|
|
171
|
+
const q13_0 = m02_0 ^ m15_0;
|
|
172
|
+
const q14_0 = m02_0 ^ u7_0;
|
|
173
|
+
const q11_0 = u5_0;
|
|
174
|
+
const t20_0 = q6_0 & q12_0;
|
|
175
|
+
const t21_0 = q3_0 & q14_0;
|
|
176
|
+
const t22_0 = q1_0 & q16_0;
|
|
177
|
+
const t23_0 = q2_0 & q17_0;
|
|
178
|
+
const x0_0 = (q3_0 | q14_0) ^ (q0_0 & q7_0) ^ (t20_0 ^ t22_0);
|
|
179
|
+
const x1_0 = (q4_0 | q13_0) ^ (q10_0 & q11_0) ^ (t21_0 ^ t20_0);
|
|
180
|
+
const x2_0 = (q2_0 | q17_0) ^ (q5_0 & q9_0) ^ (t21_0 ^ t22_0);
|
|
181
|
+
const x3_0 = (q8_0 | q15_0) ^ t23_0 ^ (t21_0 ^ (q4_0 & q13_0));
|
|
182
|
+
const va_0 = x1_0 & ~x3_0;
|
|
183
|
+
const vb_0 = x0_0 & ~x3_0;
|
|
184
|
+
const vc_0 = x3_0 & ~x1_0;
|
|
185
|
+
const vd_0 = x2_0 & ~x1_0;
|
|
186
|
+
const ve_0 = x0_0 ^ va_0;
|
|
187
|
+
const y0_0 = x3_0 ^ (x2_0 & ~ve_0);
|
|
188
|
+
const vf_0 = x1_0 ^ vb_0;
|
|
189
|
+
const y1_0 = vc_0 ^ (x2_0 & vf_0);
|
|
190
|
+
const vg_0 = x2_0 ^ vc_0;
|
|
191
|
+
const y2_0 = x1_0 ^ (x0_0 & ~vg_0);
|
|
192
|
+
const vh_0 = x3_0 ^ vd_0;
|
|
193
|
+
const y3_0 = va_0 ^ (x0_0 & vh_0);
|
|
194
|
+
const y02_0 = y2_0 ^ y0_0;
|
|
195
|
+
const y13_0 = y3_0 ^ y1_0;
|
|
196
|
+
const y23_0 = y3_0 ^ y2_0;
|
|
197
|
+
const y01_0 = y1_0 ^ y0_0;
|
|
198
|
+
const y00_0 = y02_0 ^ y13_0;
|
|
199
|
+
const a0_0 = y01_0 & q11_0;
|
|
200
|
+
const a1_0 = y0_0 & q12_0;
|
|
201
|
+
const a2_0 = y1_0 & q0_0;
|
|
202
|
+
const a3_0 = y23_0 & q17_0;
|
|
203
|
+
const a4_0 = y2_0 & q5_0;
|
|
204
|
+
const a5_0 = y3_0 & q15_0;
|
|
205
|
+
const a6_0 = y13_0 & q14_0;
|
|
206
|
+
const a7_0 = y00_0 & q16_0;
|
|
207
|
+
const a8_0 = y02_0 & q13_0;
|
|
208
|
+
const a9_0 = y01_0 & q7_0;
|
|
209
|
+
const a10_0 = y0_0 & q10_0;
|
|
210
|
+
const a11_0 = y1_0 & q6_0;
|
|
211
|
+
const a12_0 = y23_0 & q2_0;
|
|
212
|
+
const a13_0 = y2_0 & q9_0;
|
|
213
|
+
const a14_0 = y3_0 & q8_0;
|
|
214
|
+
const a15_0 = y13_0 & q3_0;
|
|
215
|
+
const a16_0 = y00_0 & q1_0;
|
|
216
|
+
const a17_0 = y02_0 & q4_0;
|
|
217
|
+
const r0_0 = a1_0 ^ a5_0;
|
|
218
|
+
const r1_0 = a9_0 ^ a15_0;
|
|
219
|
+
const r2_0 = a4_0 ^ r0_0;
|
|
220
|
+
const r3_0 = a2_0 ^ a10_0;
|
|
221
|
+
const r4_0 = a11_0 ^ a17_0;
|
|
222
|
+
const r5_0 = a8_0 ^ r1_0;
|
|
223
|
+
const r6_0 = a0_0 ^ a16_0;
|
|
224
|
+
const r7_0 = a7_0 ^ a13_0;
|
|
225
|
+
const r8_0 = a11_0 ^ a14_0;
|
|
226
|
+
const r9_0 = r3_0 ^ r4_0;
|
|
227
|
+
const r10_0 = r5_0 ^ r6_0;
|
|
228
|
+
const r11_0 = r2_0 ^ r9_0;
|
|
229
|
+
const r12_0 = a3_0 ^ r0_0;
|
|
230
|
+
const r13_0 = r7_0 ^ r8_0;
|
|
231
|
+
const r14_0 = r12_0 ^ r13_0;
|
|
232
|
+
const o0_0 = r10_0 ^ r14_0;
|
|
233
|
+
const r15_0 = a6_0 ^ a10_0;
|
|
234
|
+
const r16_0 = r15_0 ^ r2_0;
|
|
235
|
+
const o1_0 = ~(r10_0 ^ r16_0);
|
|
236
|
+
const o2_0 = ~(a2_0 ^ r2_0);
|
|
237
|
+
const r17_0 = a12_0 ^ a13_0;
|
|
238
|
+
const r18_0 = a15_0 ^ r17_0;
|
|
239
|
+
const o3_0 = r18_0 ^ r11_0;
|
|
240
|
+
const r19_0 = a1_0 ^ a14_0;
|
|
241
|
+
const r20_0 = a17_0 ^ r3_0;
|
|
242
|
+
const r21_0 = r7_0 ^ r19_0;
|
|
243
|
+
const r22_0 = r5_0 ^ r20_0;
|
|
244
|
+
const o4_0 = r21_0 ^ r22_0;
|
|
245
|
+
const r23_0 = a9_0 ^ a12_0;
|
|
246
|
+
const o5_0 = r8_0 ^ r23_0;
|
|
247
|
+
const o6_0 = ~(r1_0 ^ r4_0);
|
|
248
|
+
const o7_0 = ~(a16_0 ^ r11_0);
|
|
249
|
+
const u0_1 = st[1];
|
|
250
|
+
const u1_1 = st[5];
|
|
251
|
+
const u2_1 = st[9];
|
|
252
|
+
const u3_1 = st[13];
|
|
253
|
+
const u4_1 = st[17];
|
|
254
|
+
const u5_1 = st[21];
|
|
255
|
+
const u6_1 = st[25];
|
|
256
|
+
const u7_1 = st[29];
|
|
257
|
+
const z24_1 = u3_1 ^ u4_1;
|
|
258
|
+
const q17_1 = u1_1 ^ u7_1;
|
|
259
|
+
const q16_1 = u5_1 ^ q17_1;
|
|
260
|
+
const q0_1 = z24_1 ^ q16_1;
|
|
261
|
+
const q7_1 = z24_1 ^ u1_1 ^ u6_1;
|
|
262
|
+
const q2_1 = u2_1 ^ q0_1;
|
|
263
|
+
const q1_1 = q7_1 ^ q2_1;
|
|
264
|
+
const q3_1 = u0_1 ^ q7_1;
|
|
265
|
+
const q4_1 = u0_1 ^ q2_1;
|
|
266
|
+
const q5_1 = u1_1 ^ q4_1;
|
|
267
|
+
const q6_1 = u2_1 ^ u3_1;
|
|
268
|
+
const q10_1 = q6_1 ^ q7_1;
|
|
269
|
+
const q8_1 = u0_1 ^ q10_1;
|
|
270
|
+
const q9_1 = q8_1 ^ q2_1;
|
|
271
|
+
const q12_1 = z24_1 ^ q17_1;
|
|
272
|
+
const q15_1 = u7_1 ^ q4_1;
|
|
273
|
+
const m02_1 = u0_1 ^ u2_1;
|
|
274
|
+
const m15_1 = u1_1 ^ u5_1;
|
|
275
|
+
const q13_1 = m02_1 ^ m15_1;
|
|
276
|
+
const q14_1 = m02_1 ^ u7_1;
|
|
277
|
+
const q11_1 = u5_1;
|
|
278
|
+
const t20_1 = q6_1 & q12_1;
|
|
279
|
+
const t21_1 = q3_1 & q14_1;
|
|
280
|
+
const t22_1 = q1_1 & q16_1;
|
|
281
|
+
const t23_1 = q2_1 & q17_1;
|
|
282
|
+
const x0_1 = (q3_1 | q14_1) ^ (q0_1 & q7_1) ^ (t20_1 ^ t22_1);
|
|
283
|
+
const x1_1 = (q4_1 | q13_1) ^ (q10_1 & q11_1) ^ (t21_1 ^ t20_1);
|
|
284
|
+
const x2_1 = (q2_1 | q17_1) ^ (q5_1 & q9_1) ^ (t21_1 ^ t22_1);
|
|
285
|
+
const x3_1 = (q8_1 | q15_1) ^ t23_1 ^ (t21_1 ^ (q4_1 & q13_1));
|
|
286
|
+
const va_1 = x1_1 & ~x3_1;
|
|
287
|
+
const vb_1 = x0_1 & ~x3_1;
|
|
288
|
+
const vc_1 = x3_1 & ~x1_1;
|
|
289
|
+
const vd_1 = x2_1 & ~x1_1;
|
|
290
|
+
const ve_1 = x0_1 ^ va_1;
|
|
291
|
+
const y0_1 = x3_1 ^ (x2_1 & ~ve_1);
|
|
292
|
+
const vf_1 = x1_1 ^ vb_1;
|
|
293
|
+
const y1_1 = vc_1 ^ (x2_1 & vf_1);
|
|
294
|
+
const vg_1 = x2_1 ^ vc_1;
|
|
295
|
+
const y2_1 = x1_1 ^ (x0_1 & ~vg_1);
|
|
296
|
+
const vh_1 = x3_1 ^ vd_1;
|
|
297
|
+
const y3_1 = va_1 ^ (x0_1 & vh_1);
|
|
298
|
+
const y02_1 = y2_1 ^ y0_1;
|
|
299
|
+
const y13_1 = y3_1 ^ y1_1;
|
|
300
|
+
const y23_1 = y3_1 ^ y2_1;
|
|
301
|
+
const y01_1 = y1_1 ^ y0_1;
|
|
302
|
+
const y00_1 = y02_1 ^ y13_1;
|
|
303
|
+
const a0_1 = y01_1 & q11_1;
|
|
304
|
+
const a1_1 = y0_1 & q12_1;
|
|
305
|
+
const a2_1 = y1_1 & q0_1;
|
|
306
|
+
const a3_1 = y23_1 & q17_1;
|
|
307
|
+
const a4_1 = y2_1 & q5_1;
|
|
308
|
+
const a5_1 = y3_1 & q15_1;
|
|
309
|
+
const a6_1 = y13_1 & q14_1;
|
|
310
|
+
const a7_1 = y00_1 & q16_1;
|
|
311
|
+
const a8_1 = y02_1 & q13_1;
|
|
312
|
+
const a9_1 = y01_1 & q7_1;
|
|
313
|
+
const a10_1 = y0_1 & q10_1;
|
|
314
|
+
const a11_1 = y1_1 & q6_1;
|
|
315
|
+
const a12_1 = y23_1 & q2_1;
|
|
316
|
+
const a13_1 = y2_1 & q9_1;
|
|
317
|
+
const a14_1 = y3_1 & q8_1;
|
|
318
|
+
const a15_1 = y13_1 & q3_1;
|
|
319
|
+
const a16_1 = y00_1 & q1_1;
|
|
320
|
+
const a17_1 = y02_1 & q4_1;
|
|
321
|
+
const r0_1 = a1_1 ^ a5_1;
|
|
322
|
+
const r1_1 = a9_1 ^ a15_1;
|
|
323
|
+
const r2_1 = a4_1 ^ r0_1;
|
|
324
|
+
const r3_1 = a2_1 ^ a10_1;
|
|
325
|
+
const r4_1 = a11_1 ^ a17_1;
|
|
326
|
+
const r5_1 = a8_1 ^ r1_1;
|
|
327
|
+
const r6_1 = a0_1 ^ a16_1;
|
|
328
|
+
const r7_1 = a7_1 ^ a13_1;
|
|
329
|
+
const r8_1 = a11_1 ^ a14_1;
|
|
330
|
+
const r9_1 = r3_1 ^ r4_1;
|
|
331
|
+
const r10_1 = r5_1 ^ r6_1;
|
|
332
|
+
const r11_1 = r2_1 ^ r9_1;
|
|
333
|
+
const r12_1 = a3_1 ^ r0_1;
|
|
334
|
+
const r13_1 = r7_1 ^ r8_1;
|
|
335
|
+
const r14_1 = r12_1 ^ r13_1;
|
|
336
|
+
const o0_1 = r10_1 ^ r14_1;
|
|
337
|
+
const r15_1 = a6_1 ^ a10_1;
|
|
338
|
+
const r16_1 = r15_1 ^ r2_1;
|
|
339
|
+
const o1_1 = ~(r10_1 ^ r16_1);
|
|
340
|
+
const o2_1 = ~(a2_1 ^ r2_1);
|
|
341
|
+
const r17_1 = a12_1 ^ a13_1;
|
|
342
|
+
const r18_1 = a15_1 ^ r17_1;
|
|
343
|
+
const o3_1 = r18_1 ^ r11_1;
|
|
344
|
+
const r19_1 = a1_1 ^ a14_1;
|
|
345
|
+
const r20_1 = a17_1 ^ r3_1;
|
|
346
|
+
const r21_1 = r7_1 ^ r19_1;
|
|
347
|
+
const r22_1 = r5_1 ^ r20_1;
|
|
348
|
+
const o4_1 = r21_1 ^ r22_1;
|
|
349
|
+
const r23_1 = a9_1 ^ a12_1;
|
|
350
|
+
const o5_1 = r8_1 ^ r23_1;
|
|
351
|
+
const o6_1 = ~(r1_1 ^ r4_1);
|
|
352
|
+
const o7_1 = ~(a16_1 ^ r11_1);
|
|
353
|
+
const u0_2 = st[2];
|
|
354
|
+
const u1_2 = st[6];
|
|
355
|
+
const u2_2 = st[10];
|
|
356
|
+
const u3_2 = st[14];
|
|
357
|
+
const u4_2 = st[18];
|
|
358
|
+
const u5_2 = st[22];
|
|
359
|
+
const u6_2 = st[26];
|
|
360
|
+
const u7_2 = st[30];
|
|
361
|
+
const z24_2 = u3_2 ^ u4_2;
|
|
362
|
+
const q17_2 = u1_2 ^ u7_2;
|
|
363
|
+
const q16_2 = u5_2 ^ q17_2;
|
|
364
|
+
const q0_2 = z24_2 ^ q16_2;
|
|
365
|
+
const q7_2 = z24_2 ^ u1_2 ^ u6_2;
|
|
366
|
+
const q2_2 = u2_2 ^ q0_2;
|
|
367
|
+
const q1_2 = q7_2 ^ q2_2;
|
|
368
|
+
const q3_2 = u0_2 ^ q7_2;
|
|
369
|
+
const q4_2 = u0_2 ^ q2_2;
|
|
370
|
+
const q5_2 = u1_2 ^ q4_2;
|
|
371
|
+
const q6_2 = u2_2 ^ u3_2;
|
|
372
|
+
const q10_2 = q6_2 ^ q7_2;
|
|
373
|
+
const q8_2 = u0_2 ^ q10_2;
|
|
374
|
+
const q9_2 = q8_2 ^ q2_2;
|
|
375
|
+
const q12_2 = z24_2 ^ q17_2;
|
|
376
|
+
const q15_2 = u7_2 ^ q4_2;
|
|
377
|
+
const m02_2 = u0_2 ^ u2_2;
|
|
378
|
+
const m15_2 = u1_2 ^ u5_2;
|
|
379
|
+
const q13_2 = m02_2 ^ m15_2;
|
|
380
|
+
const q14_2 = m02_2 ^ u7_2;
|
|
381
|
+
const q11_2 = u5_2;
|
|
382
|
+
const t20_2 = q6_2 & q12_2;
|
|
383
|
+
const t21_2 = q3_2 & q14_2;
|
|
384
|
+
const t22_2 = q1_2 & q16_2;
|
|
385
|
+
const t23_2 = q2_2 & q17_2;
|
|
386
|
+
const x0_2 = (q3_2 | q14_2) ^ (q0_2 & q7_2) ^ (t20_2 ^ t22_2);
|
|
387
|
+
const x1_2 = (q4_2 | q13_2) ^ (q10_2 & q11_2) ^ (t21_2 ^ t20_2);
|
|
388
|
+
const x2_2 = (q2_2 | q17_2) ^ (q5_2 & q9_2) ^ (t21_2 ^ t22_2);
|
|
389
|
+
const x3_2 = (q8_2 | q15_2) ^ t23_2 ^ (t21_2 ^ (q4_2 & q13_2));
|
|
390
|
+
const va_2 = x1_2 & ~x3_2;
|
|
391
|
+
const vb_2 = x0_2 & ~x3_2;
|
|
392
|
+
const vc_2 = x3_2 & ~x1_2;
|
|
393
|
+
const vd_2 = x2_2 & ~x1_2;
|
|
394
|
+
const ve_2 = x0_2 ^ va_2;
|
|
395
|
+
const y0_2 = x3_2 ^ (x2_2 & ~ve_2);
|
|
396
|
+
const vf_2 = x1_2 ^ vb_2;
|
|
397
|
+
const y1_2 = vc_2 ^ (x2_2 & vf_2);
|
|
398
|
+
const vg_2 = x2_2 ^ vc_2;
|
|
399
|
+
const y2_2 = x1_2 ^ (x0_2 & ~vg_2);
|
|
400
|
+
const vh_2 = x3_2 ^ vd_2;
|
|
401
|
+
const y3_2 = va_2 ^ (x0_2 & vh_2);
|
|
402
|
+
const y02_2 = y2_2 ^ y0_2;
|
|
403
|
+
const y13_2 = y3_2 ^ y1_2;
|
|
404
|
+
const y23_2 = y3_2 ^ y2_2;
|
|
405
|
+
const y01_2 = y1_2 ^ y0_2;
|
|
406
|
+
const y00_2 = y02_2 ^ y13_2;
|
|
407
|
+
const a0_2 = y01_2 & q11_2;
|
|
408
|
+
const a1_2 = y0_2 & q12_2;
|
|
409
|
+
const a2_2 = y1_2 & q0_2;
|
|
410
|
+
const a3_2 = y23_2 & q17_2;
|
|
411
|
+
const a4_2 = y2_2 & q5_2;
|
|
412
|
+
const a5_2 = y3_2 & q15_2;
|
|
413
|
+
const a6_2 = y13_2 & q14_2;
|
|
414
|
+
const a7_2 = y00_2 & q16_2;
|
|
415
|
+
const a8_2 = y02_2 & q13_2;
|
|
416
|
+
const a9_2 = y01_2 & q7_2;
|
|
417
|
+
const a10_2 = y0_2 & q10_2;
|
|
418
|
+
const a11_2 = y1_2 & q6_2;
|
|
419
|
+
const a12_2 = y23_2 & q2_2;
|
|
420
|
+
const a13_2 = y2_2 & q9_2;
|
|
421
|
+
const a14_2 = y3_2 & q8_2;
|
|
422
|
+
const a15_2 = y13_2 & q3_2;
|
|
423
|
+
const a16_2 = y00_2 & q1_2;
|
|
424
|
+
const a17_2 = y02_2 & q4_2;
|
|
425
|
+
const r0_2 = a1_2 ^ a5_2;
|
|
426
|
+
const r1_2 = a9_2 ^ a15_2;
|
|
427
|
+
const r2_2 = a4_2 ^ r0_2;
|
|
428
|
+
const r3_2 = a2_2 ^ a10_2;
|
|
429
|
+
const r4_2 = a11_2 ^ a17_2;
|
|
430
|
+
const r5_2 = a8_2 ^ r1_2;
|
|
431
|
+
const r6_2 = a0_2 ^ a16_2;
|
|
432
|
+
const r7_2 = a7_2 ^ a13_2;
|
|
433
|
+
const r8_2 = a11_2 ^ a14_2;
|
|
434
|
+
const r9_2 = r3_2 ^ r4_2;
|
|
435
|
+
const r10_2 = r5_2 ^ r6_2;
|
|
436
|
+
const r11_2 = r2_2 ^ r9_2;
|
|
437
|
+
const r12_2 = a3_2 ^ r0_2;
|
|
438
|
+
const r13_2 = r7_2 ^ r8_2;
|
|
439
|
+
const r14_2 = r12_2 ^ r13_2;
|
|
440
|
+
const o0_2 = r10_2 ^ r14_2;
|
|
441
|
+
const r15_2 = a6_2 ^ a10_2;
|
|
442
|
+
const r16_2 = r15_2 ^ r2_2;
|
|
443
|
+
const o1_2 = ~(r10_2 ^ r16_2);
|
|
444
|
+
const o2_2 = ~(a2_2 ^ r2_2);
|
|
445
|
+
const r17_2 = a12_2 ^ a13_2;
|
|
446
|
+
const r18_2 = a15_2 ^ r17_2;
|
|
447
|
+
const o3_2 = r18_2 ^ r11_2;
|
|
448
|
+
const r19_2 = a1_2 ^ a14_2;
|
|
449
|
+
const r20_2 = a17_2 ^ r3_2;
|
|
450
|
+
const r21_2 = r7_2 ^ r19_2;
|
|
451
|
+
const r22_2 = r5_2 ^ r20_2;
|
|
452
|
+
const o4_2 = r21_2 ^ r22_2;
|
|
453
|
+
const r23_2 = a9_2 ^ a12_2;
|
|
454
|
+
const o5_2 = r8_2 ^ r23_2;
|
|
455
|
+
const o6_2 = ~(r1_2 ^ r4_2);
|
|
456
|
+
const o7_2 = ~(a16_2 ^ r11_2);
|
|
457
|
+
const u0_3 = st[3];
|
|
458
|
+
const u1_3 = st[7];
|
|
459
|
+
const u2_3 = st[11];
|
|
460
|
+
const u3_3 = st[15];
|
|
461
|
+
const u4_3 = st[19];
|
|
462
|
+
const u5_3 = st[23];
|
|
463
|
+
const u6_3 = st[27];
|
|
464
|
+
const u7_3 = st[31];
|
|
465
|
+
const z24_3 = u3_3 ^ u4_3;
|
|
466
|
+
const q17_3 = u1_3 ^ u7_3;
|
|
467
|
+
const q16_3 = u5_3 ^ q17_3;
|
|
468
|
+
const q0_3 = z24_3 ^ q16_3;
|
|
469
|
+
const q7_3 = z24_3 ^ u1_3 ^ u6_3;
|
|
470
|
+
const q2_3 = u2_3 ^ q0_3;
|
|
471
|
+
const q1_3 = q7_3 ^ q2_3;
|
|
472
|
+
const q3_3 = u0_3 ^ q7_3;
|
|
473
|
+
const q4_3 = u0_3 ^ q2_3;
|
|
474
|
+
const q5_3 = u1_3 ^ q4_3;
|
|
475
|
+
const q6_3 = u2_3 ^ u3_3;
|
|
476
|
+
const q10_3 = q6_3 ^ q7_3;
|
|
477
|
+
const q8_3 = u0_3 ^ q10_3;
|
|
478
|
+
const q9_3 = q8_3 ^ q2_3;
|
|
479
|
+
const q12_3 = z24_3 ^ q17_3;
|
|
480
|
+
const q15_3 = u7_3 ^ q4_3;
|
|
481
|
+
const m02_3 = u0_3 ^ u2_3;
|
|
482
|
+
const m15_3 = u1_3 ^ u5_3;
|
|
483
|
+
const q13_3 = m02_3 ^ m15_3;
|
|
484
|
+
const q14_3 = m02_3 ^ u7_3;
|
|
485
|
+
const q11_3 = u5_3;
|
|
486
|
+
const t20_3 = q6_3 & q12_3;
|
|
487
|
+
const t21_3 = q3_3 & q14_3;
|
|
488
|
+
const t22_3 = q1_3 & q16_3;
|
|
489
|
+
const t23_3 = q2_3 & q17_3;
|
|
490
|
+
const x0_3 = (q3_3 | q14_3) ^ (q0_3 & q7_3) ^ (t20_3 ^ t22_3);
|
|
491
|
+
const x1_3 = (q4_3 | q13_3) ^ (q10_3 & q11_3) ^ (t21_3 ^ t20_3);
|
|
492
|
+
const x2_3 = (q2_3 | q17_3) ^ (q5_3 & q9_3) ^ (t21_3 ^ t22_3);
|
|
493
|
+
const x3_3 = (q8_3 | q15_3) ^ t23_3 ^ (t21_3 ^ (q4_3 & q13_3));
|
|
494
|
+
const va_3 = x1_3 & ~x3_3;
|
|
495
|
+
const vb_3 = x0_3 & ~x3_3;
|
|
496
|
+
const vc_3 = x3_3 & ~x1_3;
|
|
497
|
+
const vd_3 = x2_3 & ~x1_3;
|
|
498
|
+
const ve_3 = x0_3 ^ va_3;
|
|
499
|
+
const y0_3 = x3_3 ^ (x2_3 & ~ve_3);
|
|
500
|
+
const vf_3 = x1_3 ^ vb_3;
|
|
501
|
+
const y1_3 = vc_3 ^ (x2_3 & vf_3);
|
|
502
|
+
const vg_3 = x2_3 ^ vc_3;
|
|
503
|
+
const y2_3 = x1_3 ^ (x0_3 & ~vg_3);
|
|
504
|
+
const vh_3 = x3_3 ^ vd_3;
|
|
505
|
+
const y3_3 = va_3 ^ (x0_3 & vh_3);
|
|
506
|
+
const y02_3 = y2_3 ^ y0_3;
|
|
507
|
+
const y13_3 = y3_3 ^ y1_3;
|
|
508
|
+
const y23_3 = y3_3 ^ y2_3;
|
|
509
|
+
const y01_3 = y1_3 ^ y0_3;
|
|
510
|
+
const y00_3 = y02_3 ^ y13_3;
|
|
511
|
+
const a0_3 = y01_3 & q11_3;
|
|
512
|
+
const a1_3 = y0_3 & q12_3;
|
|
513
|
+
const a2_3 = y1_3 & q0_3;
|
|
514
|
+
const a3_3 = y23_3 & q17_3;
|
|
515
|
+
const a4_3 = y2_3 & q5_3;
|
|
516
|
+
const a5_3 = y3_3 & q15_3;
|
|
517
|
+
const a6_3 = y13_3 & q14_3;
|
|
518
|
+
const a7_3 = y00_3 & q16_3;
|
|
519
|
+
const a8_3 = y02_3 & q13_3;
|
|
520
|
+
const a9_3 = y01_3 & q7_3;
|
|
521
|
+
const a10_3 = y0_3 & q10_3;
|
|
522
|
+
const a11_3 = y1_3 & q6_3;
|
|
523
|
+
const a12_3 = y23_3 & q2_3;
|
|
524
|
+
const a13_3 = y2_3 & q9_3;
|
|
525
|
+
const a14_3 = y3_3 & q8_3;
|
|
526
|
+
const a15_3 = y13_3 & q3_3;
|
|
527
|
+
const a16_3 = y00_3 & q1_3;
|
|
528
|
+
const a17_3 = y02_3 & q4_3;
|
|
529
|
+
const r0_3 = a1_3 ^ a5_3;
|
|
530
|
+
const r1_3 = a9_3 ^ a15_3;
|
|
531
|
+
const r2_3 = a4_3 ^ r0_3;
|
|
532
|
+
const r3_3 = a2_3 ^ a10_3;
|
|
533
|
+
const r4_3 = a11_3 ^ a17_3;
|
|
534
|
+
const r5_3 = a8_3 ^ r1_3;
|
|
535
|
+
const r6_3 = a0_3 ^ a16_3;
|
|
536
|
+
const r7_3 = a7_3 ^ a13_3;
|
|
537
|
+
const r8_3 = a11_3 ^ a14_3;
|
|
538
|
+
const r9_3 = r3_3 ^ r4_3;
|
|
539
|
+
const r10_3 = r5_3 ^ r6_3;
|
|
540
|
+
const r11_3 = r2_3 ^ r9_3;
|
|
541
|
+
const r12_3 = a3_3 ^ r0_3;
|
|
542
|
+
const r13_3 = r7_3 ^ r8_3;
|
|
543
|
+
const r14_3 = r12_3 ^ r13_3;
|
|
544
|
+
const o0_3 = r10_3 ^ r14_3;
|
|
545
|
+
const r15_3 = a6_3 ^ a10_3;
|
|
546
|
+
const r16_3 = r15_3 ^ r2_3;
|
|
547
|
+
const o1_3 = ~(r10_3 ^ r16_3);
|
|
548
|
+
const o2_3 = ~(a2_3 ^ r2_3);
|
|
549
|
+
const r17_3 = a12_3 ^ a13_3;
|
|
550
|
+
const r18_3 = a15_3 ^ r17_3;
|
|
551
|
+
const o3_3 = r18_3 ^ r11_3;
|
|
552
|
+
const r19_3 = a1_3 ^ a14_3;
|
|
553
|
+
const r20_3 = a17_3 ^ r3_3;
|
|
554
|
+
const r21_3 = r7_3 ^ r19_3;
|
|
555
|
+
const r22_3 = r5_3 ^ r20_3;
|
|
556
|
+
const o4_3 = r21_3 ^ r22_3;
|
|
557
|
+
const r23_3 = a9_3 ^ a12_3;
|
|
558
|
+
const o5_3 = r8_3 ^ r23_3;
|
|
559
|
+
const o6_3 = ~(r1_3 ^ r4_3);
|
|
560
|
+
const o7_3 = ~(a16_3 ^ r11_3);
|
|
561
|
+
const p0_1 = (o0_1 << 24) | (o0_1 >>> 8);
|
|
562
|
+
const p0_2 = (o0_2 << 16) | (o0_2 >>> 16);
|
|
563
|
+
const p0_3 = (o0_3 << 8) | (o0_3 >>> 24);
|
|
564
|
+
const p1_1 = (o1_1 << 24) | (o1_1 >>> 8);
|
|
565
|
+
const p1_2 = (o1_2 << 16) | (o1_2 >>> 16);
|
|
566
|
+
const p1_3 = (o1_3 << 8) | (o1_3 >>> 24);
|
|
567
|
+
const p2_1 = (o2_1 << 24) | (o2_1 >>> 8);
|
|
568
|
+
const p2_2 = (o2_2 << 16) | (o2_2 >>> 16);
|
|
569
|
+
const p2_3 = (o2_3 << 8) | (o2_3 >>> 24);
|
|
570
|
+
const p3_1 = (o3_1 << 24) | (o3_1 >>> 8);
|
|
571
|
+
const p3_2 = (o3_2 << 16) | (o3_2 >>> 16);
|
|
572
|
+
const p3_3 = (o3_3 << 8) | (o3_3 >>> 24);
|
|
573
|
+
const p4_1 = (o4_1 << 24) | (o4_1 >>> 8);
|
|
574
|
+
const p4_2 = (o4_2 << 16) | (o4_2 >>> 16);
|
|
575
|
+
const p4_3 = (o4_3 << 8) | (o4_3 >>> 24);
|
|
576
|
+
const p5_1 = (o5_1 << 24) | (o5_1 >>> 8);
|
|
577
|
+
const p5_2 = (o5_2 << 16) | (o5_2 >>> 16);
|
|
578
|
+
const p5_3 = (o5_3 << 8) | (o5_3 >>> 24);
|
|
579
|
+
const p6_1 = (o6_1 << 24) | (o6_1 >>> 8);
|
|
580
|
+
const p6_2 = (o6_2 << 16) | (o6_2 >>> 16);
|
|
581
|
+
const p6_3 = (o6_3 << 8) | (o6_3 >>> 24);
|
|
582
|
+
const p7_1 = (o7_1 << 24) | (o7_1 >>> 8);
|
|
583
|
+
const p7_2 = (o7_2 << 16) | (o7_2 >>> 16);
|
|
584
|
+
const p7_3 = (o7_3 << 8) | (o7_3 >>> 24);
|
|
585
|
+
const d0_0 = o0_0 ^ p0_1;
|
|
586
|
+
const d0_1 = p0_1 ^ p0_2;
|
|
587
|
+
const d0_2 = p0_2 ^ p0_3;
|
|
588
|
+
const d0_3 = p0_3 ^ o0_0;
|
|
589
|
+
const d1_0 = o1_0 ^ p1_1;
|
|
590
|
+
const d1_1 = p1_1 ^ p1_2;
|
|
591
|
+
const d1_2 = p1_2 ^ p1_3;
|
|
592
|
+
const d1_3 = p1_3 ^ o1_0;
|
|
593
|
+
const d2_0 = o2_0 ^ p2_1;
|
|
594
|
+
const d2_1 = p2_1 ^ p2_2;
|
|
595
|
+
const d2_2 = p2_2 ^ p2_3;
|
|
596
|
+
const d2_3 = p2_3 ^ o2_0;
|
|
597
|
+
const d3_0 = o3_0 ^ p3_1;
|
|
598
|
+
const d3_1 = p3_1 ^ p3_2;
|
|
599
|
+
const d3_2 = p3_2 ^ p3_3;
|
|
600
|
+
const d3_3 = p3_3 ^ o3_0;
|
|
601
|
+
const d4_0 = o4_0 ^ p4_1;
|
|
602
|
+
const d4_1 = p4_1 ^ p4_2;
|
|
603
|
+
const d4_2 = p4_2 ^ p4_3;
|
|
604
|
+
const d4_3 = p4_3 ^ o4_0;
|
|
605
|
+
const d5_0 = o5_0 ^ p5_1;
|
|
606
|
+
const d5_1 = p5_1 ^ p5_2;
|
|
607
|
+
const d5_2 = p5_2 ^ p5_3;
|
|
608
|
+
const d5_3 = p5_3 ^ o5_0;
|
|
609
|
+
const d6_0 = o6_0 ^ p6_1;
|
|
610
|
+
const d6_1 = p6_1 ^ p6_2;
|
|
611
|
+
const d6_2 = p6_2 ^ p6_3;
|
|
612
|
+
const d6_3 = p6_3 ^ o6_0;
|
|
613
|
+
const d7_0 = o7_0 ^ p7_1;
|
|
614
|
+
const d7_1 = p7_1 ^ p7_2;
|
|
615
|
+
const d7_2 = p7_2 ^ p7_3;
|
|
616
|
+
const d7_3 = p7_3 ^ o7_0;
|
|
617
|
+
const m0_0 = d1_0 ^ d0_1 ^ p0_3;
|
|
618
|
+
const m0_1 = d1_1 ^ d0_2 ^ o0_0;
|
|
619
|
+
const m0_2 = d1_2 ^ d0_3 ^ p0_1;
|
|
620
|
+
const m0_3 = d1_3 ^ d0_0 ^ p0_2;
|
|
621
|
+
const m1_0 = d2_0 ^ d1_1 ^ p1_3;
|
|
622
|
+
const m1_1 = d2_1 ^ d1_2 ^ o1_0;
|
|
623
|
+
const m1_2 = d2_2 ^ d1_3 ^ p1_1;
|
|
624
|
+
const m1_3 = d2_3 ^ d1_0 ^ p1_2;
|
|
625
|
+
const m2_0 = d3_0 ^ d2_1 ^ p2_3;
|
|
626
|
+
const m2_1 = d3_1 ^ d2_2 ^ o2_0;
|
|
627
|
+
const m2_2 = d3_2 ^ d2_3 ^ p2_1;
|
|
628
|
+
const m2_3 = d3_3 ^ d2_0 ^ p2_2;
|
|
629
|
+
const m3_0 = d4_0 ^ d3_1 ^ p3_3 ^ d0_0;
|
|
630
|
+
const m3_1 = d4_1 ^ d3_2 ^ o3_0 ^ d0_1;
|
|
631
|
+
const m3_2 = d4_2 ^ d3_3 ^ p3_1 ^ d0_2;
|
|
632
|
+
const m3_3 = d4_3 ^ d3_0 ^ p3_2 ^ d0_3;
|
|
633
|
+
const m4_0 = d5_0 ^ d4_1 ^ p4_3 ^ d0_0;
|
|
634
|
+
const m4_1 = d5_1 ^ d4_2 ^ o4_0 ^ d0_1;
|
|
635
|
+
const m4_2 = d5_2 ^ d4_3 ^ p4_1 ^ d0_2;
|
|
636
|
+
const m4_3 = d5_3 ^ d4_0 ^ p4_2 ^ d0_3;
|
|
637
|
+
const m5_0 = d6_0 ^ d5_1 ^ p5_3;
|
|
638
|
+
const m5_1 = d6_1 ^ d5_2 ^ o5_0;
|
|
639
|
+
const m5_2 = d6_2 ^ d5_3 ^ p5_1;
|
|
640
|
+
const m5_3 = d6_3 ^ d5_0 ^ p5_2;
|
|
641
|
+
const m6_0 = d7_0 ^ d6_1 ^ p6_3 ^ d0_0;
|
|
642
|
+
const m6_1 = d7_1 ^ d6_2 ^ o6_0 ^ d0_1;
|
|
643
|
+
const m6_2 = d7_2 ^ d6_3 ^ p6_1 ^ d0_2;
|
|
644
|
+
const m6_3 = d7_3 ^ d6_0 ^ p6_2 ^ d0_3;
|
|
645
|
+
const m7_0 = d0_0 ^ d7_1 ^ p7_3;
|
|
646
|
+
const m7_1 = d0_1 ^ d7_2 ^ o7_0;
|
|
647
|
+
const m7_2 = d0_2 ^ d7_3 ^ p7_1;
|
|
648
|
+
const m7_3 = d0_3 ^ d7_0 ^ p7_2;
|
|
649
|
+
st[0] =
|
|
650
|
+
st[0] ^
|
|
651
|
+
ci[0] ^
|
|
652
|
+
(((m0_0 & 0xfefefefe) >>> 1) | ((m0_0 & 0x01010101) << 7));
|
|
653
|
+
st[1] =
|
|
654
|
+
st[1] ^
|
|
655
|
+
ci[1] ^
|
|
656
|
+
(((m0_1 & 0xfefefefe) >>> 1) | ((m0_1 & 0x01010101) << 7));
|
|
657
|
+
st[2] =
|
|
658
|
+
st[2] ^
|
|
659
|
+
ci[2] ^
|
|
660
|
+
(((m0_2 & 0xfefefefe) >>> 1) | ((m0_2 & 0x01010101) << 7));
|
|
661
|
+
st[3] =
|
|
662
|
+
st[3] ^
|
|
663
|
+
ci[3] ^
|
|
664
|
+
(((m0_3 & 0xfefefefe) >>> 1) | ((m0_3 & 0x01010101) << 7));
|
|
665
|
+
st[4] =
|
|
666
|
+
st[4] ^
|
|
667
|
+
ci[4] ^
|
|
668
|
+
(((m1_0 & 0xfefefefe) >>> 1) | ((m1_0 & 0x01010101) << 7));
|
|
669
|
+
st[5] =
|
|
670
|
+
st[5] ^
|
|
671
|
+
ci[5] ^
|
|
672
|
+
(((m1_1 & 0xfefefefe) >>> 1) | ((m1_1 & 0x01010101) << 7));
|
|
673
|
+
st[6] =
|
|
674
|
+
st[6] ^
|
|
675
|
+
ci[6] ^
|
|
676
|
+
(((m1_2 & 0xfefefefe) >>> 1) | ((m1_2 & 0x01010101) << 7));
|
|
677
|
+
st[7] =
|
|
678
|
+
st[7] ^
|
|
679
|
+
ci[7] ^
|
|
680
|
+
(((m1_3 & 0xfefefefe) >>> 1) | ((m1_3 & 0x01010101) << 7));
|
|
681
|
+
st[8] =
|
|
682
|
+
st[8] ^
|
|
683
|
+
ci[8] ^
|
|
684
|
+
(((m2_0 & 0xfefefefe) >>> 1) | ((m2_0 & 0x01010101) << 7));
|
|
685
|
+
st[9] =
|
|
686
|
+
st[9] ^
|
|
687
|
+
ci[9] ^
|
|
688
|
+
(((m2_1 & 0xfefefefe) >>> 1) | ((m2_1 & 0x01010101) << 7));
|
|
689
|
+
st[10] =
|
|
690
|
+
st[10] ^
|
|
691
|
+
ci[10] ^
|
|
692
|
+
(((m2_2 & 0xfefefefe) >>> 1) | ((m2_2 & 0x01010101) << 7));
|
|
693
|
+
st[11] =
|
|
694
|
+
st[11] ^
|
|
695
|
+
ci[11] ^
|
|
696
|
+
(((m2_3 & 0xfefefefe) >>> 1) | ((m2_3 & 0x01010101) << 7));
|
|
697
|
+
st[12] =
|
|
698
|
+
st[12] ^
|
|
699
|
+
ci[12] ^
|
|
700
|
+
(((m3_0 & 0xfefefefe) >>> 1) | ((m3_0 & 0x01010101) << 7));
|
|
701
|
+
st[13] =
|
|
702
|
+
st[13] ^
|
|
703
|
+
ci[13] ^
|
|
704
|
+
(((m3_1 & 0xfefefefe) >>> 1) | ((m3_1 & 0x01010101) << 7));
|
|
705
|
+
st[14] =
|
|
706
|
+
st[14] ^
|
|
707
|
+
ci[14] ^
|
|
708
|
+
(((m3_2 & 0xfefefefe) >>> 1) | ((m3_2 & 0x01010101) << 7));
|
|
709
|
+
st[15] =
|
|
710
|
+
st[15] ^
|
|
711
|
+
ci[15] ^
|
|
712
|
+
(((m3_3 & 0xfefefefe) >>> 1) | ((m3_3 & 0x01010101) << 7));
|
|
713
|
+
st[16] =
|
|
714
|
+
st[16] ^
|
|
715
|
+
ci[16] ^
|
|
716
|
+
(((m4_0 & 0xfefefefe) >>> 1) | ((m4_0 & 0x01010101) << 7));
|
|
717
|
+
st[17] =
|
|
718
|
+
st[17] ^
|
|
719
|
+
ci[17] ^
|
|
720
|
+
(((m4_1 & 0xfefefefe) >>> 1) | ((m4_1 & 0x01010101) << 7));
|
|
721
|
+
st[18] =
|
|
722
|
+
st[18] ^
|
|
723
|
+
ci[18] ^
|
|
724
|
+
(((m4_2 & 0xfefefefe) >>> 1) | ((m4_2 & 0x01010101) << 7));
|
|
725
|
+
st[19] =
|
|
726
|
+
st[19] ^
|
|
727
|
+
ci[19] ^
|
|
728
|
+
(((m4_3 & 0xfefefefe) >>> 1) | ((m4_3 & 0x01010101) << 7));
|
|
729
|
+
st[20] =
|
|
730
|
+
st[20] ^
|
|
731
|
+
ci[20] ^
|
|
732
|
+
(((m5_0 & 0xfefefefe) >>> 1) | ((m5_0 & 0x01010101) << 7));
|
|
733
|
+
st[21] =
|
|
734
|
+
st[21] ^
|
|
735
|
+
ci[21] ^
|
|
736
|
+
(((m5_1 & 0xfefefefe) >>> 1) | ((m5_1 & 0x01010101) << 7));
|
|
737
|
+
st[22] =
|
|
738
|
+
st[22] ^
|
|
739
|
+
ci[22] ^
|
|
740
|
+
(((m5_2 & 0xfefefefe) >>> 1) | ((m5_2 & 0x01010101) << 7));
|
|
741
|
+
st[23] =
|
|
742
|
+
st[23] ^
|
|
743
|
+
ci[23] ^
|
|
744
|
+
(((m5_3 & 0xfefefefe) >>> 1) | ((m5_3 & 0x01010101) << 7));
|
|
745
|
+
st[24] =
|
|
746
|
+
st[24] ^
|
|
747
|
+
ci[24] ^
|
|
748
|
+
(((m6_0 & 0xfefefefe) >>> 1) | ((m6_0 & 0x01010101) << 7));
|
|
749
|
+
st[25] =
|
|
750
|
+
st[25] ^
|
|
751
|
+
ci[25] ^
|
|
752
|
+
(((m6_1 & 0xfefefefe) >>> 1) | ((m6_1 & 0x01010101) << 7));
|
|
753
|
+
st[26] =
|
|
754
|
+
st[26] ^
|
|
755
|
+
ci[26] ^
|
|
756
|
+
(((m6_2 & 0xfefefefe) >>> 1) | ((m6_2 & 0x01010101) << 7));
|
|
757
|
+
st[27] =
|
|
758
|
+
st[27] ^
|
|
759
|
+
ci[27] ^
|
|
760
|
+
(((m6_3 & 0xfefefefe) >>> 1) | ((m6_3 & 0x01010101) << 7));
|
|
761
|
+
st[28] =
|
|
762
|
+
st[28] ^
|
|
763
|
+
ci[28] ^
|
|
764
|
+
(((m7_0 & 0xfefefefe) >>> 1) | ((m7_0 & 0x01010101) << 7));
|
|
765
|
+
st[29] =
|
|
766
|
+
st[29] ^
|
|
767
|
+
ci[29] ^
|
|
768
|
+
(((m7_1 & 0xfefefefe) >>> 1) | ((m7_1 & 0x01010101) << 7));
|
|
769
|
+
st[30] =
|
|
770
|
+
st[30] ^
|
|
771
|
+
ci[30] ^
|
|
772
|
+
(((m7_2 & 0xfefefefe) >>> 1) | ((m7_2 & 0x01010101) << 7));
|
|
773
|
+
st[31] =
|
|
774
|
+
st[31] ^
|
|
775
|
+
ci[31] ^
|
|
776
|
+
(((m7_3 & 0xfefefefe) >>> 1) | ((m7_3 & 0x01010101) << 7));
|
|
352
777
|
}
|
|
353
778
|
/**
|
|
354
|
-
*
|
|
779
|
+
* Fused AEGIS-256 update round on the packed state:
|
|
780
|
+
* st = st ^ rotr6(AESRound(st)) ^ ci, where rotr6 rotates the 6 block lanes.
|
|
355
781
|
*/
|
|
356
|
-
export function
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
782
|
+
export function aegisRound256(st, ci) {
|
|
783
|
+
const u0_0 = st[0];
|
|
784
|
+
const u1_0 = st[4];
|
|
785
|
+
const u2_0 = st[8];
|
|
786
|
+
const u3_0 = st[12];
|
|
787
|
+
const u4_0 = st[16];
|
|
788
|
+
const u5_0 = st[20];
|
|
789
|
+
const u6_0 = st[24];
|
|
790
|
+
const u7_0 = st[28];
|
|
791
|
+
const z24_0 = u3_0 ^ u4_0;
|
|
792
|
+
const q17_0 = u1_0 ^ u7_0;
|
|
793
|
+
const q16_0 = u5_0 ^ q17_0;
|
|
794
|
+
const q0_0 = z24_0 ^ q16_0;
|
|
795
|
+
const q7_0 = z24_0 ^ u1_0 ^ u6_0;
|
|
796
|
+
const q2_0 = u2_0 ^ q0_0;
|
|
797
|
+
const q1_0 = q7_0 ^ q2_0;
|
|
798
|
+
const q3_0 = u0_0 ^ q7_0;
|
|
799
|
+
const q4_0 = u0_0 ^ q2_0;
|
|
800
|
+
const q5_0 = u1_0 ^ q4_0;
|
|
801
|
+
const q6_0 = u2_0 ^ u3_0;
|
|
802
|
+
const q10_0 = q6_0 ^ q7_0;
|
|
803
|
+
const q8_0 = u0_0 ^ q10_0;
|
|
804
|
+
const q9_0 = q8_0 ^ q2_0;
|
|
805
|
+
const q12_0 = z24_0 ^ q17_0;
|
|
806
|
+
const q15_0 = u7_0 ^ q4_0;
|
|
807
|
+
const m02_0 = u0_0 ^ u2_0;
|
|
808
|
+
const m15_0 = u1_0 ^ u5_0;
|
|
809
|
+
const q13_0 = m02_0 ^ m15_0;
|
|
810
|
+
const q14_0 = m02_0 ^ u7_0;
|
|
811
|
+
const q11_0 = u5_0;
|
|
812
|
+
const t20_0 = q6_0 & q12_0;
|
|
813
|
+
const t21_0 = q3_0 & q14_0;
|
|
814
|
+
const t22_0 = q1_0 & q16_0;
|
|
815
|
+
const t23_0 = q2_0 & q17_0;
|
|
816
|
+
const x0_0 = (q3_0 | q14_0) ^ (q0_0 & q7_0) ^ (t20_0 ^ t22_0);
|
|
817
|
+
const x1_0 = (q4_0 | q13_0) ^ (q10_0 & q11_0) ^ (t21_0 ^ t20_0);
|
|
818
|
+
const x2_0 = (q2_0 | q17_0) ^ (q5_0 & q9_0) ^ (t21_0 ^ t22_0);
|
|
819
|
+
const x3_0 = (q8_0 | q15_0) ^ t23_0 ^ (t21_0 ^ (q4_0 & q13_0));
|
|
820
|
+
const va_0 = x1_0 & ~x3_0;
|
|
821
|
+
const vb_0 = x0_0 & ~x3_0;
|
|
822
|
+
const vc_0 = x3_0 & ~x1_0;
|
|
823
|
+
const vd_0 = x2_0 & ~x1_0;
|
|
824
|
+
const ve_0 = x0_0 ^ va_0;
|
|
825
|
+
const y0_0 = x3_0 ^ (x2_0 & ~ve_0);
|
|
826
|
+
const vf_0 = x1_0 ^ vb_0;
|
|
827
|
+
const y1_0 = vc_0 ^ (x2_0 & vf_0);
|
|
828
|
+
const vg_0 = x2_0 ^ vc_0;
|
|
829
|
+
const y2_0 = x1_0 ^ (x0_0 & ~vg_0);
|
|
830
|
+
const vh_0 = x3_0 ^ vd_0;
|
|
831
|
+
const y3_0 = va_0 ^ (x0_0 & vh_0);
|
|
832
|
+
const y02_0 = y2_0 ^ y0_0;
|
|
833
|
+
const y13_0 = y3_0 ^ y1_0;
|
|
834
|
+
const y23_0 = y3_0 ^ y2_0;
|
|
835
|
+
const y01_0 = y1_0 ^ y0_0;
|
|
836
|
+
const y00_0 = y02_0 ^ y13_0;
|
|
837
|
+
const a0_0 = y01_0 & q11_0;
|
|
838
|
+
const a1_0 = y0_0 & q12_0;
|
|
839
|
+
const a2_0 = y1_0 & q0_0;
|
|
840
|
+
const a3_0 = y23_0 & q17_0;
|
|
841
|
+
const a4_0 = y2_0 & q5_0;
|
|
842
|
+
const a5_0 = y3_0 & q15_0;
|
|
843
|
+
const a6_0 = y13_0 & q14_0;
|
|
844
|
+
const a7_0 = y00_0 & q16_0;
|
|
845
|
+
const a8_0 = y02_0 & q13_0;
|
|
846
|
+
const a9_0 = y01_0 & q7_0;
|
|
847
|
+
const a10_0 = y0_0 & q10_0;
|
|
848
|
+
const a11_0 = y1_0 & q6_0;
|
|
849
|
+
const a12_0 = y23_0 & q2_0;
|
|
850
|
+
const a13_0 = y2_0 & q9_0;
|
|
851
|
+
const a14_0 = y3_0 & q8_0;
|
|
852
|
+
const a15_0 = y13_0 & q3_0;
|
|
853
|
+
const a16_0 = y00_0 & q1_0;
|
|
854
|
+
const a17_0 = y02_0 & q4_0;
|
|
855
|
+
const r0_0 = a1_0 ^ a5_0;
|
|
856
|
+
const r1_0 = a9_0 ^ a15_0;
|
|
857
|
+
const r2_0 = a4_0 ^ r0_0;
|
|
858
|
+
const r3_0 = a2_0 ^ a10_0;
|
|
859
|
+
const r4_0 = a11_0 ^ a17_0;
|
|
860
|
+
const r5_0 = a8_0 ^ r1_0;
|
|
861
|
+
const r6_0 = a0_0 ^ a16_0;
|
|
862
|
+
const r7_0 = a7_0 ^ a13_0;
|
|
863
|
+
const r8_0 = a11_0 ^ a14_0;
|
|
864
|
+
const r9_0 = r3_0 ^ r4_0;
|
|
865
|
+
const r10_0 = r5_0 ^ r6_0;
|
|
866
|
+
const r11_0 = r2_0 ^ r9_0;
|
|
867
|
+
const r12_0 = a3_0 ^ r0_0;
|
|
868
|
+
const r13_0 = r7_0 ^ r8_0;
|
|
869
|
+
const r14_0 = r12_0 ^ r13_0;
|
|
870
|
+
const o0_0 = r10_0 ^ r14_0;
|
|
871
|
+
const r15_0 = a6_0 ^ a10_0;
|
|
872
|
+
const r16_0 = r15_0 ^ r2_0;
|
|
873
|
+
const o1_0 = ~(r10_0 ^ r16_0);
|
|
874
|
+
const o2_0 = ~(a2_0 ^ r2_0);
|
|
875
|
+
const r17_0 = a12_0 ^ a13_0;
|
|
876
|
+
const r18_0 = a15_0 ^ r17_0;
|
|
877
|
+
const o3_0 = r18_0 ^ r11_0;
|
|
878
|
+
const r19_0 = a1_0 ^ a14_0;
|
|
879
|
+
const r20_0 = a17_0 ^ r3_0;
|
|
880
|
+
const r21_0 = r7_0 ^ r19_0;
|
|
881
|
+
const r22_0 = r5_0 ^ r20_0;
|
|
882
|
+
const o4_0 = r21_0 ^ r22_0;
|
|
883
|
+
const r23_0 = a9_0 ^ a12_0;
|
|
884
|
+
const o5_0 = r8_0 ^ r23_0;
|
|
885
|
+
const o6_0 = ~(r1_0 ^ r4_0);
|
|
886
|
+
const o7_0 = ~(a16_0 ^ r11_0);
|
|
887
|
+
const u0_1 = st[1];
|
|
888
|
+
const u1_1 = st[5];
|
|
889
|
+
const u2_1 = st[9];
|
|
890
|
+
const u3_1 = st[13];
|
|
891
|
+
const u4_1 = st[17];
|
|
892
|
+
const u5_1 = st[21];
|
|
893
|
+
const u6_1 = st[25];
|
|
894
|
+
const u7_1 = st[29];
|
|
895
|
+
const z24_1 = u3_1 ^ u4_1;
|
|
896
|
+
const q17_1 = u1_1 ^ u7_1;
|
|
897
|
+
const q16_1 = u5_1 ^ q17_1;
|
|
898
|
+
const q0_1 = z24_1 ^ q16_1;
|
|
899
|
+
const q7_1 = z24_1 ^ u1_1 ^ u6_1;
|
|
900
|
+
const q2_1 = u2_1 ^ q0_1;
|
|
901
|
+
const q1_1 = q7_1 ^ q2_1;
|
|
902
|
+
const q3_1 = u0_1 ^ q7_1;
|
|
903
|
+
const q4_1 = u0_1 ^ q2_1;
|
|
904
|
+
const q5_1 = u1_1 ^ q4_1;
|
|
905
|
+
const q6_1 = u2_1 ^ u3_1;
|
|
906
|
+
const q10_1 = q6_1 ^ q7_1;
|
|
907
|
+
const q8_1 = u0_1 ^ q10_1;
|
|
908
|
+
const q9_1 = q8_1 ^ q2_1;
|
|
909
|
+
const q12_1 = z24_1 ^ q17_1;
|
|
910
|
+
const q15_1 = u7_1 ^ q4_1;
|
|
911
|
+
const m02_1 = u0_1 ^ u2_1;
|
|
912
|
+
const m15_1 = u1_1 ^ u5_1;
|
|
913
|
+
const q13_1 = m02_1 ^ m15_1;
|
|
914
|
+
const q14_1 = m02_1 ^ u7_1;
|
|
915
|
+
const q11_1 = u5_1;
|
|
916
|
+
const t20_1 = q6_1 & q12_1;
|
|
917
|
+
const t21_1 = q3_1 & q14_1;
|
|
918
|
+
const t22_1 = q1_1 & q16_1;
|
|
919
|
+
const t23_1 = q2_1 & q17_1;
|
|
920
|
+
const x0_1 = (q3_1 | q14_1) ^ (q0_1 & q7_1) ^ (t20_1 ^ t22_1);
|
|
921
|
+
const x1_1 = (q4_1 | q13_1) ^ (q10_1 & q11_1) ^ (t21_1 ^ t20_1);
|
|
922
|
+
const x2_1 = (q2_1 | q17_1) ^ (q5_1 & q9_1) ^ (t21_1 ^ t22_1);
|
|
923
|
+
const x3_1 = (q8_1 | q15_1) ^ t23_1 ^ (t21_1 ^ (q4_1 & q13_1));
|
|
924
|
+
const va_1 = x1_1 & ~x3_1;
|
|
925
|
+
const vb_1 = x0_1 & ~x3_1;
|
|
926
|
+
const vc_1 = x3_1 & ~x1_1;
|
|
927
|
+
const vd_1 = x2_1 & ~x1_1;
|
|
928
|
+
const ve_1 = x0_1 ^ va_1;
|
|
929
|
+
const y0_1 = x3_1 ^ (x2_1 & ~ve_1);
|
|
930
|
+
const vf_1 = x1_1 ^ vb_1;
|
|
931
|
+
const y1_1 = vc_1 ^ (x2_1 & vf_1);
|
|
932
|
+
const vg_1 = x2_1 ^ vc_1;
|
|
933
|
+
const y2_1 = x1_1 ^ (x0_1 & ~vg_1);
|
|
934
|
+
const vh_1 = x3_1 ^ vd_1;
|
|
935
|
+
const y3_1 = va_1 ^ (x0_1 & vh_1);
|
|
936
|
+
const y02_1 = y2_1 ^ y0_1;
|
|
937
|
+
const y13_1 = y3_1 ^ y1_1;
|
|
938
|
+
const y23_1 = y3_1 ^ y2_1;
|
|
939
|
+
const y01_1 = y1_1 ^ y0_1;
|
|
940
|
+
const y00_1 = y02_1 ^ y13_1;
|
|
941
|
+
const a0_1 = y01_1 & q11_1;
|
|
942
|
+
const a1_1 = y0_1 & q12_1;
|
|
943
|
+
const a2_1 = y1_1 & q0_1;
|
|
944
|
+
const a3_1 = y23_1 & q17_1;
|
|
945
|
+
const a4_1 = y2_1 & q5_1;
|
|
946
|
+
const a5_1 = y3_1 & q15_1;
|
|
947
|
+
const a6_1 = y13_1 & q14_1;
|
|
948
|
+
const a7_1 = y00_1 & q16_1;
|
|
949
|
+
const a8_1 = y02_1 & q13_1;
|
|
950
|
+
const a9_1 = y01_1 & q7_1;
|
|
951
|
+
const a10_1 = y0_1 & q10_1;
|
|
952
|
+
const a11_1 = y1_1 & q6_1;
|
|
953
|
+
const a12_1 = y23_1 & q2_1;
|
|
954
|
+
const a13_1 = y2_1 & q9_1;
|
|
955
|
+
const a14_1 = y3_1 & q8_1;
|
|
956
|
+
const a15_1 = y13_1 & q3_1;
|
|
957
|
+
const a16_1 = y00_1 & q1_1;
|
|
958
|
+
const a17_1 = y02_1 & q4_1;
|
|
959
|
+
const r0_1 = a1_1 ^ a5_1;
|
|
960
|
+
const r1_1 = a9_1 ^ a15_1;
|
|
961
|
+
const r2_1 = a4_1 ^ r0_1;
|
|
962
|
+
const r3_1 = a2_1 ^ a10_1;
|
|
963
|
+
const r4_1 = a11_1 ^ a17_1;
|
|
964
|
+
const r5_1 = a8_1 ^ r1_1;
|
|
965
|
+
const r6_1 = a0_1 ^ a16_1;
|
|
966
|
+
const r7_1 = a7_1 ^ a13_1;
|
|
967
|
+
const r8_1 = a11_1 ^ a14_1;
|
|
968
|
+
const r9_1 = r3_1 ^ r4_1;
|
|
969
|
+
const r10_1 = r5_1 ^ r6_1;
|
|
970
|
+
const r11_1 = r2_1 ^ r9_1;
|
|
971
|
+
const r12_1 = a3_1 ^ r0_1;
|
|
972
|
+
const r13_1 = r7_1 ^ r8_1;
|
|
973
|
+
const r14_1 = r12_1 ^ r13_1;
|
|
974
|
+
const o0_1 = r10_1 ^ r14_1;
|
|
975
|
+
const r15_1 = a6_1 ^ a10_1;
|
|
976
|
+
const r16_1 = r15_1 ^ r2_1;
|
|
977
|
+
const o1_1 = ~(r10_1 ^ r16_1);
|
|
978
|
+
const o2_1 = ~(a2_1 ^ r2_1);
|
|
979
|
+
const r17_1 = a12_1 ^ a13_1;
|
|
980
|
+
const r18_1 = a15_1 ^ r17_1;
|
|
981
|
+
const o3_1 = r18_1 ^ r11_1;
|
|
982
|
+
const r19_1 = a1_1 ^ a14_1;
|
|
983
|
+
const r20_1 = a17_1 ^ r3_1;
|
|
984
|
+
const r21_1 = r7_1 ^ r19_1;
|
|
985
|
+
const r22_1 = r5_1 ^ r20_1;
|
|
986
|
+
const o4_1 = r21_1 ^ r22_1;
|
|
987
|
+
const r23_1 = a9_1 ^ a12_1;
|
|
988
|
+
const o5_1 = r8_1 ^ r23_1;
|
|
989
|
+
const o6_1 = ~(r1_1 ^ r4_1);
|
|
990
|
+
const o7_1 = ~(a16_1 ^ r11_1);
|
|
991
|
+
const u0_2 = st[2];
|
|
992
|
+
const u1_2 = st[6];
|
|
993
|
+
const u2_2 = st[10];
|
|
994
|
+
const u3_2 = st[14];
|
|
995
|
+
const u4_2 = st[18];
|
|
996
|
+
const u5_2 = st[22];
|
|
997
|
+
const u6_2 = st[26];
|
|
998
|
+
const u7_2 = st[30];
|
|
999
|
+
const z24_2 = u3_2 ^ u4_2;
|
|
1000
|
+
const q17_2 = u1_2 ^ u7_2;
|
|
1001
|
+
const q16_2 = u5_2 ^ q17_2;
|
|
1002
|
+
const q0_2 = z24_2 ^ q16_2;
|
|
1003
|
+
const q7_2 = z24_2 ^ u1_2 ^ u6_2;
|
|
1004
|
+
const q2_2 = u2_2 ^ q0_2;
|
|
1005
|
+
const q1_2 = q7_2 ^ q2_2;
|
|
1006
|
+
const q3_2 = u0_2 ^ q7_2;
|
|
1007
|
+
const q4_2 = u0_2 ^ q2_2;
|
|
1008
|
+
const q5_2 = u1_2 ^ q4_2;
|
|
1009
|
+
const q6_2 = u2_2 ^ u3_2;
|
|
1010
|
+
const q10_2 = q6_2 ^ q7_2;
|
|
1011
|
+
const q8_2 = u0_2 ^ q10_2;
|
|
1012
|
+
const q9_2 = q8_2 ^ q2_2;
|
|
1013
|
+
const q12_2 = z24_2 ^ q17_2;
|
|
1014
|
+
const q15_2 = u7_2 ^ q4_2;
|
|
1015
|
+
const m02_2 = u0_2 ^ u2_2;
|
|
1016
|
+
const m15_2 = u1_2 ^ u5_2;
|
|
1017
|
+
const q13_2 = m02_2 ^ m15_2;
|
|
1018
|
+
const q14_2 = m02_2 ^ u7_2;
|
|
1019
|
+
const q11_2 = u5_2;
|
|
1020
|
+
const t20_2 = q6_2 & q12_2;
|
|
1021
|
+
const t21_2 = q3_2 & q14_2;
|
|
1022
|
+
const t22_2 = q1_2 & q16_2;
|
|
1023
|
+
const t23_2 = q2_2 & q17_2;
|
|
1024
|
+
const x0_2 = (q3_2 | q14_2) ^ (q0_2 & q7_2) ^ (t20_2 ^ t22_2);
|
|
1025
|
+
const x1_2 = (q4_2 | q13_2) ^ (q10_2 & q11_2) ^ (t21_2 ^ t20_2);
|
|
1026
|
+
const x2_2 = (q2_2 | q17_2) ^ (q5_2 & q9_2) ^ (t21_2 ^ t22_2);
|
|
1027
|
+
const x3_2 = (q8_2 | q15_2) ^ t23_2 ^ (t21_2 ^ (q4_2 & q13_2));
|
|
1028
|
+
const va_2 = x1_2 & ~x3_2;
|
|
1029
|
+
const vb_2 = x0_2 & ~x3_2;
|
|
1030
|
+
const vc_2 = x3_2 & ~x1_2;
|
|
1031
|
+
const vd_2 = x2_2 & ~x1_2;
|
|
1032
|
+
const ve_2 = x0_2 ^ va_2;
|
|
1033
|
+
const y0_2 = x3_2 ^ (x2_2 & ~ve_2);
|
|
1034
|
+
const vf_2 = x1_2 ^ vb_2;
|
|
1035
|
+
const y1_2 = vc_2 ^ (x2_2 & vf_2);
|
|
1036
|
+
const vg_2 = x2_2 ^ vc_2;
|
|
1037
|
+
const y2_2 = x1_2 ^ (x0_2 & ~vg_2);
|
|
1038
|
+
const vh_2 = x3_2 ^ vd_2;
|
|
1039
|
+
const y3_2 = va_2 ^ (x0_2 & vh_2);
|
|
1040
|
+
const y02_2 = y2_2 ^ y0_2;
|
|
1041
|
+
const y13_2 = y3_2 ^ y1_2;
|
|
1042
|
+
const y23_2 = y3_2 ^ y2_2;
|
|
1043
|
+
const y01_2 = y1_2 ^ y0_2;
|
|
1044
|
+
const y00_2 = y02_2 ^ y13_2;
|
|
1045
|
+
const a0_2 = y01_2 & q11_2;
|
|
1046
|
+
const a1_2 = y0_2 & q12_2;
|
|
1047
|
+
const a2_2 = y1_2 & q0_2;
|
|
1048
|
+
const a3_2 = y23_2 & q17_2;
|
|
1049
|
+
const a4_2 = y2_2 & q5_2;
|
|
1050
|
+
const a5_2 = y3_2 & q15_2;
|
|
1051
|
+
const a6_2 = y13_2 & q14_2;
|
|
1052
|
+
const a7_2 = y00_2 & q16_2;
|
|
1053
|
+
const a8_2 = y02_2 & q13_2;
|
|
1054
|
+
const a9_2 = y01_2 & q7_2;
|
|
1055
|
+
const a10_2 = y0_2 & q10_2;
|
|
1056
|
+
const a11_2 = y1_2 & q6_2;
|
|
1057
|
+
const a12_2 = y23_2 & q2_2;
|
|
1058
|
+
const a13_2 = y2_2 & q9_2;
|
|
1059
|
+
const a14_2 = y3_2 & q8_2;
|
|
1060
|
+
const a15_2 = y13_2 & q3_2;
|
|
1061
|
+
const a16_2 = y00_2 & q1_2;
|
|
1062
|
+
const a17_2 = y02_2 & q4_2;
|
|
1063
|
+
const r0_2 = a1_2 ^ a5_2;
|
|
1064
|
+
const r1_2 = a9_2 ^ a15_2;
|
|
1065
|
+
const r2_2 = a4_2 ^ r0_2;
|
|
1066
|
+
const r3_2 = a2_2 ^ a10_2;
|
|
1067
|
+
const r4_2 = a11_2 ^ a17_2;
|
|
1068
|
+
const r5_2 = a8_2 ^ r1_2;
|
|
1069
|
+
const r6_2 = a0_2 ^ a16_2;
|
|
1070
|
+
const r7_2 = a7_2 ^ a13_2;
|
|
1071
|
+
const r8_2 = a11_2 ^ a14_2;
|
|
1072
|
+
const r9_2 = r3_2 ^ r4_2;
|
|
1073
|
+
const r10_2 = r5_2 ^ r6_2;
|
|
1074
|
+
const r11_2 = r2_2 ^ r9_2;
|
|
1075
|
+
const r12_2 = a3_2 ^ r0_2;
|
|
1076
|
+
const r13_2 = r7_2 ^ r8_2;
|
|
1077
|
+
const r14_2 = r12_2 ^ r13_2;
|
|
1078
|
+
const o0_2 = r10_2 ^ r14_2;
|
|
1079
|
+
const r15_2 = a6_2 ^ a10_2;
|
|
1080
|
+
const r16_2 = r15_2 ^ r2_2;
|
|
1081
|
+
const o1_2 = ~(r10_2 ^ r16_2);
|
|
1082
|
+
const o2_2 = ~(a2_2 ^ r2_2);
|
|
1083
|
+
const r17_2 = a12_2 ^ a13_2;
|
|
1084
|
+
const r18_2 = a15_2 ^ r17_2;
|
|
1085
|
+
const o3_2 = r18_2 ^ r11_2;
|
|
1086
|
+
const r19_2 = a1_2 ^ a14_2;
|
|
1087
|
+
const r20_2 = a17_2 ^ r3_2;
|
|
1088
|
+
const r21_2 = r7_2 ^ r19_2;
|
|
1089
|
+
const r22_2 = r5_2 ^ r20_2;
|
|
1090
|
+
const o4_2 = r21_2 ^ r22_2;
|
|
1091
|
+
const r23_2 = a9_2 ^ a12_2;
|
|
1092
|
+
const o5_2 = r8_2 ^ r23_2;
|
|
1093
|
+
const o6_2 = ~(r1_2 ^ r4_2);
|
|
1094
|
+
const o7_2 = ~(a16_2 ^ r11_2);
|
|
1095
|
+
const u0_3 = st[3];
|
|
1096
|
+
const u1_3 = st[7];
|
|
1097
|
+
const u2_3 = st[11];
|
|
1098
|
+
const u3_3 = st[15];
|
|
1099
|
+
const u4_3 = st[19];
|
|
1100
|
+
const u5_3 = st[23];
|
|
1101
|
+
const u6_3 = st[27];
|
|
1102
|
+
const u7_3 = st[31];
|
|
1103
|
+
const z24_3 = u3_3 ^ u4_3;
|
|
1104
|
+
const q17_3 = u1_3 ^ u7_3;
|
|
1105
|
+
const q16_3 = u5_3 ^ q17_3;
|
|
1106
|
+
const q0_3 = z24_3 ^ q16_3;
|
|
1107
|
+
const q7_3 = z24_3 ^ u1_3 ^ u6_3;
|
|
1108
|
+
const q2_3 = u2_3 ^ q0_3;
|
|
1109
|
+
const q1_3 = q7_3 ^ q2_3;
|
|
1110
|
+
const q3_3 = u0_3 ^ q7_3;
|
|
1111
|
+
const q4_3 = u0_3 ^ q2_3;
|
|
1112
|
+
const q5_3 = u1_3 ^ q4_3;
|
|
1113
|
+
const q6_3 = u2_3 ^ u3_3;
|
|
1114
|
+
const q10_3 = q6_3 ^ q7_3;
|
|
1115
|
+
const q8_3 = u0_3 ^ q10_3;
|
|
1116
|
+
const q9_3 = q8_3 ^ q2_3;
|
|
1117
|
+
const q12_3 = z24_3 ^ q17_3;
|
|
1118
|
+
const q15_3 = u7_3 ^ q4_3;
|
|
1119
|
+
const m02_3 = u0_3 ^ u2_3;
|
|
1120
|
+
const m15_3 = u1_3 ^ u5_3;
|
|
1121
|
+
const q13_3 = m02_3 ^ m15_3;
|
|
1122
|
+
const q14_3 = m02_3 ^ u7_3;
|
|
1123
|
+
const q11_3 = u5_3;
|
|
1124
|
+
const t20_3 = q6_3 & q12_3;
|
|
1125
|
+
const t21_3 = q3_3 & q14_3;
|
|
1126
|
+
const t22_3 = q1_3 & q16_3;
|
|
1127
|
+
const t23_3 = q2_3 & q17_3;
|
|
1128
|
+
const x0_3 = (q3_3 | q14_3) ^ (q0_3 & q7_3) ^ (t20_3 ^ t22_3);
|
|
1129
|
+
const x1_3 = (q4_3 | q13_3) ^ (q10_3 & q11_3) ^ (t21_3 ^ t20_3);
|
|
1130
|
+
const x2_3 = (q2_3 | q17_3) ^ (q5_3 & q9_3) ^ (t21_3 ^ t22_3);
|
|
1131
|
+
const x3_3 = (q8_3 | q15_3) ^ t23_3 ^ (t21_3 ^ (q4_3 & q13_3));
|
|
1132
|
+
const va_3 = x1_3 & ~x3_3;
|
|
1133
|
+
const vb_3 = x0_3 & ~x3_3;
|
|
1134
|
+
const vc_3 = x3_3 & ~x1_3;
|
|
1135
|
+
const vd_3 = x2_3 & ~x1_3;
|
|
1136
|
+
const ve_3 = x0_3 ^ va_3;
|
|
1137
|
+
const y0_3 = x3_3 ^ (x2_3 & ~ve_3);
|
|
1138
|
+
const vf_3 = x1_3 ^ vb_3;
|
|
1139
|
+
const y1_3 = vc_3 ^ (x2_3 & vf_3);
|
|
1140
|
+
const vg_3 = x2_3 ^ vc_3;
|
|
1141
|
+
const y2_3 = x1_3 ^ (x0_3 & ~vg_3);
|
|
1142
|
+
const vh_3 = x3_3 ^ vd_3;
|
|
1143
|
+
const y3_3 = va_3 ^ (x0_3 & vh_3);
|
|
1144
|
+
const y02_3 = y2_3 ^ y0_3;
|
|
1145
|
+
const y13_3 = y3_3 ^ y1_3;
|
|
1146
|
+
const y23_3 = y3_3 ^ y2_3;
|
|
1147
|
+
const y01_3 = y1_3 ^ y0_3;
|
|
1148
|
+
const y00_3 = y02_3 ^ y13_3;
|
|
1149
|
+
const a0_3 = y01_3 & q11_3;
|
|
1150
|
+
const a1_3 = y0_3 & q12_3;
|
|
1151
|
+
const a2_3 = y1_3 & q0_3;
|
|
1152
|
+
const a3_3 = y23_3 & q17_3;
|
|
1153
|
+
const a4_3 = y2_3 & q5_3;
|
|
1154
|
+
const a5_3 = y3_3 & q15_3;
|
|
1155
|
+
const a6_3 = y13_3 & q14_3;
|
|
1156
|
+
const a7_3 = y00_3 & q16_3;
|
|
1157
|
+
const a8_3 = y02_3 & q13_3;
|
|
1158
|
+
const a9_3 = y01_3 & q7_3;
|
|
1159
|
+
const a10_3 = y0_3 & q10_3;
|
|
1160
|
+
const a11_3 = y1_3 & q6_3;
|
|
1161
|
+
const a12_3 = y23_3 & q2_3;
|
|
1162
|
+
const a13_3 = y2_3 & q9_3;
|
|
1163
|
+
const a14_3 = y3_3 & q8_3;
|
|
1164
|
+
const a15_3 = y13_3 & q3_3;
|
|
1165
|
+
const a16_3 = y00_3 & q1_3;
|
|
1166
|
+
const a17_3 = y02_3 & q4_3;
|
|
1167
|
+
const r0_3 = a1_3 ^ a5_3;
|
|
1168
|
+
const r1_3 = a9_3 ^ a15_3;
|
|
1169
|
+
const r2_3 = a4_3 ^ r0_3;
|
|
1170
|
+
const r3_3 = a2_3 ^ a10_3;
|
|
1171
|
+
const r4_3 = a11_3 ^ a17_3;
|
|
1172
|
+
const r5_3 = a8_3 ^ r1_3;
|
|
1173
|
+
const r6_3 = a0_3 ^ a16_3;
|
|
1174
|
+
const r7_3 = a7_3 ^ a13_3;
|
|
1175
|
+
const r8_3 = a11_3 ^ a14_3;
|
|
1176
|
+
const r9_3 = r3_3 ^ r4_3;
|
|
1177
|
+
const r10_3 = r5_3 ^ r6_3;
|
|
1178
|
+
const r11_3 = r2_3 ^ r9_3;
|
|
1179
|
+
const r12_3 = a3_3 ^ r0_3;
|
|
1180
|
+
const r13_3 = r7_3 ^ r8_3;
|
|
1181
|
+
const r14_3 = r12_3 ^ r13_3;
|
|
1182
|
+
const o0_3 = r10_3 ^ r14_3;
|
|
1183
|
+
const r15_3 = a6_3 ^ a10_3;
|
|
1184
|
+
const r16_3 = r15_3 ^ r2_3;
|
|
1185
|
+
const o1_3 = ~(r10_3 ^ r16_3);
|
|
1186
|
+
const o2_3 = ~(a2_3 ^ r2_3);
|
|
1187
|
+
const r17_3 = a12_3 ^ a13_3;
|
|
1188
|
+
const r18_3 = a15_3 ^ r17_3;
|
|
1189
|
+
const o3_3 = r18_3 ^ r11_3;
|
|
1190
|
+
const r19_3 = a1_3 ^ a14_3;
|
|
1191
|
+
const r20_3 = a17_3 ^ r3_3;
|
|
1192
|
+
const r21_3 = r7_3 ^ r19_3;
|
|
1193
|
+
const r22_3 = r5_3 ^ r20_3;
|
|
1194
|
+
const o4_3 = r21_3 ^ r22_3;
|
|
1195
|
+
const r23_3 = a9_3 ^ a12_3;
|
|
1196
|
+
const o5_3 = r8_3 ^ r23_3;
|
|
1197
|
+
const o6_3 = ~(r1_3 ^ r4_3);
|
|
1198
|
+
const o7_3 = ~(a16_3 ^ r11_3);
|
|
1199
|
+
const p0_1 = (o0_1 << 24) | (o0_1 >>> 8);
|
|
1200
|
+
const p0_2 = (o0_2 << 16) | (o0_2 >>> 16);
|
|
1201
|
+
const p0_3 = (o0_3 << 8) | (o0_3 >>> 24);
|
|
1202
|
+
const p1_1 = (o1_1 << 24) | (o1_1 >>> 8);
|
|
1203
|
+
const p1_2 = (o1_2 << 16) | (o1_2 >>> 16);
|
|
1204
|
+
const p1_3 = (o1_3 << 8) | (o1_3 >>> 24);
|
|
1205
|
+
const p2_1 = (o2_1 << 24) | (o2_1 >>> 8);
|
|
1206
|
+
const p2_2 = (o2_2 << 16) | (o2_2 >>> 16);
|
|
1207
|
+
const p2_3 = (o2_3 << 8) | (o2_3 >>> 24);
|
|
1208
|
+
const p3_1 = (o3_1 << 24) | (o3_1 >>> 8);
|
|
1209
|
+
const p3_2 = (o3_2 << 16) | (o3_2 >>> 16);
|
|
1210
|
+
const p3_3 = (o3_3 << 8) | (o3_3 >>> 24);
|
|
1211
|
+
const p4_1 = (o4_1 << 24) | (o4_1 >>> 8);
|
|
1212
|
+
const p4_2 = (o4_2 << 16) | (o4_2 >>> 16);
|
|
1213
|
+
const p4_3 = (o4_3 << 8) | (o4_3 >>> 24);
|
|
1214
|
+
const p5_1 = (o5_1 << 24) | (o5_1 >>> 8);
|
|
1215
|
+
const p5_2 = (o5_2 << 16) | (o5_2 >>> 16);
|
|
1216
|
+
const p5_3 = (o5_3 << 8) | (o5_3 >>> 24);
|
|
1217
|
+
const p6_1 = (o6_1 << 24) | (o6_1 >>> 8);
|
|
1218
|
+
const p6_2 = (o6_2 << 16) | (o6_2 >>> 16);
|
|
1219
|
+
const p6_3 = (o6_3 << 8) | (o6_3 >>> 24);
|
|
1220
|
+
const p7_1 = (o7_1 << 24) | (o7_1 >>> 8);
|
|
1221
|
+
const p7_2 = (o7_2 << 16) | (o7_2 >>> 16);
|
|
1222
|
+
const p7_3 = (o7_3 << 8) | (o7_3 >>> 24);
|
|
1223
|
+
const d0_0 = o0_0 ^ p0_1;
|
|
1224
|
+
const d0_1 = p0_1 ^ p0_2;
|
|
1225
|
+
const d0_2 = p0_2 ^ p0_3;
|
|
1226
|
+
const d0_3 = p0_3 ^ o0_0;
|
|
1227
|
+
const d1_0 = o1_0 ^ p1_1;
|
|
1228
|
+
const d1_1 = p1_1 ^ p1_2;
|
|
1229
|
+
const d1_2 = p1_2 ^ p1_3;
|
|
1230
|
+
const d1_3 = p1_3 ^ o1_0;
|
|
1231
|
+
const d2_0 = o2_0 ^ p2_1;
|
|
1232
|
+
const d2_1 = p2_1 ^ p2_2;
|
|
1233
|
+
const d2_2 = p2_2 ^ p2_3;
|
|
1234
|
+
const d2_3 = p2_3 ^ o2_0;
|
|
1235
|
+
const d3_0 = o3_0 ^ p3_1;
|
|
1236
|
+
const d3_1 = p3_1 ^ p3_2;
|
|
1237
|
+
const d3_2 = p3_2 ^ p3_3;
|
|
1238
|
+
const d3_3 = p3_3 ^ o3_0;
|
|
1239
|
+
const d4_0 = o4_0 ^ p4_1;
|
|
1240
|
+
const d4_1 = p4_1 ^ p4_2;
|
|
1241
|
+
const d4_2 = p4_2 ^ p4_3;
|
|
1242
|
+
const d4_3 = p4_3 ^ o4_0;
|
|
1243
|
+
const d5_0 = o5_0 ^ p5_1;
|
|
1244
|
+
const d5_1 = p5_1 ^ p5_2;
|
|
1245
|
+
const d5_2 = p5_2 ^ p5_3;
|
|
1246
|
+
const d5_3 = p5_3 ^ o5_0;
|
|
1247
|
+
const d6_0 = o6_0 ^ p6_1;
|
|
1248
|
+
const d6_1 = p6_1 ^ p6_2;
|
|
1249
|
+
const d6_2 = p6_2 ^ p6_3;
|
|
1250
|
+
const d6_3 = p6_3 ^ o6_0;
|
|
1251
|
+
const d7_0 = o7_0 ^ p7_1;
|
|
1252
|
+
const d7_1 = p7_1 ^ p7_2;
|
|
1253
|
+
const d7_2 = p7_2 ^ p7_3;
|
|
1254
|
+
const d7_3 = p7_3 ^ o7_0;
|
|
1255
|
+
const m0_0 = d1_0 ^ d0_1 ^ p0_3;
|
|
1256
|
+
const m0_1 = d1_1 ^ d0_2 ^ o0_0;
|
|
1257
|
+
const m0_2 = d1_2 ^ d0_3 ^ p0_1;
|
|
1258
|
+
const m0_3 = d1_3 ^ d0_0 ^ p0_2;
|
|
1259
|
+
const m1_0 = d2_0 ^ d1_1 ^ p1_3;
|
|
1260
|
+
const m1_1 = d2_1 ^ d1_2 ^ o1_0;
|
|
1261
|
+
const m1_2 = d2_2 ^ d1_3 ^ p1_1;
|
|
1262
|
+
const m1_3 = d2_3 ^ d1_0 ^ p1_2;
|
|
1263
|
+
const m2_0 = d3_0 ^ d2_1 ^ p2_3;
|
|
1264
|
+
const m2_1 = d3_1 ^ d2_2 ^ o2_0;
|
|
1265
|
+
const m2_2 = d3_2 ^ d2_3 ^ p2_1;
|
|
1266
|
+
const m2_3 = d3_3 ^ d2_0 ^ p2_2;
|
|
1267
|
+
const m3_0 = d4_0 ^ d3_1 ^ p3_3 ^ d0_0;
|
|
1268
|
+
const m3_1 = d4_1 ^ d3_2 ^ o3_0 ^ d0_1;
|
|
1269
|
+
const m3_2 = d4_2 ^ d3_3 ^ p3_1 ^ d0_2;
|
|
1270
|
+
const m3_3 = d4_3 ^ d3_0 ^ p3_2 ^ d0_3;
|
|
1271
|
+
const m4_0 = d5_0 ^ d4_1 ^ p4_3 ^ d0_0;
|
|
1272
|
+
const m4_1 = d5_1 ^ d4_2 ^ o4_0 ^ d0_1;
|
|
1273
|
+
const m4_2 = d5_2 ^ d4_3 ^ p4_1 ^ d0_2;
|
|
1274
|
+
const m4_3 = d5_3 ^ d4_0 ^ p4_2 ^ d0_3;
|
|
1275
|
+
const m5_0 = d6_0 ^ d5_1 ^ p5_3;
|
|
1276
|
+
const m5_1 = d6_1 ^ d5_2 ^ o5_0;
|
|
1277
|
+
const m5_2 = d6_2 ^ d5_3 ^ p5_1;
|
|
1278
|
+
const m5_3 = d6_3 ^ d5_0 ^ p5_2;
|
|
1279
|
+
const m6_0 = d7_0 ^ d6_1 ^ p6_3 ^ d0_0;
|
|
1280
|
+
const m6_1 = d7_1 ^ d6_2 ^ o6_0 ^ d0_1;
|
|
1281
|
+
const m6_2 = d7_2 ^ d6_3 ^ p6_1 ^ d0_2;
|
|
1282
|
+
const m6_3 = d7_3 ^ d6_0 ^ p6_2 ^ d0_3;
|
|
1283
|
+
const m7_0 = d0_0 ^ d7_1 ^ p7_3;
|
|
1284
|
+
const m7_1 = d0_1 ^ d7_2 ^ o7_0;
|
|
1285
|
+
const m7_2 = d0_2 ^ d7_3 ^ p7_1;
|
|
1286
|
+
const m7_3 = d0_3 ^ d7_0 ^ p7_2;
|
|
1287
|
+
st[0] =
|
|
1288
|
+
st[0] ^
|
|
1289
|
+
ci[0] ^
|
|
1290
|
+
(((m0_0 & 0xf8f8f8f8) >>> 1) | ((m0_0 & 0x04040404) << 5));
|
|
1291
|
+
st[1] =
|
|
1292
|
+
st[1] ^
|
|
1293
|
+
ci[1] ^
|
|
1294
|
+
(((m0_1 & 0xf8f8f8f8) >>> 1) | ((m0_1 & 0x04040404) << 5));
|
|
1295
|
+
st[2] =
|
|
1296
|
+
st[2] ^
|
|
1297
|
+
ci[2] ^
|
|
1298
|
+
(((m0_2 & 0xf8f8f8f8) >>> 1) | ((m0_2 & 0x04040404) << 5));
|
|
1299
|
+
st[3] =
|
|
1300
|
+
st[3] ^
|
|
1301
|
+
ci[3] ^
|
|
1302
|
+
(((m0_3 & 0xf8f8f8f8) >>> 1) | ((m0_3 & 0x04040404) << 5));
|
|
1303
|
+
st[4] =
|
|
1304
|
+
st[4] ^
|
|
1305
|
+
ci[4] ^
|
|
1306
|
+
(((m1_0 & 0xf8f8f8f8) >>> 1) | ((m1_0 & 0x04040404) << 5));
|
|
1307
|
+
st[5] =
|
|
1308
|
+
st[5] ^
|
|
1309
|
+
ci[5] ^
|
|
1310
|
+
(((m1_1 & 0xf8f8f8f8) >>> 1) | ((m1_1 & 0x04040404) << 5));
|
|
1311
|
+
st[6] =
|
|
1312
|
+
st[6] ^
|
|
1313
|
+
ci[6] ^
|
|
1314
|
+
(((m1_2 & 0xf8f8f8f8) >>> 1) | ((m1_2 & 0x04040404) << 5));
|
|
1315
|
+
st[7] =
|
|
1316
|
+
st[7] ^
|
|
1317
|
+
ci[7] ^
|
|
1318
|
+
(((m1_3 & 0xf8f8f8f8) >>> 1) | ((m1_3 & 0x04040404) << 5));
|
|
1319
|
+
st[8] =
|
|
1320
|
+
st[8] ^
|
|
1321
|
+
ci[8] ^
|
|
1322
|
+
(((m2_0 & 0xf8f8f8f8) >>> 1) | ((m2_0 & 0x04040404) << 5));
|
|
1323
|
+
st[9] =
|
|
1324
|
+
st[9] ^
|
|
1325
|
+
ci[9] ^
|
|
1326
|
+
(((m2_1 & 0xf8f8f8f8) >>> 1) | ((m2_1 & 0x04040404) << 5));
|
|
1327
|
+
st[10] =
|
|
1328
|
+
st[10] ^
|
|
1329
|
+
ci[10] ^
|
|
1330
|
+
(((m2_2 & 0xf8f8f8f8) >>> 1) | ((m2_2 & 0x04040404) << 5));
|
|
1331
|
+
st[11] =
|
|
1332
|
+
st[11] ^
|
|
1333
|
+
ci[11] ^
|
|
1334
|
+
(((m2_3 & 0xf8f8f8f8) >>> 1) | ((m2_3 & 0x04040404) << 5));
|
|
1335
|
+
st[12] =
|
|
1336
|
+
st[12] ^
|
|
1337
|
+
ci[12] ^
|
|
1338
|
+
(((m3_0 & 0xf8f8f8f8) >>> 1) | ((m3_0 & 0x04040404) << 5));
|
|
1339
|
+
st[13] =
|
|
1340
|
+
st[13] ^
|
|
1341
|
+
ci[13] ^
|
|
1342
|
+
(((m3_1 & 0xf8f8f8f8) >>> 1) | ((m3_1 & 0x04040404) << 5));
|
|
1343
|
+
st[14] =
|
|
1344
|
+
st[14] ^
|
|
1345
|
+
ci[14] ^
|
|
1346
|
+
(((m3_2 & 0xf8f8f8f8) >>> 1) | ((m3_2 & 0x04040404) << 5));
|
|
1347
|
+
st[15] =
|
|
1348
|
+
st[15] ^
|
|
1349
|
+
ci[15] ^
|
|
1350
|
+
(((m3_3 & 0xf8f8f8f8) >>> 1) | ((m3_3 & 0x04040404) << 5));
|
|
1351
|
+
st[16] =
|
|
1352
|
+
st[16] ^
|
|
1353
|
+
ci[16] ^
|
|
1354
|
+
(((m4_0 & 0xf8f8f8f8) >>> 1) | ((m4_0 & 0x04040404) << 5));
|
|
1355
|
+
st[17] =
|
|
1356
|
+
st[17] ^
|
|
1357
|
+
ci[17] ^
|
|
1358
|
+
(((m4_1 & 0xf8f8f8f8) >>> 1) | ((m4_1 & 0x04040404) << 5));
|
|
1359
|
+
st[18] =
|
|
1360
|
+
st[18] ^
|
|
1361
|
+
ci[18] ^
|
|
1362
|
+
(((m4_2 & 0xf8f8f8f8) >>> 1) | ((m4_2 & 0x04040404) << 5));
|
|
1363
|
+
st[19] =
|
|
1364
|
+
st[19] ^
|
|
1365
|
+
ci[19] ^
|
|
1366
|
+
(((m4_3 & 0xf8f8f8f8) >>> 1) | ((m4_3 & 0x04040404) << 5));
|
|
1367
|
+
st[20] =
|
|
1368
|
+
st[20] ^
|
|
1369
|
+
ci[20] ^
|
|
1370
|
+
(((m5_0 & 0xf8f8f8f8) >>> 1) | ((m5_0 & 0x04040404) << 5));
|
|
1371
|
+
st[21] =
|
|
1372
|
+
st[21] ^
|
|
1373
|
+
ci[21] ^
|
|
1374
|
+
(((m5_1 & 0xf8f8f8f8) >>> 1) | ((m5_1 & 0x04040404) << 5));
|
|
1375
|
+
st[22] =
|
|
1376
|
+
st[22] ^
|
|
1377
|
+
ci[22] ^
|
|
1378
|
+
(((m5_2 & 0xf8f8f8f8) >>> 1) | ((m5_2 & 0x04040404) << 5));
|
|
1379
|
+
st[23] =
|
|
1380
|
+
st[23] ^
|
|
1381
|
+
ci[23] ^
|
|
1382
|
+
(((m5_3 & 0xf8f8f8f8) >>> 1) | ((m5_3 & 0x04040404) << 5));
|
|
1383
|
+
st[24] =
|
|
1384
|
+
st[24] ^
|
|
1385
|
+
ci[24] ^
|
|
1386
|
+
(((m6_0 & 0xf8f8f8f8) >>> 1) | ((m6_0 & 0x04040404) << 5));
|
|
1387
|
+
st[25] =
|
|
1388
|
+
st[25] ^
|
|
1389
|
+
ci[25] ^
|
|
1390
|
+
(((m6_1 & 0xf8f8f8f8) >>> 1) | ((m6_1 & 0x04040404) << 5));
|
|
1391
|
+
st[26] =
|
|
1392
|
+
st[26] ^
|
|
1393
|
+
ci[26] ^
|
|
1394
|
+
(((m6_2 & 0xf8f8f8f8) >>> 1) | ((m6_2 & 0x04040404) << 5));
|
|
1395
|
+
st[27] =
|
|
1396
|
+
st[27] ^
|
|
1397
|
+
ci[27] ^
|
|
1398
|
+
(((m6_3 & 0xf8f8f8f8) >>> 1) | ((m6_3 & 0x04040404) << 5));
|
|
1399
|
+
st[28] =
|
|
1400
|
+
st[28] ^
|
|
1401
|
+
ci[28] ^
|
|
1402
|
+
(((m7_0 & 0xf8f8f8f8) >>> 1) | ((m7_0 & 0x04040404) << 5));
|
|
1403
|
+
st[29] =
|
|
1404
|
+
st[29] ^
|
|
1405
|
+
ci[29] ^
|
|
1406
|
+
(((m7_1 & 0xf8f8f8f8) >>> 1) | ((m7_1 & 0x04040404) << 5));
|
|
1407
|
+
st[30] =
|
|
1408
|
+
st[30] ^
|
|
1409
|
+
ci[30] ^
|
|
1410
|
+
(((m7_2 & 0xf8f8f8f8) >>> 1) | ((m7_2 & 0x04040404) << 5));
|
|
1411
|
+
st[31] =
|
|
1412
|
+
st[31] ^
|
|
1413
|
+
ci[31] ^
|
|
1414
|
+
(((m7_3 & 0xf8f8f8f8) >>> 1) | ((m7_3 & 0x04040404) << 5));
|
|
361
1415
|
}
|
|
362
1416
|
/**
|
|
363
|
-
*
|
|
1417
|
+
* Pack two message blocks (at positions 0 and 4) into a constant-input state
|
|
1418
|
+
* for the AEGIS-128L round. Specialized pack04 exploiting the sparse input.
|
|
364
1419
|
*/
|
|
365
|
-
export function
|
|
366
|
-
const
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
1420
|
+
export function packConstantInput128(out, m0, m1) {
|
|
1421
|
+
const a0 = m0[0];
|
|
1422
|
+
const a1 = m0[1];
|
|
1423
|
+
const a2 = m0[2];
|
|
1424
|
+
const a3 = m0[3];
|
|
1425
|
+
const b0 = m1[0];
|
|
1426
|
+
const b1 = m1[1];
|
|
1427
|
+
const b2 = m1[2];
|
|
1428
|
+
const b3 = m1[3];
|
|
1429
|
+
const t0 = (a1 ^ (a0 >>> 8)) & 0x00ff00ff;
|
|
1430
|
+
const t1 = a1 ^ t0;
|
|
1431
|
+
const t2 = a0 ^ (t0 << 8);
|
|
1432
|
+
const t3 = (a3 ^ (a2 >>> 8)) & 0x00ff00ff;
|
|
1433
|
+
const t4 = a3 ^ t3;
|
|
1434
|
+
const t5 = a2 ^ (t3 << 8);
|
|
1435
|
+
const t6 = (b1 ^ (b0 >>> 8)) & 0x00ff00ff;
|
|
1436
|
+
const t7 = b1 ^ t6;
|
|
1437
|
+
const t8 = b0 ^ (t6 << 8);
|
|
1438
|
+
const t9 = (b3 ^ (b2 >>> 8)) & 0x00ff00ff;
|
|
1439
|
+
const t10 = b3 ^ t9;
|
|
1440
|
+
const t11 = b2 ^ (t9 << 8);
|
|
1441
|
+
const t12 = (t5 ^ (t2 >>> 16)) & 0x0000ffff;
|
|
1442
|
+
const t13 = t5 ^ t12;
|
|
1443
|
+
const t14 = t2 ^ (t12 << 16);
|
|
1444
|
+
const t15 = (t11 ^ (t8 >>> 16)) & 0x0000ffff;
|
|
1445
|
+
const t16 = t11 ^ t15;
|
|
1446
|
+
const t17 = t8 ^ (t15 << 16);
|
|
1447
|
+
const t18 = (t4 ^ (t1 >>> 16)) & 0x0000ffff;
|
|
1448
|
+
const t19 = t4 ^ t18;
|
|
1449
|
+
const t20 = t1 ^ (t18 << 16);
|
|
1450
|
+
const t21 = (t10 ^ (t7 >>> 16)) & 0x0000ffff;
|
|
1451
|
+
const t22 = t10 ^ t21;
|
|
1452
|
+
const t23 = t7 ^ (t21 << 16);
|
|
1453
|
+
const t24 = t14 & 0x55555555;
|
|
1454
|
+
const t25 = t14 ^ t24;
|
|
1455
|
+
const t26 = t24 << 1;
|
|
1456
|
+
const t27 = t17 & 0x55555555;
|
|
1457
|
+
const t28 = t17 ^ t27;
|
|
1458
|
+
const t29 = t27 << 1;
|
|
1459
|
+
const t30 = t25 & 0x33333333;
|
|
1460
|
+
const t31 = t25 ^ t30;
|
|
1461
|
+
const t32 = t30 << 2;
|
|
1462
|
+
const t33 = t26 & 0x33333333;
|
|
1463
|
+
const t34 = t26 ^ t33;
|
|
1464
|
+
const t35 = t33 << 2;
|
|
1465
|
+
const t36 = t28 & 0x33333333;
|
|
1466
|
+
const t37 = t28 ^ t36;
|
|
1467
|
+
const t38 = t36 << 2;
|
|
1468
|
+
const t39 = t29 & 0x33333333;
|
|
1469
|
+
const t40 = t29 ^ t39;
|
|
1470
|
+
const t41 = t39 << 2;
|
|
1471
|
+
const t42 = (t31 ^ (t37 >>> 4)) & 0x0f0f0f0f;
|
|
1472
|
+
const t43 = t31 ^ t42;
|
|
1473
|
+
const t44 = t37 ^ (t42 << 4);
|
|
1474
|
+
const t45 = (t34 ^ (t40 >>> 4)) & 0x0f0f0f0f;
|
|
1475
|
+
const t46 = t34 ^ t45;
|
|
1476
|
+
const t47 = t40 ^ (t45 << 4);
|
|
1477
|
+
const t48 = (t32 ^ (t38 >>> 4)) & 0x0f0f0f0f;
|
|
1478
|
+
const t49 = t32 ^ t48;
|
|
1479
|
+
const t50 = t38 ^ (t48 << 4);
|
|
1480
|
+
const t51 = (t35 ^ (t41 >>> 4)) & 0x0f0f0f0f;
|
|
1481
|
+
const t52 = t35 ^ t51;
|
|
1482
|
+
const t53 = t41 ^ (t51 << 4);
|
|
1483
|
+
const t54 = t20 & 0x55555555;
|
|
1484
|
+
const t55 = t20 ^ t54;
|
|
1485
|
+
const t56 = t54 << 1;
|
|
1486
|
+
const t57 = t23 & 0x55555555;
|
|
1487
|
+
const t58 = t23 ^ t57;
|
|
1488
|
+
const t59 = t57 << 1;
|
|
1489
|
+
const t60 = t55 & 0x33333333;
|
|
1490
|
+
const t61 = t55 ^ t60;
|
|
1491
|
+
const t62 = t60 << 2;
|
|
1492
|
+
const t63 = t56 & 0x33333333;
|
|
1493
|
+
const t64 = t56 ^ t63;
|
|
1494
|
+
const t65 = t63 << 2;
|
|
1495
|
+
const t66 = t58 & 0x33333333;
|
|
1496
|
+
const t67 = t58 ^ t66;
|
|
1497
|
+
const t68 = t66 << 2;
|
|
1498
|
+
const t69 = t59 & 0x33333333;
|
|
1499
|
+
const t70 = t59 ^ t69;
|
|
1500
|
+
const t71 = t69 << 2;
|
|
1501
|
+
const t72 = (t61 ^ (t67 >>> 4)) & 0x0f0f0f0f;
|
|
1502
|
+
const t73 = t61 ^ t72;
|
|
1503
|
+
const t74 = t67 ^ (t72 << 4);
|
|
1504
|
+
const t75 = (t64 ^ (t70 >>> 4)) & 0x0f0f0f0f;
|
|
1505
|
+
const t76 = t64 ^ t75;
|
|
1506
|
+
const t77 = t70 ^ (t75 << 4);
|
|
1507
|
+
const t78 = (t62 ^ (t68 >>> 4)) & 0x0f0f0f0f;
|
|
1508
|
+
const t79 = t62 ^ t78;
|
|
1509
|
+
const t80 = t68 ^ (t78 << 4);
|
|
1510
|
+
const t81 = (t65 ^ (t71 >>> 4)) & 0x0f0f0f0f;
|
|
1511
|
+
const t82 = t65 ^ t81;
|
|
1512
|
+
const t83 = t71 ^ (t81 << 4);
|
|
1513
|
+
const t84 = t13 & 0x55555555;
|
|
1514
|
+
const t85 = t13 ^ t84;
|
|
1515
|
+
const t86 = t84 << 1;
|
|
1516
|
+
const t87 = t16 & 0x55555555;
|
|
1517
|
+
const t88 = t16 ^ t87;
|
|
1518
|
+
const t89 = t87 << 1;
|
|
1519
|
+
const t90 = t85 & 0x33333333;
|
|
1520
|
+
const t91 = t85 ^ t90;
|
|
1521
|
+
const t92 = t90 << 2;
|
|
1522
|
+
const t93 = t86 & 0x33333333;
|
|
1523
|
+
const t94 = t86 ^ t93;
|
|
1524
|
+
const t95 = t93 << 2;
|
|
1525
|
+
const t96 = t88 & 0x33333333;
|
|
1526
|
+
const t97 = t88 ^ t96;
|
|
1527
|
+
const t98 = t96 << 2;
|
|
1528
|
+
const t99 = t89 & 0x33333333;
|
|
1529
|
+
const t100 = t89 ^ t99;
|
|
1530
|
+
const t101 = t99 << 2;
|
|
1531
|
+
const t102 = (t91 ^ (t97 >>> 4)) & 0x0f0f0f0f;
|
|
1532
|
+
const t103 = t91 ^ t102;
|
|
1533
|
+
const t104 = t97 ^ (t102 << 4);
|
|
1534
|
+
const t105 = (t94 ^ (t100 >>> 4)) & 0x0f0f0f0f;
|
|
1535
|
+
const t106 = t94 ^ t105;
|
|
1536
|
+
const t107 = t100 ^ (t105 << 4);
|
|
1537
|
+
const t108 = (t92 ^ (t98 >>> 4)) & 0x0f0f0f0f;
|
|
1538
|
+
const t109 = t92 ^ t108;
|
|
1539
|
+
const t110 = t98 ^ (t108 << 4);
|
|
1540
|
+
const t111 = (t95 ^ (t101 >>> 4)) & 0x0f0f0f0f;
|
|
1541
|
+
const t112 = t95 ^ t111;
|
|
1542
|
+
const t113 = t101 ^ (t111 << 4);
|
|
1543
|
+
const t114 = t19 & 0x55555555;
|
|
1544
|
+
const t115 = t19 ^ t114;
|
|
1545
|
+
const t116 = t114 << 1;
|
|
1546
|
+
const t117 = t22 & 0x55555555;
|
|
1547
|
+
const t118 = t22 ^ t117;
|
|
1548
|
+
const t119 = t117 << 1;
|
|
1549
|
+
const t120 = t115 & 0x33333333;
|
|
1550
|
+
const t121 = t115 ^ t120;
|
|
1551
|
+
const t122 = t120 << 2;
|
|
1552
|
+
const t123 = t116 & 0x33333333;
|
|
1553
|
+
const t124 = t116 ^ t123;
|
|
1554
|
+
const t125 = t123 << 2;
|
|
1555
|
+
const t126 = t118 & 0x33333333;
|
|
1556
|
+
const t127 = t118 ^ t126;
|
|
1557
|
+
const t128 = t126 << 2;
|
|
1558
|
+
const t129 = t119 & 0x33333333;
|
|
1559
|
+
const t130 = t119 ^ t129;
|
|
1560
|
+
const t131 = t129 << 2;
|
|
1561
|
+
const t132 = (t121 ^ (t127 >>> 4)) & 0x0f0f0f0f;
|
|
1562
|
+
const t133 = t121 ^ t132;
|
|
1563
|
+
const t134 = t127 ^ (t132 << 4);
|
|
1564
|
+
const t135 = (t124 ^ (t130 >>> 4)) & 0x0f0f0f0f;
|
|
1565
|
+
const t136 = t124 ^ t135;
|
|
1566
|
+
const t137 = t130 ^ (t135 << 4);
|
|
1567
|
+
const t138 = (t122 ^ (t128 >>> 4)) & 0x0f0f0f0f;
|
|
1568
|
+
const t139 = t122 ^ t138;
|
|
1569
|
+
const t140 = t128 ^ (t138 << 4);
|
|
1570
|
+
const t141 = (t125 ^ (t131 >>> 4)) & 0x0f0f0f0f;
|
|
1571
|
+
const t142 = t125 ^ t141;
|
|
1572
|
+
const t143 = t131 ^ (t141 << 4);
|
|
1573
|
+
out[0] = t43;
|
|
1574
|
+
out[1] = t73;
|
|
1575
|
+
out[2] = t103;
|
|
1576
|
+
out[3] = t133;
|
|
1577
|
+
out[4] = t46;
|
|
1578
|
+
out[5] = t76;
|
|
1579
|
+
out[6] = t106;
|
|
1580
|
+
out[7] = t136;
|
|
1581
|
+
out[8] = t49;
|
|
1582
|
+
out[9] = t79;
|
|
1583
|
+
out[10] = t109;
|
|
1584
|
+
out[11] = t139;
|
|
1585
|
+
out[12] = t52;
|
|
1586
|
+
out[13] = t82;
|
|
1587
|
+
out[14] = t112;
|
|
1588
|
+
out[15] = t142;
|
|
1589
|
+
out[16] = t44;
|
|
1590
|
+
out[17] = t74;
|
|
1591
|
+
out[18] = t104;
|
|
1592
|
+
out[19] = t134;
|
|
1593
|
+
out[20] = t47;
|
|
1594
|
+
out[21] = t77;
|
|
1595
|
+
out[22] = t107;
|
|
1596
|
+
out[23] = t137;
|
|
1597
|
+
out[24] = t50;
|
|
1598
|
+
out[25] = t80;
|
|
1599
|
+
out[26] = t110;
|
|
1600
|
+
out[27] = t140;
|
|
1601
|
+
out[28] = t53;
|
|
1602
|
+
out[29] = t83;
|
|
1603
|
+
out[30] = t113;
|
|
1604
|
+
out[31] = t143;
|
|
371
1605
|
}
|
|
372
1606
|
/**
|
|
373
|
-
*
|
|
1607
|
+
* Pack one message block (at position 0) into a constant-input state for the
|
|
1608
|
+
* AEGIS-256 round. Specialized pack04_6 exploiting the sparse input.
|
|
374
1609
|
*/
|
|
375
|
-
export function
|
|
376
|
-
const
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
1610
|
+
export function packConstantInput256(out, m) {
|
|
1611
|
+
const a0 = m[0];
|
|
1612
|
+
const a1 = m[1];
|
|
1613
|
+
const a2 = m[2];
|
|
1614
|
+
const a3 = m[3];
|
|
1615
|
+
const t0 = (a1 ^ (a0 >>> 8)) & 0x00ff00ff;
|
|
1616
|
+
const t1 = a1 ^ t0;
|
|
1617
|
+
const t2 = a0 ^ (t0 << 8);
|
|
1618
|
+
const t3 = (a3 ^ (a2 >>> 8)) & 0x00ff00ff;
|
|
1619
|
+
const t4 = a3 ^ t3;
|
|
1620
|
+
const t5 = a2 ^ (t3 << 8);
|
|
1621
|
+
const t6 = (t5 ^ (t2 >>> 16)) & 0x0000ffff;
|
|
1622
|
+
const t7 = t5 ^ t6;
|
|
1623
|
+
const t8 = t2 ^ (t6 << 16);
|
|
1624
|
+
const t9 = (t4 ^ (t1 >>> 16)) & 0x0000ffff;
|
|
1625
|
+
const t10 = t4 ^ t9;
|
|
1626
|
+
const t11 = t1 ^ (t9 << 16);
|
|
1627
|
+
const t12 = t8 & 0x55555555;
|
|
1628
|
+
const t13 = t8 ^ t12;
|
|
1629
|
+
const t14 = t12 << 1;
|
|
1630
|
+
const t15 = t13 & 0x33333333;
|
|
1631
|
+
const t16 = t13 ^ t15;
|
|
1632
|
+
const t17 = t15 << 2;
|
|
1633
|
+
const t18 = t14 & 0x33333333;
|
|
1634
|
+
const t19 = t14 ^ t18;
|
|
1635
|
+
const t20 = t18 << 2;
|
|
1636
|
+
const t21 = t16 & 0x0f0f0f0f;
|
|
1637
|
+
const t22 = t16 ^ t21;
|
|
1638
|
+
const t23 = t21 << 4;
|
|
1639
|
+
const t24 = t19 & 0x0f0f0f0f;
|
|
1640
|
+
const t25 = t19 ^ t24;
|
|
1641
|
+
const t26 = t24 << 4;
|
|
1642
|
+
const t27 = t17 & 0x0f0f0f0f;
|
|
1643
|
+
const t28 = t17 ^ t27;
|
|
1644
|
+
const t29 = t27 << 4;
|
|
1645
|
+
const t30 = t20 & 0x0f0f0f0f;
|
|
1646
|
+
const t31 = t20 ^ t30;
|
|
1647
|
+
const t32 = t30 << 4;
|
|
1648
|
+
const t33 = t11 & 0x55555555;
|
|
1649
|
+
const t34 = t11 ^ t33;
|
|
1650
|
+
const t35 = t33 << 1;
|
|
1651
|
+
const t36 = t34 & 0x33333333;
|
|
1652
|
+
const t37 = t34 ^ t36;
|
|
1653
|
+
const t38 = t36 << 2;
|
|
1654
|
+
const t39 = t35 & 0x33333333;
|
|
1655
|
+
const t40 = t35 ^ t39;
|
|
1656
|
+
const t41 = t39 << 2;
|
|
1657
|
+
const t42 = t37 & 0x0f0f0f0f;
|
|
1658
|
+
const t43 = t37 ^ t42;
|
|
1659
|
+
const t44 = t42 << 4;
|
|
1660
|
+
const t45 = t40 & 0x0f0f0f0f;
|
|
1661
|
+
const t46 = t40 ^ t45;
|
|
1662
|
+
const t47 = t45 << 4;
|
|
1663
|
+
const t48 = t38 & 0x0f0f0f0f;
|
|
1664
|
+
const t49 = t38 ^ t48;
|
|
1665
|
+
const t50 = t48 << 4;
|
|
1666
|
+
const t51 = t41 & 0x0f0f0f0f;
|
|
1667
|
+
const t52 = t41 ^ t51;
|
|
1668
|
+
const t53 = t51 << 4;
|
|
1669
|
+
const t54 = t7 & 0x55555555;
|
|
1670
|
+
const t55 = t7 ^ t54;
|
|
1671
|
+
const t56 = t54 << 1;
|
|
1672
|
+
const t57 = t55 & 0x33333333;
|
|
1673
|
+
const t58 = t55 ^ t57;
|
|
1674
|
+
const t59 = t57 << 2;
|
|
1675
|
+
const t60 = t56 & 0x33333333;
|
|
1676
|
+
const t61 = t56 ^ t60;
|
|
1677
|
+
const t62 = t60 << 2;
|
|
1678
|
+
const t63 = t58 & 0x0f0f0f0f;
|
|
1679
|
+
const t64 = t58 ^ t63;
|
|
1680
|
+
const t65 = t63 << 4;
|
|
1681
|
+
const t66 = t61 & 0x0f0f0f0f;
|
|
1682
|
+
const t67 = t61 ^ t66;
|
|
1683
|
+
const t68 = t66 << 4;
|
|
1684
|
+
const t69 = t59 & 0x0f0f0f0f;
|
|
1685
|
+
const t70 = t59 ^ t69;
|
|
1686
|
+
const t71 = t69 << 4;
|
|
1687
|
+
const t72 = t62 & 0x0f0f0f0f;
|
|
1688
|
+
const t73 = t62 ^ t72;
|
|
1689
|
+
const t74 = t72 << 4;
|
|
1690
|
+
const t75 = t10 & 0x55555555;
|
|
1691
|
+
const t76 = t10 ^ t75;
|
|
1692
|
+
const t77 = t75 << 1;
|
|
1693
|
+
const t78 = t76 & 0x33333333;
|
|
1694
|
+
const t79 = t76 ^ t78;
|
|
1695
|
+
const t80 = t78 << 2;
|
|
1696
|
+
const t81 = t77 & 0x33333333;
|
|
1697
|
+
const t82 = t77 ^ t81;
|
|
1698
|
+
const t83 = t81 << 2;
|
|
1699
|
+
const t84 = t79 & 0x0f0f0f0f;
|
|
1700
|
+
const t85 = t79 ^ t84;
|
|
1701
|
+
const t86 = t84 << 4;
|
|
1702
|
+
const t87 = t82 & 0x0f0f0f0f;
|
|
1703
|
+
const t88 = t82 ^ t87;
|
|
1704
|
+
const t89 = t87 << 4;
|
|
1705
|
+
const t90 = t80 & 0x0f0f0f0f;
|
|
1706
|
+
const t91 = t80 ^ t90;
|
|
1707
|
+
const t92 = t90 << 4;
|
|
1708
|
+
const t93 = t83 & 0x0f0f0f0f;
|
|
1709
|
+
const t94 = t83 ^ t93;
|
|
1710
|
+
const t95 = t93 << 4;
|
|
1711
|
+
out[0] = t22;
|
|
1712
|
+
out[1] = t43;
|
|
1713
|
+
out[2] = t64;
|
|
1714
|
+
out[3] = t85;
|
|
1715
|
+
out[4] = t25;
|
|
1716
|
+
out[5] = t46;
|
|
1717
|
+
out[6] = t67;
|
|
1718
|
+
out[7] = t88;
|
|
1719
|
+
out[8] = t28;
|
|
1720
|
+
out[9] = t49;
|
|
1721
|
+
out[10] = t70;
|
|
1722
|
+
out[11] = t91;
|
|
1723
|
+
out[12] = t31;
|
|
1724
|
+
out[13] = t52;
|
|
1725
|
+
out[14] = t73;
|
|
1726
|
+
out[15] = t94;
|
|
1727
|
+
out[16] = t23;
|
|
1728
|
+
out[17] = t44;
|
|
1729
|
+
out[18] = t65;
|
|
1730
|
+
out[19] = t86;
|
|
1731
|
+
out[20] = t26;
|
|
1732
|
+
out[21] = t47;
|
|
1733
|
+
out[22] = t68;
|
|
1734
|
+
out[23] = t89;
|
|
1735
|
+
out[24] = t29;
|
|
1736
|
+
out[25] = t50;
|
|
1737
|
+
out[26] = t71;
|
|
1738
|
+
out[27] = t92;
|
|
1739
|
+
out[28] = t32;
|
|
1740
|
+
out[29] = t53;
|
|
1741
|
+
out[30] = t74;
|
|
1742
|
+
out[31] = t95;
|
|
381
1743
|
}
|
|
382
1744
|
/**
|
|
383
|
-
*
|
|
1745
|
+
* AEGIS-128L keystream extraction from the packed state:
|
|
1746
|
+
* z0 = S6 ^ S1 ^ (S2 & S3), z1 = S2 ^ S5 ^ (S6 & S7), computed lane-wise,
|
|
1747
|
+
* then unpacked (unpack04 restricted to the words feeding blocks 0 and 4).
|
|
384
1748
|
*/
|
|
385
|
-
export function
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
1749
|
+
export function keystream128(st, z0, z1) {
|
|
1750
|
+
const x0 = st[0];
|
|
1751
|
+
const c0 = ((x0 & 0x02020202) << 6) ^
|
|
1752
|
+
((x0 & 0x40404040) << 1) ^
|
|
1753
|
+
((x0 & (x0 >>> 1) & 0x10101010) << 3) ^
|
|
1754
|
+
((x0 & 0x20202020) >>> 2) ^
|
|
1755
|
+
((x0 & 0x04040404) << 1) ^
|
|
1756
|
+
((x0 & (x0 >>> 1) & 0x01010101) << 3);
|
|
1757
|
+
const x1 = st[1];
|
|
1758
|
+
const c1 = ((x1 & 0x02020202) << 6) ^
|
|
1759
|
+
((x1 & 0x40404040) << 1) ^
|
|
1760
|
+
((x1 & (x1 >>> 1) & 0x10101010) << 3) ^
|
|
1761
|
+
((x1 & 0x20202020) >>> 2) ^
|
|
1762
|
+
((x1 & 0x04040404) << 1) ^
|
|
1763
|
+
((x1 & (x1 >>> 1) & 0x01010101) << 3);
|
|
1764
|
+
const x2 = st[2];
|
|
1765
|
+
const c2 = ((x2 & 0x02020202) << 6) ^
|
|
1766
|
+
((x2 & 0x40404040) << 1) ^
|
|
1767
|
+
((x2 & (x2 >>> 1) & 0x10101010) << 3) ^
|
|
1768
|
+
((x2 & 0x20202020) >>> 2) ^
|
|
1769
|
+
((x2 & 0x04040404) << 1) ^
|
|
1770
|
+
((x2 & (x2 >>> 1) & 0x01010101) << 3);
|
|
1771
|
+
const x3 = st[3];
|
|
1772
|
+
const c3 = ((x3 & 0x02020202) << 6) ^
|
|
1773
|
+
((x3 & 0x40404040) << 1) ^
|
|
1774
|
+
((x3 & (x3 >>> 1) & 0x10101010) << 3) ^
|
|
1775
|
+
((x3 & 0x20202020) >>> 2) ^
|
|
1776
|
+
((x3 & 0x04040404) << 1) ^
|
|
1777
|
+
((x3 & (x3 >>> 1) & 0x01010101) << 3);
|
|
1778
|
+
const x4 = st[4];
|
|
1779
|
+
const c4 = ((x4 & 0x02020202) << 6) ^
|
|
1780
|
+
((x4 & 0x40404040) << 1) ^
|
|
1781
|
+
((x4 & (x4 >>> 1) & 0x10101010) << 3) ^
|
|
1782
|
+
((x4 & 0x20202020) >>> 2) ^
|
|
1783
|
+
((x4 & 0x04040404) << 1) ^
|
|
1784
|
+
((x4 & (x4 >>> 1) & 0x01010101) << 3);
|
|
1785
|
+
const x5 = st[5];
|
|
1786
|
+
const c5 = ((x5 & 0x02020202) << 6) ^
|
|
1787
|
+
((x5 & 0x40404040) << 1) ^
|
|
1788
|
+
((x5 & (x5 >>> 1) & 0x10101010) << 3) ^
|
|
1789
|
+
((x5 & 0x20202020) >>> 2) ^
|
|
1790
|
+
((x5 & 0x04040404) << 1) ^
|
|
1791
|
+
((x5 & (x5 >>> 1) & 0x01010101) << 3);
|
|
1792
|
+
const x6 = st[6];
|
|
1793
|
+
const c6 = ((x6 & 0x02020202) << 6) ^
|
|
1794
|
+
((x6 & 0x40404040) << 1) ^
|
|
1795
|
+
((x6 & (x6 >>> 1) & 0x10101010) << 3) ^
|
|
1796
|
+
((x6 & 0x20202020) >>> 2) ^
|
|
1797
|
+
((x6 & 0x04040404) << 1) ^
|
|
1798
|
+
((x6 & (x6 >>> 1) & 0x01010101) << 3);
|
|
1799
|
+
const x7 = st[7];
|
|
1800
|
+
const c7 = ((x7 & 0x02020202) << 6) ^
|
|
1801
|
+
((x7 & 0x40404040) << 1) ^
|
|
1802
|
+
((x7 & (x7 >>> 1) & 0x10101010) << 3) ^
|
|
1803
|
+
((x7 & 0x20202020) >>> 2) ^
|
|
1804
|
+
((x7 & 0x04040404) << 1) ^
|
|
1805
|
+
((x7 & (x7 >>> 1) & 0x01010101) << 3);
|
|
1806
|
+
const x8 = st[8];
|
|
1807
|
+
const c8 = ((x8 & 0x02020202) << 6) ^
|
|
1808
|
+
((x8 & 0x40404040) << 1) ^
|
|
1809
|
+
((x8 & (x8 >>> 1) & 0x10101010) << 3) ^
|
|
1810
|
+
((x8 & 0x20202020) >>> 2) ^
|
|
1811
|
+
((x8 & 0x04040404) << 1) ^
|
|
1812
|
+
((x8 & (x8 >>> 1) & 0x01010101) << 3);
|
|
1813
|
+
const x9 = st[9];
|
|
1814
|
+
const c9 = ((x9 & 0x02020202) << 6) ^
|
|
1815
|
+
((x9 & 0x40404040) << 1) ^
|
|
1816
|
+
((x9 & (x9 >>> 1) & 0x10101010) << 3) ^
|
|
1817
|
+
((x9 & 0x20202020) >>> 2) ^
|
|
1818
|
+
((x9 & 0x04040404) << 1) ^
|
|
1819
|
+
((x9 & (x9 >>> 1) & 0x01010101) << 3);
|
|
1820
|
+
const x10 = st[10];
|
|
1821
|
+
const c10 = ((x10 & 0x02020202) << 6) ^
|
|
1822
|
+
((x10 & 0x40404040) << 1) ^
|
|
1823
|
+
((x10 & (x10 >>> 1) & 0x10101010) << 3) ^
|
|
1824
|
+
((x10 & 0x20202020) >>> 2) ^
|
|
1825
|
+
((x10 & 0x04040404) << 1) ^
|
|
1826
|
+
((x10 & (x10 >>> 1) & 0x01010101) << 3);
|
|
1827
|
+
const x11 = st[11];
|
|
1828
|
+
const c11 = ((x11 & 0x02020202) << 6) ^
|
|
1829
|
+
((x11 & 0x40404040) << 1) ^
|
|
1830
|
+
((x11 & (x11 >>> 1) & 0x10101010) << 3) ^
|
|
1831
|
+
((x11 & 0x20202020) >>> 2) ^
|
|
1832
|
+
((x11 & 0x04040404) << 1) ^
|
|
1833
|
+
((x11 & (x11 >>> 1) & 0x01010101) << 3);
|
|
1834
|
+
const x12 = st[12];
|
|
1835
|
+
const c12 = ((x12 & 0x02020202) << 6) ^
|
|
1836
|
+
((x12 & 0x40404040) << 1) ^
|
|
1837
|
+
((x12 & (x12 >>> 1) & 0x10101010) << 3) ^
|
|
1838
|
+
((x12 & 0x20202020) >>> 2) ^
|
|
1839
|
+
((x12 & 0x04040404) << 1) ^
|
|
1840
|
+
((x12 & (x12 >>> 1) & 0x01010101) << 3);
|
|
1841
|
+
const x13 = st[13];
|
|
1842
|
+
const c13 = ((x13 & 0x02020202) << 6) ^
|
|
1843
|
+
((x13 & 0x40404040) << 1) ^
|
|
1844
|
+
((x13 & (x13 >>> 1) & 0x10101010) << 3) ^
|
|
1845
|
+
((x13 & 0x20202020) >>> 2) ^
|
|
1846
|
+
((x13 & 0x04040404) << 1) ^
|
|
1847
|
+
((x13 & (x13 >>> 1) & 0x01010101) << 3);
|
|
1848
|
+
const x14 = st[14];
|
|
1849
|
+
const c14 = ((x14 & 0x02020202) << 6) ^
|
|
1850
|
+
((x14 & 0x40404040) << 1) ^
|
|
1851
|
+
((x14 & (x14 >>> 1) & 0x10101010) << 3) ^
|
|
1852
|
+
((x14 & 0x20202020) >>> 2) ^
|
|
1853
|
+
((x14 & 0x04040404) << 1) ^
|
|
1854
|
+
((x14 & (x14 >>> 1) & 0x01010101) << 3);
|
|
1855
|
+
const x15 = st[15];
|
|
1856
|
+
const c15 = ((x15 & 0x02020202) << 6) ^
|
|
1857
|
+
((x15 & 0x40404040) << 1) ^
|
|
1858
|
+
((x15 & (x15 >>> 1) & 0x10101010) << 3) ^
|
|
1859
|
+
((x15 & 0x20202020) >>> 2) ^
|
|
1860
|
+
((x15 & 0x04040404) << 1) ^
|
|
1861
|
+
((x15 & (x15 >>> 1) & 0x01010101) << 3);
|
|
1862
|
+
const x16 = st[16];
|
|
1863
|
+
const c16 = ((x16 & 0x02020202) << 6) ^
|
|
1864
|
+
((x16 & 0x40404040) << 1) ^
|
|
1865
|
+
((x16 & (x16 >>> 1) & 0x10101010) << 3) ^
|
|
1866
|
+
((x16 & 0x20202020) >>> 2) ^
|
|
1867
|
+
((x16 & 0x04040404) << 1) ^
|
|
1868
|
+
((x16 & (x16 >>> 1) & 0x01010101) << 3);
|
|
1869
|
+
const x17 = st[17];
|
|
1870
|
+
const c17 = ((x17 & 0x02020202) << 6) ^
|
|
1871
|
+
((x17 & 0x40404040) << 1) ^
|
|
1872
|
+
((x17 & (x17 >>> 1) & 0x10101010) << 3) ^
|
|
1873
|
+
((x17 & 0x20202020) >>> 2) ^
|
|
1874
|
+
((x17 & 0x04040404) << 1) ^
|
|
1875
|
+
((x17 & (x17 >>> 1) & 0x01010101) << 3);
|
|
1876
|
+
const x18 = st[18];
|
|
1877
|
+
const c18 = ((x18 & 0x02020202) << 6) ^
|
|
1878
|
+
((x18 & 0x40404040) << 1) ^
|
|
1879
|
+
((x18 & (x18 >>> 1) & 0x10101010) << 3) ^
|
|
1880
|
+
((x18 & 0x20202020) >>> 2) ^
|
|
1881
|
+
((x18 & 0x04040404) << 1) ^
|
|
1882
|
+
((x18 & (x18 >>> 1) & 0x01010101) << 3);
|
|
1883
|
+
const x19 = st[19];
|
|
1884
|
+
const c19 = ((x19 & 0x02020202) << 6) ^
|
|
1885
|
+
((x19 & 0x40404040) << 1) ^
|
|
1886
|
+
((x19 & (x19 >>> 1) & 0x10101010) << 3) ^
|
|
1887
|
+
((x19 & 0x20202020) >>> 2) ^
|
|
1888
|
+
((x19 & 0x04040404) << 1) ^
|
|
1889
|
+
((x19 & (x19 >>> 1) & 0x01010101) << 3);
|
|
1890
|
+
const x20 = st[20];
|
|
1891
|
+
const c20 = ((x20 & 0x02020202) << 6) ^
|
|
1892
|
+
((x20 & 0x40404040) << 1) ^
|
|
1893
|
+
((x20 & (x20 >>> 1) & 0x10101010) << 3) ^
|
|
1894
|
+
((x20 & 0x20202020) >>> 2) ^
|
|
1895
|
+
((x20 & 0x04040404) << 1) ^
|
|
1896
|
+
((x20 & (x20 >>> 1) & 0x01010101) << 3);
|
|
1897
|
+
const x21 = st[21];
|
|
1898
|
+
const c21 = ((x21 & 0x02020202) << 6) ^
|
|
1899
|
+
((x21 & 0x40404040) << 1) ^
|
|
1900
|
+
((x21 & (x21 >>> 1) & 0x10101010) << 3) ^
|
|
1901
|
+
((x21 & 0x20202020) >>> 2) ^
|
|
1902
|
+
((x21 & 0x04040404) << 1) ^
|
|
1903
|
+
((x21 & (x21 >>> 1) & 0x01010101) << 3);
|
|
1904
|
+
const x22 = st[22];
|
|
1905
|
+
const c22 = ((x22 & 0x02020202) << 6) ^
|
|
1906
|
+
((x22 & 0x40404040) << 1) ^
|
|
1907
|
+
((x22 & (x22 >>> 1) & 0x10101010) << 3) ^
|
|
1908
|
+
((x22 & 0x20202020) >>> 2) ^
|
|
1909
|
+
((x22 & 0x04040404) << 1) ^
|
|
1910
|
+
((x22 & (x22 >>> 1) & 0x01010101) << 3);
|
|
1911
|
+
const x23 = st[23];
|
|
1912
|
+
const c23 = ((x23 & 0x02020202) << 6) ^
|
|
1913
|
+
((x23 & 0x40404040) << 1) ^
|
|
1914
|
+
((x23 & (x23 >>> 1) & 0x10101010) << 3) ^
|
|
1915
|
+
((x23 & 0x20202020) >>> 2) ^
|
|
1916
|
+
((x23 & 0x04040404) << 1) ^
|
|
1917
|
+
((x23 & (x23 >>> 1) & 0x01010101) << 3);
|
|
1918
|
+
const x24 = st[24];
|
|
1919
|
+
const c24 = ((x24 & 0x02020202) << 6) ^
|
|
1920
|
+
((x24 & 0x40404040) << 1) ^
|
|
1921
|
+
((x24 & (x24 >>> 1) & 0x10101010) << 3) ^
|
|
1922
|
+
((x24 & 0x20202020) >>> 2) ^
|
|
1923
|
+
((x24 & 0x04040404) << 1) ^
|
|
1924
|
+
((x24 & (x24 >>> 1) & 0x01010101) << 3);
|
|
1925
|
+
const x25 = st[25];
|
|
1926
|
+
const c25 = ((x25 & 0x02020202) << 6) ^
|
|
1927
|
+
((x25 & 0x40404040) << 1) ^
|
|
1928
|
+
((x25 & (x25 >>> 1) & 0x10101010) << 3) ^
|
|
1929
|
+
((x25 & 0x20202020) >>> 2) ^
|
|
1930
|
+
((x25 & 0x04040404) << 1) ^
|
|
1931
|
+
((x25 & (x25 >>> 1) & 0x01010101) << 3);
|
|
1932
|
+
const x26 = st[26];
|
|
1933
|
+
const c26 = ((x26 & 0x02020202) << 6) ^
|
|
1934
|
+
((x26 & 0x40404040) << 1) ^
|
|
1935
|
+
((x26 & (x26 >>> 1) & 0x10101010) << 3) ^
|
|
1936
|
+
((x26 & 0x20202020) >>> 2) ^
|
|
1937
|
+
((x26 & 0x04040404) << 1) ^
|
|
1938
|
+
((x26 & (x26 >>> 1) & 0x01010101) << 3);
|
|
1939
|
+
const x27 = st[27];
|
|
1940
|
+
const c27 = ((x27 & 0x02020202) << 6) ^
|
|
1941
|
+
((x27 & 0x40404040) << 1) ^
|
|
1942
|
+
((x27 & (x27 >>> 1) & 0x10101010) << 3) ^
|
|
1943
|
+
((x27 & 0x20202020) >>> 2) ^
|
|
1944
|
+
((x27 & 0x04040404) << 1) ^
|
|
1945
|
+
((x27 & (x27 >>> 1) & 0x01010101) << 3);
|
|
1946
|
+
const x28 = st[28];
|
|
1947
|
+
const c28 = ((x28 & 0x02020202) << 6) ^
|
|
1948
|
+
((x28 & 0x40404040) << 1) ^
|
|
1949
|
+
((x28 & (x28 >>> 1) & 0x10101010) << 3) ^
|
|
1950
|
+
((x28 & 0x20202020) >>> 2) ^
|
|
1951
|
+
((x28 & 0x04040404) << 1) ^
|
|
1952
|
+
((x28 & (x28 >>> 1) & 0x01010101) << 3);
|
|
1953
|
+
const x29 = st[29];
|
|
1954
|
+
const c29 = ((x29 & 0x02020202) << 6) ^
|
|
1955
|
+
((x29 & 0x40404040) << 1) ^
|
|
1956
|
+
((x29 & (x29 >>> 1) & 0x10101010) << 3) ^
|
|
1957
|
+
((x29 & 0x20202020) >>> 2) ^
|
|
1958
|
+
((x29 & 0x04040404) << 1) ^
|
|
1959
|
+
((x29 & (x29 >>> 1) & 0x01010101) << 3);
|
|
1960
|
+
const x30 = st[30];
|
|
1961
|
+
const c30 = ((x30 & 0x02020202) << 6) ^
|
|
1962
|
+
((x30 & 0x40404040) << 1) ^
|
|
1963
|
+
((x30 & (x30 >>> 1) & 0x10101010) << 3) ^
|
|
1964
|
+
((x30 & 0x20202020) >>> 2) ^
|
|
1965
|
+
((x30 & 0x04040404) << 1) ^
|
|
1966
|
+
((x30 & (x30 >>> 1) & 0x01010101) << 3);
|
|
1967
|
+
const x31 = st[31];
|
|
1968
|
+
const c31 = ((x31 & 0x02020202) << 6) ^
|
|
1969
|
+
((x31 & 0x40404040) << 1) ^
|
|
1970
|
+
((x31 & (x31 >>> 1) & 0x10101010) << 3) ^
|
|
1971
|
+
((x31 & 0x20202020) >>> 2) ^
|
|
1972
|
+
((x31 & 0x04040404) << 1) ^
|
|
1973
|
+
((x31 & (x31 >>> 1) & 0x01010101) << 3);
|
|
1974
|
+
const t0 = (c12 ^ (c28 >>> 4)) & 0x0f0f0f0f;
|
|
1975
|
+
const t1 = c12 ^ t0;
|
|
1976
|
+
const t2 = c28 ^ (t0 << 4);
|
|
1977
|
+
const t3 = (c8 ^ (c24 >>> 4)) & 0x0f0f0f0f;
|
|
1978
|
+
const t4 = c8 ^ t3;
|
|
1979
|
+
const t5 = c24 ^ (t3 << 4);
|
|
1980
|
+
const t6 = (c4 ^ (c20 >>> 4)) & 0x0f0f0f0f;
|
|
1981
|
+
const t7 = c4 ^ t6;
|
|
1982
|
+
const t8 = c20 ^ (t6 << 4);
|
|
1983
|
+
const t9 = (c0 ^ (c16 >>> 4)) & 0x0f0f0f0f;
|
|
1984
|
+
const t10 = c0 ^ t9;
|
|
1985
|
+
const t11 = c16 ^ (t9 << 4);
|
|
1986
|
+
const t12 = (t8 ^ (t2 >>> 2)) & 0x33333333;
|
|
1987
|
+
const t13 = t8 ^ t12;
|
|
1988
|
+
const t14 = (t11 ^ (t5 >>> 2)) & 0x33333333;
|
|
1989
|
+
const t15 = t11 ^ t14;
|
|
1990
|
+
const t16 = (t7 ^ (t1 >>> 2)) & 0x33333333;
|
|
1991
|
+
const t17 = t7 ^ t16;
|
|
1992
|
+
const t18 = (t10 ^ (t4 >>> 2)) & 0x33333333;
|
|
1993
|
+
const t19 = t10 ^ t18;
|
|
1994
|
+
const t20 = (t15 ^ (t13 >>> 1)) & 0x55555555;
|
|
1995
|
+
const t21 = t15 ^ t20;
|
|
1996
|
+
const t22 = (t19 ^ (t17 >>> 1)) & 0x55555555;
|
|
1997
|
+
const t23 = t19 ^ t22;
|
|
1998
|
+
const t24 = (c13 ^ (c29 >>> 4)) & 0x0f0f0f0f;
|
|
1999
|
+
const t25 = c13 ^ t24;
|
|
2000
|
+
const t26 = c29 ^ (t24 << 4);
|
|
2001
|
+
const t27 = (c9 ^ (c25 >>> 4)) & 0x0f0f0f0f;
|
|
2002
|
+
const t28 = c9 ^ t27;
|
|
2003
|
+
const t29 = c25 ^ (t27 << 4);
|
|
2004
|
+
const t30 = (c5 ^ (c21 >>> 4)) & 0x0f0f0f0f;
|
|
2005
|
+
const t31 = c5 ^ t30;
|
|
2006
|
+
const t32 = c21 ^ (t30 << 4);
|
|
2007
|
+
const t33 = (c1 ^ (c17 >>> 4)) & 0x0f0f0f0f;
|
|
2008
|
+
const t34 = c1 ^ t33;
|
|
2009
|
+
const t35 = c17 ^ (t33 << 4);
|
|
2010
|
+
const t36 = (t32 ^ (t26 >>> 2)) & 0x33333333;
|
|
2011
|
+
const t37 = t32 ^ t36;
|
|
2012
|
+
const t38 = (t35 ^ (t29 >>> 2)) & 0x33333333;
|
|
2013
|
+
const t39 = t35 ^ t38;
|
|
2014
|
+
const t40 = (t31 ^ (t25 >>> 2)) & 0x33333333;
|
|
2015
|
+
const t41 = t31 ^ t40;
|
|
2016
|
+
const t42 = (t34 ^ (t28 >>> 2)) & 0x33333333;
|
|
2017
|
+
const t43 = t34 ^ t42;
|
|
2018
|
+
const t44 = (t39 ^ (t37 >>> 1)) & 0x55555555;
|
|
2019
|
+
const t45 = t39 ^ t44;
|
|
2020
|
+
const t46 = (t43 ^ (t41 >>> 1)) & 0x55555555;
|
|
2021
|
+
const t47 = t43 ^ t46;
|
|
2022
|
+
const t48 = (c14 ^ (c30 >>> 4)) & 0x0f0f0f0f;
|
|
2023
|
+
const t49 = c14 ^ t48;
|
|
2024
|
+
const t50 = c30 ^ (t48 << 4);
|
|
2025
|
+
const t51 = (c10 ^ (c26 >>> 4)) & 0x0f0f0f0f;
|
|
2026
|
+
const t52 = c10 ^ t51;
|
|
2027
|
+
const t53 = c26 ^ (t51 << 4);
|
|
2028
|
+
const t54 = (c6 ^ (c22 >>> 4)) & 0x0f0f0f0f;
|
|
2029
|
+
const t55 = c6 ^ t54;
|
|
2030
|
+
const t56 = c22 ^ (t54 << 4);
|
|
2031
|
+
const t57 = (c2 ^ (c18 >>> 4)) & 0x0f0f0f0f;
|
|
2032
|
+
const t58 = c2 ^ t57;
|
|
2033
|
+
const t59 = c18 ^ (t57 << 4);
|
|
2034
|
+
const t60 = (t56 ^ (t50 >>> 2)) & 0x33333333;
|
|
2035
|
+
const t61 = t56 ^ t60;
|
|
2036
|
+
const t62 = (t59 ^ (t53 >>> 2)) & 0x33333333;
|
|
2037
|
+
const t63 = t59 ^ t62;
|
|
2038
|
+
const t64 = (t55 ^ (t49 >>> 2)) & 0x33333333;
|
|
2039
|
+
const t65 = t55 ^ t64;
|
|
2040
|
+
const t66 = (t58 ^ (t52 >>> 2)) & 0x33333333;
|
|
2041
|
+
const t67 = t58 ^ t66;
|
|
2042
|
+
const t68 = (t63 ^ (t61 >>> 1)) & 0x55555555;
|
|
2043
|
+
const t69 = t63 ^ t68;
|
|
2044
|
+
const t70 = (t67 ^ (t65 >>> 1)) & 0x55555555;
|
|
2045
|
+
const t71 = t67 ^ t70;
|
|
2046
|
+
const t72 = (c15 ^ (c31 >>> 4)) & 0x0f0f0f0f;
|
|
2047
|
+
const t73 = c15 ^ t72;
|
|
2048
|
+
const t74 = c31 ^ (t72 << 4);
|
|
2049
|
+
const t75 = (c11 ^ (c27 >>> 4)) & 0x0f0f0f0f;
|
|
2050
|
+
const t76 = c11 ^ t75;
|
|
2051
|
+
const t77 = c27 ^ (t75 << 4);
|
|
2052
|
+
const t78 = (c7 ^ (c23 >>> 4)) & 0x0f0f0f0f;
|
|
2053
|
+
const t79 = c7 ^ t78;
|
|
2054
|
+
const t80 = c23 ^ (t78 << 4);
|
|
2055
|
+
const t81 = (c3 ^ (c19 >>> 4)) & 0x0f0f0f0f;
|
|
2056
|
+
const t82 = c3 ^ t81;
|
|
2057
|
+
const t83 = c19 ^ (t81 << 4);
|
|
2058
|
+
const t84 = (t80 ^ (t74 >>> 2)) & 0x33333333;
|
|
2059
|
+
const t85 = t80 ^ t84;
|
|
2060
|
+
const t86 = (t83 ^ (t77 >>> 2)) & 0x33333333;
|
|
2061
|
+
const t87 = t83 ^ t86;
|
|
2062
|
+
const t88 = (t79 ^ (t73 >>> 2)) & 0x33333333;
|
|
2063
|
+
const t89 = t79 ^ t88;
|
|
2064
|
+
const t90 = (t82 ^ (t76 >>> 2)) & 0x33333333;
|
|
2065
|
+
const t91 = t82 ^ t90;
|
|
2066
|
+
const t92 = (t87 ^ (t85 >>> 1)) & 0x55555555;
|
|
2067
|
+
const t93 = t87 ^ t92;
|
|
2068
|
+
const t94 = (t91 ^ (t89 >>> 1)) & 0x55555555;
|
|
2069
|
+
const t95 = t91 ^ t94;
|
|
2070
|
+
const t96 = (t93 ^ (t45 >>> 16)) & 0x0000ffff;
|
|
2071
|
+
const t97 = t93 ^ t96;
|
|
2072
|
+
const t98 = t45 ^ (t96 << 16);
|
|
2073
|
+
const t99 = (t95 ^ (t47 >>> 16)) & 0x0000ffff;
|
|
2074
|
+
const t100 = t95 ^ t99;
|
|
2075
|
+
const t101 = t47 ^ (t99 << 16);
|
|
2076
|
+
const t102 = (t69 ^ (t21 >>> 16)) & 0x0000ffff;
|
|
2077
|
+
const t103 = t69 ^ t102;
|
|
2078
|
+
const t104 = t21 ^ (t102 << 16);
|
|
2079
|
+
const t105 = (t71 ^ (t23 >>> 16)) & 0x0000ffff;
|
|
2080
|
+
const t106 = t71 ^ t105;
|
|
2081
|
+
const t107 = t23 ^ (t105 << 16);
|
|
2082
|
+
const t108 = (t97 ^ (t103 >>> 8)) & 0x00ff00ff;
|
|
2083
|
+
const t109 = t97 ^ t108;
|
|
2084
|
+
const t110 = t103 ^ (t108 << 8);
|
|
2085
|
+
const t111 = (t98 ^ (t104 >>> 8)) & 0x00ff00ff;
|
|
2086
|
+
const t112 = t98 ^ t111;
|
|
2087
|
+
const t113 = t104 ^ (t111 << 8);
|
|
2088
|
+
const t114 = (t100 ^ (t106 >>> 8)) & 0x00ff00ff;
|
|
2089
|
+
const t115 = t100 ^ t114;
|
|
2090
|
+
const t116 = t106 ^ (t114 << 8);
|
|
2091
|
+
const t117 = (t101 ^ (t107 >>> 8)) & 0x00ff00ff;
|
|
2092
|
+
const t118 = t101 ^ t117;
|
|
2093
|
+
const t119 = t107 ^ (t117 << 8);
|
|
2094
|
+
z0[0] = t119;
|
|
2095
|
+
z0[1] = t118;
|
|
2096
|
+
z0[2] = t116;
|
|
2097
|
+
z0[3] = t115;
|
|
2098
|
+
z1[0] = t113;
|
|
2099
|
+
z1[1] = t112;
|
|
2100
|
+
z1[2] = t110;
|
|
2101
|
+
z1[3] = t109;
|
|
390
2102
|
}
|
|
391
2103
|
/**
|
|
392
|
-
*
|
|
2104
|
+
* AEGIS-256 keystream extraction from the packed state:
|
|
2105
|
+
* z = S1 ^ S4 ^ S5 ^ (S2 & S3), computed lane-wise, then unpacked
|
|
2106
|
+
* (unpack04_6 restricted to the words feeding block 0).
|
|
393
2107
|
*/
|
|
394
|
-
export function
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
2108
|
+
export function keystream256(st, z) {
|
|
2109
|
+
const x0 = st[0];
|
|
2110
|
+
const c0 = ((x0 & 0x40404040) << 1) ^
|
|
2111
|
+
((x0 & 0x08080808) << 4) ^
|
|
2112
|
+
((x0 & 0x04040404) << 5) ^
|
|
2113
|
+
((x0 & (x0 >>> 1) & 0x10101010) << 3);
|
|
2114
|
+
const x1 = st[1];
|
|
2115
|
+
const c1 = ((x1 & 0x40404040) << 1) ^
|
|
2116
|
+
((x1 & 0x08080808) << 4) ^
|
|
2117
|
+
((x1 & 0x04040404) << 5) ^
|
|
2118
|
+
((x1 & (x1 >>> 1) & 0x10101010) << 3);
|
|
2119
|
+
const x2 = st[2];
|
|
2120
|
+
const c2 = ((x2 & 0x40404040) << 1) ^
|
|
2121
|
+
((x2 & 0x08080808) << 4) ^
|
|
2122
|
+
((x2 & 0x04040404) << 5) ^
|
|
2123
|
+
((x2 & (x2 >>> 1) & 0x10101010) << 3);
|
|
2124
|
+
const x3 = st[3];
|
|
2125
|
+
const c3 = ((x3 & 0x40404040) << 1) ^
|
|
2126
|
+
((x3 & 0x08080808) << 4) ^
|
|
2127
|
+
((x3 & 0x04040404) << 5) ^
|
|
2128
|
+
((x3 & (x3 >>> 1) & 0x10101010) << 3);
|
|
2129
|
+
const x4 = st[4];
|
|
2130
|
+
const c4 = ((x4 & 0x40404040) << 1) ^
|
|
2131
|
+
((x4 & 0x08080808) << 4) ^
|
|
2132
|
+
((x4 & 0x04040404) << 5) ^
|
|
2133
|
+
((x4 & (x4 >>> 1) & 0x10101010) << 3);
|
|
2134
|
+
const x5 = st[5];
|
|
2135
|
+
const c5 = ((x5 & 0x40404040) << 1) ^
|
|
2136
|
+
((x5 & 0x08080808) << 4) ^
|
|
2137
|
+
((x5 & 0x04040404) << 5) ^
|
|
2138
|
+
((x5 & (x5 >>> 1) & 0x10101010) << 3);
|
|
2139
|
+
const x6 = st[6];
|
|
2140
|
+
const c6 = ((x6 & 0x40404040) << 1) ^
|
|
2141
|
+
((x6 & 0x08080808) << 4) ^
|
|
2142
|
+
((x6 & 0x04040404) << 5) ^
|
|
2143
|
+
((x6 & (x6 >>> 1) & 0x10101010) << 3);
|
|
2144
|
+
const x7 = st[7];
|
|
2145
|
+
const c7 = ((x7 & 0x40404040) << 1) ^
|
|
2146
|
+
((x7 & 0x08080808) << 4) ^
|
|
2147
|
+
((x7 & 0x04040404) << 5) ^
|
|
2148
|
+
((x7 & (x7 >>> 1) & 0x10101010) << 3);
|
|
2149
|
+
const x8 = st[8];
|
|
2150
|
+
const c8 = ((x8 & 0x40404040) << 1) ^
|
|
2151
|
+
((x8 & 0x08080808) << 4) ^
|
|
2152
|
+
((x8 & 0x04040404) << 5) ^
|
|
2153
|
+
((x8 & (x8 >>> 1) & 0x10101010) << 3);
|
|
2154
|
+
const x9 = st[9];
|
|
2155
|
+
const c9 = ((x9 & 0x40404040) << 1) ^
|
|
2156
|
+
((x9 & 0x08080808) << 4) ^
|
|
2157
|
+
((x9 & 0x04040404) << 5) ^
|
|
2158
|
+
((x9 & (x9 >>> 1) & 0x10101010) << 3);
|
|
2159
|
+
const x10 = st[10];
|
|
2160
|
+
const c10 = ((x10 & 0x40404040) << 1) ^
|
|
2161
|
+
((x10 & 0x08080808) << 4) ^
|
|
2162
|
+
((x10 & 0x04040404) << 5) ^
|
|
2163
|
+
((x10 & (x10 >>> 1) & 0x10101010) << 3);
|
|
2164
|
+
const x11 = st[11];
|
|
2165
|
+
const c11 = ((x11 & 0x40404040) << 1) ^
|
|
2166
|
+
((x11 & 0x08080808) << 4) ^
|
|
2167
|
+
((x11 & 0x04040404) << 5) ^
|
|
2168
|
+
((x11 & (x11 >>> 1) & 0x10101010) << 3);
|
|
2169
|
+
const x12 = st[12];
|
|
2170
|
+
const c12 = ((x12 & 0x40404040) << 1) ^
|
|
2171
|
+
((x12 & 0x08080808) << 4) ^
|
|
2172
|
+
((x12 & 0x04040404) << 5) ^
|
|
2173
|
+
((x12 & (x12 >>> 1) & 0x10101010) << 3);
|
|
2174
|
+
const x13 = st[13];
|
|
2175
|
+
const c13 = ((x13 & 0x40404040) << 1) ^
|
|
2176
|
+
((x13 & 0x08080808) << 4) ^
|
|
2177
|
+
((x13 & 0x04040404) << 5) ^
|
|
2178
|
+
((x13 & (x13 >>> 1) & 0x10101010) << 3);
|
|
2179
|
+
const x14 = st[14];
|
|
2180
|
+
const c14 = ((x14 & 0x40404040) << 1) ^
|
|
2181
|
+
((x14 & 0x08080808) << 4) ^
|
|
2182
|
+
((x14 & 0x04040404) << 5) ^
|
|
2183
|
+
((x14 & (x14 >>> 1) & 0x10101010) << 3);
|
|
2184
|
+
const x15 = st[15];
|
|
2185
|
+
const c15 = ((x15 & 0x40404040) << 1) ^
|
|
2186
|
+
((x15 & 0x08080808) << 4) ^
|
|
2187
|
+
((x15 & 0x04040404) << 5) ^
|
|
2188
|
+
((x15 & (x15 >>> 1) & 0x10101010) << 3);
|
|
2189
|
+
const x16 = st[16];
|
|
2190
|
+
const c16 = ((x16 & 0x40404040) << 1) ^
|
|
2191
|
+
((x16 & 0x08080808) << 4) ^
|
|
2192
|
+
((x16 & 0x04040404) << 5) ^
|
|
2193
|
+
((x16 & (x16 >>> 1) & 0x10101010) << 3);
|
|
2194
|
+
const x17 = st[17];
|
|
2195
|
+
const c17 = ((x17 & 0x40404040) << 1) ^
|
|
2196
|
+
((x17 & 0x08080808) << 4) ^
|
|
2197
|
+
((x17 & 0x04040404) << 5) ^
|
|
2198
|
+
((x17 & (x17 >>> 1) & 0x10101010) << 3);
|
|
2199
|
+
const x18 = st[18];
|
|
2200
|
+
const c18 = ((x18 & 0x40404040) << 1) ^
|
|
2201
|
+
((x18 & 0x08080808) << 4) ^
|
|
2202
|
+
((x18 & 0x04040404) << 5) ^
|
|
2203
|
+
((x18 & (x18 >>> 1) & 0x10101010) << 3);
|
|
2204
|
+
const x19 = st[19];
|
|
2205
|
+
const c19 = ((x19 & 0x40404040) << 1) ^
|
|
2206
|
+
((x19 & 0x08080808) << 4) ^
|
|
2207
|
+
((x19 & 0x04040404) << 5) ^
|
|
2208
|
+
((x19 & (x19 >>> 1) & 0x10101010) << 3);
|
|
2209
|
+
const x20 = st[20];
|
|
2210
|
+
const c20 = ((x20 & 0x40404040) << 1) ^
|
|
2211
|
+
((x20 & 0x08080808) << 4) ^
|
|
2212
|
+
((x20 & 0x04040404) << 5) ^
|
|
2213
|
+
((x20 & (x20 >>> 1) & 0x10101010) << 3);
|
|
2214
|
+
const x21 = st[21];
|
|
2215
|
+
const c21 = ((x21 & 0x40404040) << 1) ^
|
|
2216
|
+
((x21 & 0x08080808) << 4) ^
|
|
2217
|
+
((x21 & 0x04040404) << 5) ^
|
|
2218
|
+
((x21 & (x21 >>> 1) & 0x10101010) << 3);
|
|
2219
|
+
const x22 = st[22];
|
|
2220
|
+
const c22 = ((x22 & 0x40404040) << 1) ^
|
|
2221
|
+
((x22 & 0x08080808) << 4) ^
|
|
2222
|
+
((x22 & 0x04040404) << 5) ^
|
|
2223
|
+
((x22 & (x22 >>> 1) & 0x10101010) << 3);
|
|
2224
|
+
const x23 = st[23];
|
|
2225
|
+
const c23 = ((x23 & 0x40404040) << 1) ^
|
|
2226
|
+
((x23 & 0x08080808) << 4) ^
|
|
2227
|
+
((x23 & 0x04040404) << 5) ^
|
|
2228
|
+
((x23 & (x23 >>> 1) & 0x10101010) << 3);
|
|
2229
|
+
const x24 = st[24];
|
|
2230
|
+
const c24 = ((x24 & 0x40404040) << 1) ^
|
|
2231
|
+
((x24 & 0x08080808) << 4) ^
|
|
2232
|
+
((x24 & 0x04040404) << 5) ^
|
|
2233
|
+
((x24 & (x24 >>> 1) & 0x10101010) << 3);
|
|
2234
|
+
const x25 = st[25];
|
|
2235
|
+
const c25 = ((x25 & 0x40404040) << 1) ^
|
|
2236
|
+
((x25 & 0x08080808) << 4) ^
|
|
2237
|
+
((x25 & 0x04040404) << 5) ^
|
|
2238
|
+
((x25 & (x25 >>> 1) & 0x10101010) << 3);
|
|
2239
|
+
const x26 = st[26];
|
|
2240
|
+
const c26 = ((x26 & 0x40404040) << 1) ^
|
|
2241
|
+
((x26 & 0x08080808) << 4) ^
|
|
2242
|
+
((x26 & 0x04040404) << 5) ^
|
|
2243
|
+
((x26 & (x26 >>> 1) & 0x10101010) << 3);
|
|
2244
|
+
const x27 = st[27];
|
|
2245
|
+
const c27 = ((x27 & 0x40404040) << 1) ^
|
|
2246
|
+
((x27 & 0x08080808) << 4) ^
|
|
2247
|
+
((x27 & 0x04040404) << 5) ^
|
|
2248
|
+
((x27 & (x27 >>> 1) & 0x10101010) << 3);
|
|
2249
|
+
const x28 = st[28];
|
|
2250
|
+
const c28 = ((x28 & 0x40404040) << 1) ^
|
|
2251
|
+
((x28 & 0x08080808) << 4) ^
|
|
2252
|
+
((x28 & 0x04040404) << 5) ^
|
|
2253
|
+
((x28 & (x28 >>> 1) & 0x10101010) << 3);
|
|
2254
|
+
const x29 = st[29];
|
|
2255
|
+
const c29 = ((x29 & 0x40404040) << 1) ^
|
|
2256
|
+
((x29 & 0x08080808) << 4) ^
|
|
2257
|
+
((x29 & 0x04040404) << 5) ^
|
|
2258
|
+
((x29 & (x29 >>> 1) & 0x10101010) << 3);
|
|
2259
|
+
const x30 = st[30];
|
|
2260
|
+
const c30 = ((x30 & 0x40404040) << 1) ^
|
|
2261
|
+
((x30 & 0x08080808) << 4) ^
|
|
2262
|
+
((x30 & 0x04040404) << 5) ^
|
|
2263
|
+
((x30 & (x30 >>> 1) & 0x10101010) << 3);
|
|
2264
|
+
const x31 = st[31];
|
|
2265
|
+
const c31 = ((x31 & 0x40404040) << 1) ^
|
|
2266
|
+
((x31 & 0x08080808) << 4) ^
|
|
2267
|
+
((x31 & 0x04040404) << 5) ^
|
|
2268
|
+
((x31 & (x31 >>> 1) & 0x10101010) << 3);
|
|
2269
|
+
const t0 = (c12 ^ (c28 >>> 4)) & 0x0f0f0f0f;
|
|
2270
|
+
const t1 = c12 ^ t0;
|
|
2271
|
+
const t2 = (c8 ^ (c24 >>> 4)) & 0x0f0f0f0f;
|
|
2272
|
+
const t3 = c8 ^ t2;
|
|
2273
|
+
const t4 = (c4 ^ (c20 >>> 4)) & 0x0f0f0f0f;
|
|
2274
|
+
const t5 = c4 ^ t4;
|
|
2275
|
+
const t6 = (c0 ^ (c16 >>> 4)) & 0x0f0f0f0f;
|
|
2276
|
+
const t7 = c0 ^ t6;
|
|
2277
|
+
const t8 = (t5 ^ (t1 >>> 2)) & 0x33333333;
|
|
2278
|
+
const t9 = t5 ^ t8;
|
|
2279
|
+
const t10 = (t7 ^ (t3 >>> 2)) & 0x33333333;
|
|
2280
|
+
const t11 = t7 ^ t10;
|
|
2281
|
+
const t12 = (t11 ^ (t9 >>> 1)) & 0x55555555;
|
|
2282
|
+
const t13 = t11 ^ t12;
|
|
2283
|
+
const t14 = (c13 ^ (c29 >>> 4)) & 0x0f0f0f0f;
|
|
2284
|
+
const t15 = c13 ^ t14;
|
|
2285
|
+
const t16 = (c9 ^ (c25 >>> 4)) & 0x0f0f0f0f;
|
|
2286
|
+
const t17 = c9 ^ t16;
|
|
2287
|
+
const t18 = (c5 ^ (c21 >>> 4)) & 0x0f0f0f0f;
|
|
2288
|
+
const t19 = c5 ^ t18;
|
|
2289
|
+
const t20 = (c1 ^ (c17 >>> 4)) & 0x0f0f0f0f;
|
|
2290
|
+
const t21 = c1 ^ t20;
|
|
2291
|
+
const t22 = (t19 ^ (t15 >>> 2)) & 0x33333333;
|
|
2292
|
+
const t23 = t19 ^ t22;
|
|
2293
|
+
const t24 = (t21 ^ (t17 >>> 2)) & 0x33333333;
|
|
2294
|
+
const t25 = t21 ^ t24;
|
|
2295
|
+
const t26 = (t25 ^ (t23 >>> 1)) & 0x55555555;
|
|
2296
|
+
const t27 = t25 ^ t26;
|
|
2297
|
+
const t28 = (c14 ^ (c30 >>> 4)) & 0x0f0f0f0f;
|
|
2298
|
+
const t29 = c14 ^ t28;
|
|
2299
|
+
const t30 = (c10 ^ (c26 >>> 4)) & 0x0f0f0f0f;
|
|
2300
|
+
const t31 = c10 ^ t30;
|
|
2301
|
+
const t32 = (c6 ^ (c22 >>> 4)) & 0x0f0f0f0f;
|
|
2302
|
+
const t33 = c6 ^ t32;
|
|
2303
|
+
const t34 = (c2 ^ (c18 >>> 4)) & 0x0f0f0f0f;
|
|
2304
|
+
const t35 = c2 ^ t34;
|
|
2305
|
+
const t36 = (t33 ^ (t29 >>> 2)) & 0x33333333;
|
|
2306
|
+
const t37 = t33 ^ t36;
|
|
2307
|
+
const t38 = (t35 ^ (t31 >>> 2)) & 0x33333333;
|
|
2308
|
+
const t39 = t35 ^ t38;
|
|
2309
|
+
const t40 = (t39 ^ (t37 >>> 1)) & 0x55555555;
|
|
2310
|
+
const t41 = t39 ^ t40;
|
|
2311
|
+
const t42 = (c15 ^ (c31 >>> 4)) & 0x0f0f0f0f;
|
|
2312
|
+
const t43 = c15 ^ t42;
|
|
2313
|
+
const t44 = (c11 ^ (c27 >>> 4)) & 0x0f0f0f0f;
|
|
2314
|
+
const t45 = c11 ^ t44;
|
|
2315
|
+
const t46 = (c7 ^ (c23 >>> 4)) & 0x0f0f0f0f;
|
|
2316
|
+
const t47 = c7 ^ t46;
|
|
2317
|
+
const t48 = (c3 ^ (c19 >>> 4)) & 0x0f0f0f0f;
|
|
2318
|
+
const t49 = c3 ^ t48;
|
|
2319
|
+
const t50 = (t47 ^ (t43 >>> 2)) & 0x33333333;
|
|
2320
|
+
const t51 = t47 ^ t50;
|
|
2321
|
+
const t52 = (t49 ^ (t45 >>> 2)) & 0x33333333;
|
|
2322
|
+
const t53 = t49 ^ t52;
|
|
2323
|
+
const t54 = (t53 ^ (t51 >>> 1)) & 0x55555555;
|
|
2324
|
+
const t55 = t53 ^ t54;
|
|
2325
|
+
const t56 = (t55 ^ (t27 >>> 16)) & 0x0000ffff;
|
|
2326
|
+
const t57 = t55 ^ t56;
|
|
2327
|
+
const t58 = t27 ^ (t56 << 16);
|
|
2328
|
+
const t59 = (t41 ^ (t13 >>> 16)) & 0x0000ffff;
|
|
2329
|
+
const t60 = t41 ^ t59;
|
|
2330
|
+
const t61 = t13 ^ (t59 << 16);
|
|
2331
|
+
const t62 = (t57 ^ (t60 >>> 8)) & 0x00ff00ff;
|
|
2332
|
+
const t63 = t57 ^ t62;
|
|
2333
|
+
const t64 = t60 ^ (t62 << 8);
|
|
2334
|
+
const t65 = (t58 ^ (t61 >>> 8)) & 0x00ff00ff;
|
|
2335
|
+
const t66 = t58 ^ t65;
|
|
2336
|
+
const t67 = t61 ^ (t65 << 8);
|
|
2337
|
+
z[0] = t67;
|
|
2338
|
+
z[1] = t66;
|
|
2339
|
+
z[2] = t64;
|
|
2340
|
+
z[3] = t63;
|
|
398
2341
|
}
|
|
399
|
-
//# sourceMappingURL=aes-bs.js.map
|