0.1.3 • Published 3 years ago

@threema/wasm-minisign-verify v0.1.3

Weekly downloads
-
License
MIT OR Apache-2.0
Repository
github
Last release
3 years ago

wasm-minisign-verify

GitHub CI License

This is the rust-minisign-verify library compiled to WebAssembly.

Loading the Library

Note: A dependency graph that contains any WASM must all be imported asynchronously. This can be done using a bundler with an appropriate WASM loader, or through dynamic imports.

Bootstrapping JS

The simplest way is to use a bootstrapping js as the entry point to your entire application:

// bootstrap.js
import('./index.js')
  .catch(e => console.error('Error importing `index.js`:', e));
// index.js
import * as minisignVerify from '@threema/wasm-minisign-verify';

Dynamic Import (Promise)

Alternatively, import the library asynchronously:

import('@threema/wasm-minisign-verify')
    .then((minisignVerify) => {
        // Use the library
    });

If you're in an asynchronous context, you can also use the await keyword.

const minisignVerify = await import('@threema/wasm-minisign-verify');

Usage

Initialization

In order to set up logging of log messages and panics:

minisignVerify.setupLogging("info");

Valid log levels: trace, debug, info, warn or error.

Signatures and Public Keys

Create a Minisign public key from a string, as in the minisign.pub file:

const publicKey = minisignVerify.PublicKey.decode(
    "untrusted comment: minisign public key 60DF2F3B621B4533\n" +
    "RWQzRRtiOy/fYNCli5tW96CO6R+FnO92LceeIoWlCLj+BTVe+6q8T69M"
);

Create a Minisign signature from a string:

const signature = minisignVerify.Signature.decode(
    "untrusted comment: signature from minisign secret key\n" +
    "RWQzRRtiOy/fYEU/vGHUEfBg+lSmrdpViX3l9fX1Ps6FMBrBcsMw9uxsLPFr9pAMdKy1NVEX3MsHsuCKlSVNYc4C5/pCnU/Kugk=\n" +
    "trusted comment: timestamp:1634045550	file:test.txt\n" +
    "zEHzYWS0L/lFlN3hfMdAJA0MsVfazBXbwSw9XihxQ0msFQPlC30F6Ajvxi67KEFNd1GUhdi3DcslssTW8MUECQ=="
);

Signature Verification

To verify a signature, use the verify method on the PublicKey. If verification fails, an exception will be thrown. Otherwise, the method will return true.

const signedData = new TextEncoder().encode("test\n");
try {
    publicKey.verify(signedData, signature);
    console.info("Signature verification succeeded");
} catch(e) {
    console.error(e);
}

Dev Setup

cargo install wasm-pack

Building

# Debug build
wasm-pack build

# Release build
wasm-pack build --release -- --no-default-features

Running the testproject

# Setup npm
cd www
npm install

# Run server
npm run start

Testing

# Unit tests
cargo test

# NodeJS tests
wasm-pack test --node

License

Licensed under either of

at your option.

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago