DIDKit WASM
Prerequisites to Build from Source
NPM packages are available but if you would like to compile DIDKit yourself
(e.g. to enable different cryptographic backends) you will need the WASM
compiler toolchain as well as a specific build tool:
$ rustup target add wasm32-unknown-unknown
$ cargo install wasm-pack
Installation and Usage
Node
WASM can be used in Node.js (any recent version):
$ npm i @spruceid/didkit-wasm-node
Or build it from source:
$ wasm-pack build --target nodejs
Web Frameworks (Bundled)
WASM can be used with web frameworks and bundlers like Webpack:
$ npm i @spruceid/didkit-wasm
Or build it from source:
$ wasm-pack build
If Webpack doesn't work with the default configuration, you can have a look at
our configuration for
tzprofiles.
Vanilla Javascript
WASM can be used with plain Javascript with newer browsers. As it cannot be used
as a NPM package you have to build it manually:
$ wasm-pack build --target web
The manual tests in test/
serve as an example on how to import DIDKit.
Tests
The test/
directory contains manual tests to run in the browser. Instructions
are in the README of the directory.
Non-Default Compilation
The current version of the ring
crate does not provide all the symbols
needed to run on the browser, see DEPS.md
To compile all features plus wasm32_c
on ring
, a C compiler is needed, see
spruceid/ssi:
On Ubuntu this one option is to install clang
and llvm
:
sudo apt install clang-10 llvm-10
Then to compile with all features:
TARGET_CC=clang-10 TARGET_AR=llvm-ar-10 wasm-pack build --out-dir pkg
To use a custom subset of features:
wasm-pack build --out-dir pkg -- --no-default-features --features=issue
wasm-pack build --out-dir pkg -- --no-default-features --features=verify
wasm-pack build --out-dir pkg -- --no-default-features --features=credential
wasm-pack build --out-dir pkg -- --no-default-features --features=presentation
don't forget to add TARGET_CC
and TARGET_AR
if using ring
with wasm32_c