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