gocrypto

0.0.1 • Public • Published

WebAssembly

Getting Started

Basic Setup

  1. Include wasm_exec.js to your web app

    <Script src="wasm_exec.js"/>
  2. Add following code to check the WebAssembly compatibility:

    if (WebAssembly) {
        // WebAssembly.instantiateStreaming is not currently available in Safari
        if (WebAssembly && !WebAssembly.instantiateStreaming) { // polyfill
            WebAssembly.instantiateStreaming = async (resp, importObject) => {
                const source = await (await resp).arrayBuffer();
                return await WebAssembly.instantiate(source, importObject);
        };
        } 
    }
  3. Instantiate and attach a __gobridge__ object to the global object, DMSCrypto will hook and exports all available function to the __gobridge__ object

    const g = global || window || self;
     
    if (!g.__gobridge__) {
        g.__gobridge__ = {};
    }
  4. Use WebAssembly.instantiateStreaming to load and instantiate the DMSGoCrypto.wasm library:

    const go = new Go(); // Go provided by the wasm_exec.js to run the GoWasm library
    WebAssembly.instantiateStreaming(fetch("DMSGoCrypto.wasm"), go.importObject).then((result) => {
            go.run(result.instance); // ** NOTE: Call go.run() before using any WebAssembly function **
            __gobridge__.generateSecp256k1Key("", (err, privKey) => {
                if (err != null) {
                    console.log(err);
                } else {
                    console.log(privKey);
                }
        });
    });

API Reference

Overall API Design

Due to restriction of Go-WebAssembly, all DMSCrypto WebAssembly API is designed to provide a Parameters + Callback function signature pattern.

Take generateSecp256k1Key as the example:

__gobridge__.generateSecp256k1Key(
  // First param would be an object, check each API spec for the definition 
  "", 
  
  // Final param would always be a callback in which the first param is a nullable `error`
  (err, privKey) => {
        if (err != null) {
            console.log(err);
        } else {
            console.log(privKey);
        }
});

Package Sidebar

Install

npm i gocrypto

Weekly Downloads

1

Version

0.0.1

License

MIT

Unpacked Size

5.93 MB

Total Files

15

Last publish

Collaborators

  • jk234ert