smesh_lol_web_common_crypto_hkdf.mjs raw
1 // Package smesh.lol/web/common/crypto/hkdf
2 // Generated by MoxieJS — Moxie JavaScript backend
3
4 import * as $rt from './$runtime/index.mjs';
5
6 import * as smesh$lol$web$common$crypto$hmac from './smesh_lol_web_common_crypto_hmac.mjs';
7
8 // Package-level variables
9
10 export function init() {
11 return;
12 }
13
14 export function Extract(salt, ikm) {
15 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
16 let $block = 0;
17 while (true) {
18 switch ($block) {
19 case 0: {
20 $t0_1 = $rt.builtin.len(salt);
21 $t1_2 = ($t0_1 === 0);
22 if ($t1_2) {
23 $block = 1; break;
24 }
25 else {
26 $t4_5 = salt;
27 $block = 2; break;
28 }
29 break;
30 }
31 case 1: {
32 $t2_3 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
33 $t3_4 = $rt.builtin.sliceSlice($t2_3.$get(), undefined, 32, undefined);
34 $t4_5 = $t3_4;
35 $block = 2; break;
36 break;
37 }
38 case 2: {
39 $t5_6 = smesh$lol$web$common$crypto$hmac.Sum($t4_5, ikm);
40 return $t5_6;
41 break;
42 }
43 }
44 }
45 }
46
47 export function Expand(prk, info, length) {
48 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;
49 let $block = 0;
50 while (true) {
51 switch ($block) {
52 case 0: {
53 $t0_1 = $rt.builtin.makeSlice(0, length, 0);
54 $t21_22 = $t0_1;
55 $t22_23 = null;
56 $t23_24 = 1;
57 $block = 3; break;
58 break;
59 }
60 case 1: {
61 $t1_2 = $rt.builtin.len($t22_23);
62 $t2_3 = $rt.builtin.len(info);
63 $t3_4 = ($t1_2 + $t2_3);
64 $t4_5 = ($t3_4 + 1);
65 $t5_6 = $rt.builtin.makeSlice($t4_5, $t4_5, 0);
66 $t6_7 = $rt.builtin.copy($t5_6, $t22_23);
67 $t7_8 = $rt.builtin.len($t22_23);
68 $t8_9 = $rt.builtin.sliceSlice($t5_6, $t7_8, undefined, undefined);
69 $t9_10 = $rt.builtin.copy($t8_9, info);
70 $t10_11 = $rt.builtin.len($t5_6);
71 $t11_12 = ($t10_11 - 1);
72 $t12_13 = $t5_6.addr($t11_12);
73 $t12_13.$set($t23_24);
74 $t13_14 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
75 $t14_15 = $rt.builtin.sliceSlice(prk, undefined, undefined, undefined);
76 $t15_16 = smesh$lol$web$common$crypto$hmac.Sum($t14_15, $t5_6);
77 $t13_14.$set($rt.builtin.cloneValue($t15_16));
78 $t16_17 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
79 $t17_18 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
80 $t18_19 = $rt.builtin.appendSlice($t21_22, $t17_18);
81 $t19_20 = (($t23_24 + 1) & 0xFF);
82 $t21_22 = $t18_19;
83 $t22_23 = $t16_17;
84 $t23_24 = $t19_20;
85 $block = 3; break;
86 break;
87 }
88 case 2: {
89 $t20_21 = $rt.builtin.sliceSlice($t21_22, undefined, length, undefined);
90 return $t20_21;
91 break;
92 }
93 case 3: {
94 $t24_25 = $rt.builtin.len($t21_22);
95 $t25_26 = ($t24_25 < length);
96 if ($t25_26) {
97 $block = 1; break;
98 }
99 else {
100 $block = 2; break;
101 }
102 break;
103 }
104 }
105 }
106 }
107
108