smesh_lol_web_common_crypto_chacha20.mjs raw
1 // Package smesh.lol/web/common/crypto/chacha20
2 // Generated by MoxieJS — Moxie JavaScript backend
3
4 import * as $rt from './$runtime/index.mjs';
5
6 // Package-level variables
7
8 export function init() {
9 return;
10 }
11
12 export function XOR(key, nonce, data) {
13 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68;
14 let $block = 0;
15 while (true) {
16 switch ($block) {
17 case 0: {
18 $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
19 $t0_1.$set($rt.builtin.cloneValue(key));
20 $t1_2 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
21 $t1_2.$set($rt.builtin.cloneValue(nonce));
22 $t2_3 = $rt.builtin.len(data);
23 $t3_4 = $rt.builtin.makeSlice($t2_3, $t2_3, 0);
24 $t4_5 = { $value: $rt.builtin.makeSlice(16, 16, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
25 $t5_6 = $t4_5.$get().addr(0);
26 $t5_6.$set(1634760805);
27 $t6_7 = $t4_5.$get().addr(1);
28 $t6_7.$set(857760878);
29 $t7_8 = $t4_5.$get().addr(2);
30 $t7_8.$set(2036477234);
31 $t8_9 = $t4_5.$get().addr(3);
32 $t8_9.$set(1797285236);
33 $t9_10 = $rt.builtin.sliceSlice($t0_1.$get(), 0, 4, undefined);
34 $t10_11 = le32($t9_10);
35 $t11_12 = $t4_5.$get().addr(4);
36 $t11_12.$set($t10_11);
37 $t12_13 = $rt.builtin.sliceSlice($t0_1.$get(), 4, 8, undefined);
38 $t13_14 = le32($t12_13);
39 $t14_15 = $t4_5.$get().addr(5);
40 $t14_15.$set($t13_14);
41 $t15_16 = $rt.builtin.sliceSlice($t0_1.$get(), 8, 12, undefined);
42 $t16_17 = le32($t15_16);
43 $t17_18 = $t4_5.$get().addr(6);
44 $t17_18.$set($t16_17);
45 $t18_19 = $rt.builtin.sliceSlice($t0_1.$get(), 12, 16, undefined);
46 $t19_20 = le32($t18_19);
47 $t20_21 = $t4_5.$get().addr(7);
48 $t20_21.$set($t19_20);
49 $t21_22 = $rt.builtin.sliceSlice($t0_1.$get(), 16, 20, undefined);
50 $t22_23 = le32($t21_22);
51 $t23_24 = $t4_5.$get().addr(8);
52 $t23_24.$set($t22_23);
53 $t24_25 = $rt.builtin.sliceSlice($t0_1.$get(), 20, 24, undefined);
54 $t25_26 = le32($t24_25);
55 $t26_27 = $t4_5.$get().addr(9);
56 $t26_27.$set($t25_26);
57 $t27_28 = $rt.builtin.sliceSlice($t0_1.$get(), 24, 28, undefined);
58 $t28_29 = le32($t27_28);
59 $t29_30 = $t4_5.$get().addr(10);
60 $t29_30.$set($t28_29);
61 $t30_31 = $rt.builtin.sliceSlice($t0_1.$get(), 28, 32, undefined);
62 $t31_32 = le32($t30_31);
63 $t32_33 = $t4_5.$get().addr(11);
64 $t32_33.$set($t31_32);
65 $t33_34 = $t4_5.$get().addr(12);
66 $t33_34.$set(0);
67 $t34_35 = $rt.builtin.sliceSlice($t1_2.$get(), 0, 4, undefined);
68 $t35_36 = le32($t34_35);
69 $t36_37 = $t4_5.$get().addr(13);
70 $t36_37.$set($t35_36);
71 $t37_38 = $rt.builtin.sliceSlice($t1_2.$get(), 4, 8, undefined);
72 $t38_39 = le32($t37_38);
73 $t39_40 = $t4_5.$get().addr(14);
74 $t39_40.$set($t38_39);
75 $t40_41 = $rt.builtin.sliceSlice($t1_2.$get(), 8, 12, undefined);
76 $t41_42 = le32($t40_41);
77 $t42_43 = $t4_5.$get().addr(15);
78 $t42_43.$set($t41_42);
79 $t53_54 = 0;
80 $block = 3; break;
81 break;
82 }
83 case 1: {
84 $t43_44 = { $value: $rt.builtin.makeSlice(64, 64, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
85 $t44_45 = blockFn($t4_5, $t43_44);
86 $t45_46 = $t4_5.$get().addr(12);
87 $t46_47 = $t45_46.$get();
88 $t47_48 = (($t46_47 + 1) >>> 0);
89 $t48_49 = $t4_5.$get().addr(12);
90 $t48_49.$set($t47_48);
91 $t49_50 = $rt.builtin.len(data);
92 $t50_51 = ($t49_50 - $t53_54);
93 $t51_52 = Math.min($t50_51, 64);
94 $t52_53 = (0 < $t51_52);
95 if ($t52_53) {
96 $t56_57 = 0;
97 $block = 4; break;
98 }
99 else {
100 $block = 5; break;
101 }
102 break;
103 }
104 case 2: {
105 return $t3_4;
106 break;
107 }
108 case 3: {
109 $t54_55 = $rt.builtin.len(data);
110 $t55_56 = ($t53_54 < $t54_55);
111 if ($t55_56) {
112 $block = 1; break;
113 }
114 else {
115 $block = 2; break;
116 }
117 break;
118 }
119 case 4: {
120 $t57_58 = ($t53_54 + $t56_57);
121 $t58_59 = ($t53_54 + $t56_57);
122 $t59_60 = data.addr($t58_59);
123 $t60_61 = $t59_60.$get();
124 $t61_62 = $t43_44.$get().addr($t56_57);
125 $t62_63 = $t61_62.$get();
126 $t63_64 = ($t60_61 ^ $t62_63);
127 $t64_65 = $t3_4.addr($t57_58);
128 $t64_65.$set($t63_64);
129 $t65_66 = ($t56_57 + 1);
130 $t66_67 = ($t65_66 < $t51_52);
131 if ($t66_67) {
132 $t56_57 = $t65_66;
133 $block = 4; break;
134 }
135 else {
136 $block = 5; break;
137 }
138 break;
139 }
140 case 5: {
141 $t67_68 = ($t53_54 + $t51_52);
142 $t53_54 = $t67_68;
143 $block = 3; break;
144 break;
145 }
146 }
147 }
148 }
149
150 export function blockFn(state, out) {
151 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43;
152 let $block = 0;
153 while (true) {
154 switch ($block) {
155 case 0: {
156 $t0_1 = { $value: $rt.builtin.makeSlice(16, 16, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
157 $t1_2 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
158 $t2_3 = $rt.builtin.sliceSlice(state.$get(), undefined, undefined, undefined);
159 $t3_4 = $rt.builtin.copy($t1_2, $t2_3);
160 $t4_5 = (0 < 10);
161 if ($t4_5) {
162 $t5_6 = 0;
163 $block = 1; break;
164 }
165 else {
166 $block = 2; break;
167 }
168 break;
169 }
170 case 1: {
171 $t6_7 = qr($t0_1, 0, 4, 8, 12);
172 $t7_8 = qr($t0_1, 1, 5, 9, 13);
173 $t8_9 = qr($t0_1, 2, 6, 10, 14);
174 $t9_10 = qr($t0_1, 3, 7, 11, 15);
175 $t10_11 = qr($t0_1, 0, 5, 10, 15);
176 $t11_12 = qr($t0_1, 1, 6, 11, 12);
177 $t12_13 = qr($t0_1, 2, 7, 8, 13);
178 $t13_14 = qr($t0_1, 3, 4, 9, 14);
179 $t14_15 = ($t5_6 + 1);
180 $t15_16 = ($t14_15 < 10);
181 if ($t15_16) {
182 $t5_6 = $t14_15;
183 $block = 1; break;
184 }
185 else {
186 $block = 2; break;
187 }
188 break;
189 }
190 case 2: {
191 $t16_17 = (0 < 16);
192 if ($t16_17) {
193 $t17_18 = 0;
194 $block = 3; break;
195 }
196 else {
197 $block = 4; break;
198 }
199 break;
200 }
201 case 3: {
202 $t18_19 = $t0_1.$get().addr($t17_18);
203 $t19_20 = $t18_19.$get();
204 $t20_21 = state.$get().addr($t17_18);
205 $t21_22 = $t20_21.$get();
206 $t22_23 = (($t19_20 + $t21_22) >>> 0);
207 $t23_24 = ($t17_18 * 4);
208 $t24_25 = ($t22_23 & 0xFF);
209 $t25_26 = out.$get().addr($t23_24);
210 $t25_26.$set($t24_25);
211 $t26_27 = ($t17_18 * 4);
212 $t27_28 = ($t26_27 + 1);
213 $t28_29 = ($t22_23 >>> 8);
214 $t29_30 = ($t28_29 & 0xFF);
215 $t30_31 = out.$get().addr($t27_28);
216 $t30_31.$set($t29_30);
217 $t31_32 = ($t17_18 * 4);
218 $t32_33 = ($t31_32 + 2);
219 $t33_34 = ($t22_23 >>> 16);
220 $t34_35 = ($t33_34 & 0xFF);
221 $t35_36 = out.$get().addr($t32_33);
222 $t35_36.$set($t34_35);
223 $t36_37 = ($t17_18 * 4);
224 $t37_38 = ($t36_37 + 3);
225 $t38_39 = ($t22_23 >>> 24);
226 $t39_40 = ($t38_39 & 0xFF);
227 $t40_41 = out.$get().addr($t37_38);
228 $t40_41.$set($t39_40);
229 $t41_42 = ($t17_18 + 1);
230 $t42_43 = ($t41_42 < 16);
231 if ($t42_43) {
232 $t17_18 = $t41_42;
233 $block = 3; break;
234 }
235 else {
236 $block = 4; break;
237 }
238 break;
239 }
240 case 4: {
241 return;
242 break;
243 }
244 }
245 }
246 }
247
248 export function qr(s, a, b, c, d) {
249 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80;
250 $t0_1 = s.$get().addr(b);
251 $t1_2 = $t0_1.$get();
252 $t2_3 = s.$get().addr(a);
253 $t3_4 = $t2_3.$get();
254 $t4_5 = (($t3_4 + $t1_2) >>> 0);
255 $t5_6 = s.$get().addr(a);
256 $t5_6.$set($t4_5);
257 $t6_7 = s.$get().addr(a);
258 $t7_8 = $t6_7.$get();
259 $t8_9 = s.$get().addr(d);
260 $t9_10 = $t8_9.$get();
261 $t10_11 = (($t9_10 ^ $t7_8) >>> 0);
262 $t11_12 = s.$get().addr(d);
263 $t11_12.$set($t10_11);
264 $t12_13 = s.$get().addr(d);
265 $t13_14 = $t12_13.$get();
266 $t14_15 = (($t13_14 << 16) >>> 0);
267 $t15_16 = s.$get().addr(d);
268 $t16_17 = $t15_16.$get();
269 $t17_18 = ($t16_17 >>> 16);
270 $t18_19 = (($t14_15 + $t17_18) >>> 0);
271 $t19_20 = s.$get().addr(d);
272 $t19_20.$set($t18_19);
273 $t20_21 = s.$get().addr(d);
274 $t21_22 = $t20_21.$get();
275 $t22_23 = s.$get().addr(c);
276 $t23_24 = $t22_23.$get();
277 $t24_25 = (($t23_24 + $t21_22) >>> 0);
278 $t25_26 = s.$get().addr(c);
279 $t25_26.$set($t24_25);
280 $t26_27 = s.$get().addr(c);
281 $t27_28 = $t26_27.$get();
282 $t28_29 = s.$get().addr(b);
283 $t29_30 = $t28_29.$get();
284 $t30_31 = (($t29_30 ^ $t27_28) >>> 0);
285 $t31_32 = s.$get().addr(b);
286 $t31_32.$set($t30_31);
287 $t32_33 = s.$get().addr(b);
288 $t33_34 = $t32_33.$get();
289 $t34_35 = (($t33_34 << 12) >>> 0);
290 $t35_36 = s.$get().addr(b);
291 $t36_37 = $t35_36.$get();
292 $t37_38 = ($t36_37 >>> 20);
293 $t38_39 = (($t34_35 + $t37_38) >>> 0);
294 $t39_40 = s.$get().addr(b);
295 $t39_40.$set($t38_39);
296 $t40_41 = s.$get().addr(b);
297 $t41_42 = $t40_41.$get();
298 $t42_43 = s.$get().addr(a);
299 $t43_44 = $t42_43.$get();
300 $t44_45 = (($t43_44 + $t41_42) >>> 0);
301 $t45_46 = s.$get().addr(a);
302 $t45_46.$set($t44_45);
303 $t46_47 = s.$get().addr(a);
304 $t47_48 = $t46_47.$get();
305 $t48_49 = s.$get().addr(d);
306 $t49_50 = $t48_49.$get();
307 $t50_51 = (($t49_50 ^ $t47_48) >>> 0);
308 $t51_52 = s.$get().addr(d);
309 $t51_52.$set($t50_51);
310 $t52_53 = s.$get().addr(d);
311 $t53_54 = $t52_53.$get();
312 $t54_55 = (($t53_54 << 8) >>> 0);
313 $t55_56 = s.$get().addr(d);
314 $t56_57 = $t55_56.$get();
315 $t57_58 = ($t56_57 >>> 24);
316 $t58_59 = (($t54_55 + $t57_58) >>> 0);
317 $t59_60 = s.$get().addr(d);
318 $t59_60.$set($t58_59);
319 $t60_61 = s.$get().addr(d);
320 $t61_62 = $t60_61.$get();
321 $t62_63 = s.$get().addr(c);
322 $t63_64 = $t62_63.$get();
323 $t64_65 = (($t63_64 + $t61_62) >>> 0);
324 $t65_66 = s.$get().addr(c);
325 $t65_66.$set($t64_65);
326 $t66_67 = s.$get().addr(c);
327 $t67_68 = $t66_67.$get();
328 $t68_69 = s.$get().addr(b);
329 $t69_70 = $t68_69.$get();
330 $t70_71 = (($t69_70 ^ $t67_68) >>> 0);
331 $t71_72 = s.$get().addr(b);
332 $t71_72.$set($t70_71);
333 $t72_73 = s.$get().addr(b);
334 $t73_74 = $t72_73.$get();
335 $t74_75 = (($t73_74 << 7) >>> 0);
336 $t75_76 = s.$get().addr(b);
337 $t76_77 = $t75_76.$get();
338 $t77_78 = ($t76_77 >>> 25);
339 $t78_79 = (($t74_75 + $t77_78) >>> 0);
340 $t79_80 = s.$get().addr(b);
341 $t79_80.$set($t78_79);
342 return;
343 }
344
345 export function le32(b) {
346 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
347 $t0_1 = b.addr(0);
348 $t1_2 = $t0_1.$get();
349 $t2_3 = ($t1_2 >>> 0);
350 $t3_4 = b.addr(1);
351 $t4_5 = $t3_4.$get();
352 $t5_6 = ($t4_5 >>> 0);
353 $t6_7 = (($t5_6 << 8) >>> 0);
354 $t7_8 = (($t2_3 + $t6_7) >>> 0);
355 $t8_9 = b.addr(2);
356 $t9_10 = $t8_9.$get();
357 $t10_11 = ($t9_10 >>> 0);
358 $t11_12 = (($t10_11 << 16) >>> 0);
359 $t12_13 = (($t7_8 + $t11_12) >>> 0);
360 $t13_14 = b.addr(3);
361 $t14_15 = $t13_14.$get();
362 $t15_16 = ($t14_15 >>> 0);
363 $t16_17 = (($t15_16 << 24) >>> 0);
364 $t17_18 = (($t12_13 + $t16_17) >>> 0);
365 return $t17_18;
366 }
367
368