@threema/wasm-minisign-verify
v0.1.3
Published
The rust-minisign-verify crate compiled to WebAssembly.
Downloads
178
Readme
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-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
- 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.