DIDKit WASM
The current version of the ring
crate does not provide all the symbols
needed to run on the browser, see DEPS.md
To install wasm-pack
run:
cargo install wasm-pack
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 --target web --out-dir pkg/wasm
To use a custom subset of features:
wasm-pack build --target web --out-dir pkg/wasm -- --no-default-features --features=issue
wasm-pack build --target web --out-dir pkg/wasm -- --no-default-features --features=verify
wasm-pack build --target web --out-dir pkg/wasm -- --no-default-features --features=credential
wasm-pack build --target web --out-dir pkg/wasm -- --no-default-features --features=presentation
don't forget to add TARGET_CC
and TARGET_AR
if using ring
with wasm32_c
ASM target
For the ASM target the wasm2js
build is necessary, to get this tool
follow the steps in binaryen.
To compile all features for WASM target:
wasm-pack build --target web --out-dir pkg/wasm
npm --prefix loader/wasm install
npm --prefix loader/wasm run build
To compile all features for ASM target, assuming you're in this folder:
wasm-pack build --target bundler --out-dir pkg/asmjs
cd pkg/asmjs
$(BINARYEN_ROOT)/bin/wasm2js --pedantic -o didkit_wasm_bg1.js didkit_wasm_bg.wasm
cd ../..
cd loader/asmjs
./repack.sh
npm install
npm run build
WASM tests
loader/wasm
contains tests. To run them you need to serve the files and open
the page in a browser (you can then see the results in the console). You can
start a server with
$ npm run serve