vetKD: loading WASM failed

Hi! I am learning VetKD module now. I have trouble with using it. When i try to get key
const tsk = new vetkd.TransportSecretKey(seed);
i got error smth like “vetkd is not inited”. According to example i try to init module in main.jsx

import vetkd from "ic-vetkd-utils";
import vetkd_wasm from "ic-vetkd-utils/ic_vetkd_utils_bg.wasm";
await vetkd(await vetkd_wasm());

but on loading web-site i got eror

[plugin:vite:import-analysis] Failed to resolve import “wbg” from “…/…/node_modules/ic-vetkd-utils/ic_vetkd_utils_bg.wasm”. Does the file exist?

i have no idea what is “wbg”. I can`t find any information about that. Please help)

UPDATED:
I changed imports like this :

import vetkd from "ic-vetkd-utils";

async function initVetkd() {
  const response = await fetch("/ic_vetkd_utils_bg.wasm");
  const wasmBuffer = await response.arrayBuffer();

  const imports = {
    wbg: vetkd, 
  };

  const wasmModule = await WebAssembly.instantiate(wasmBuffer, imports);
  console.log("WASM module exports:", wasmModule.instance.exports);

  await vetkd(wasmModule.instance);
}

Now, my homepage is loaded, but vetKD module still not init. It got error:

main.jsx:19 Uncaught (in promise) LinkError: WebAssembly.instantiate(): Import #0 "wbg" "__wbindgen_string_new": function import requires a callable

One more thing, if i no init it i cant create TransportSecretKey

      const seed = window.crypto.getRandomValues(new Uint8Array(32));
      console.log("VETKD Module:", vetkd);
      console.log("seed:", seed);
      const tsk = new vetkd.TransportSecretKey(seed);

Console Log:

VETKD Module: Module {…}IBECiphertext: (...)TransportSecretKey: (...)default: (...)initSync: (...)verify_offline: (...)Symbol(Symbol.toStringTag): "Module"get IBECiphertext: ƒ ()set IBECiphertext: ƒ ()get TransportSecretKey: ƒ ()set TransportSecretKey: ƒ ()get default: ƒ ()set default: ƒ ()get initSync: ƒ ()set initSync: ƒ ()get verify_offline: ƒ ()set verify_offline: ƒ ()
crypto.ts:69 seed: Uint8Array(32) [215, 174, 6, 104, 202, 96, 201, 130, 62, 44, 0, 49, 101, 17, 38, 41, 109, 31, 138, 232, 219, 64, 235, 206, 97, 246, 232, 216, 196, 228, 78, 243, buffer: ArrayBuffer(32), byteLength: 32, byteOffset: 0, length: 32, Symbol(Symbol.toStringTag): 'Uint8Array']
ic-vetkd-utils.js?v=e21c1b7a:245 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '__wbindgen_add_to_stack_pointer')

I think i could skip some config. All my configs here: GitHub - Baiumka/motoko_secret_keeper.
Help please :innocent:

3 Likes

Finnaly fix it!.

await vetkd("ic_vetkd_utils_bg.wasm");

instead of

import vetkd_wasm from "ic-vetkd-utils/ic_vetkd_utils_bg.wasm";
await vetkd(await vetkd_wasm());
1 Like