@threema/wasm-minisign-verify v0.1.3
wasm-minisign-verify
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-packBuilding
# Debug build
wasm-pack build
# Release build
wasm-pack build --release -- --no-default-featuresRunning the testproject
# Setup npm
cd www
npm install
# Run server
npm run startTesting
# Unit tests
cargo test
# NodeJS tests
wasm-pack test --nodeLicense
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.