Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/threema-ch/wasm-minisign-verify
This is the rust-minisign-verify library compiled to WebAssembly.
https://github.com/threema-ch/wasm-minisign-verify
Last synced: about 1 month ago
JSON representation
This is the rust-minisign-verify library compiled to WebAssembly.
- Host: GitHub
- URL: https://github.com/threema-ch/wasm-minisign-verify
- Owner: threema-ch
- License: apache-2.0
- Created: 2021-10-12T14:31:18.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-02-11T10:14:33.000Z (almost 3 years ago)
- Last Synced: 2024-11-07T18:56:53.113Z (about 2 months ago)
- Language: Rust
- Size: 124 KB
- Stars: 3
- Watchers: 5
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# wasm-minisign-verify
[![GitHub CI][github-actions-badge]][github-actions]
[![License][license-badge]][license]This is the
[rust-minisign-verify](https://github.com/jedisct1/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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports).### Bootstrapping JS
The simplest way is to use a bootstrapping js as the entry point to your entire application:
```js
// bootstrap.js
import('./index.js')
.catch(e => console.error('Error importing `index.js`:', e));
``````js
// index.js
import * as minisignVerify from '@threema/wasm-minisign-verify';
```### Dynamic Import (Promise)
Alternatively, import the library asynchronously:
```js
import('@threema/wasm-minisign-verify')
.then((minisignVerify) => {
// Use the library
});
```If you're in an asynchronous context, you can also use the `await` keyword.
```js
const minisignVerify = await import('@threema/wasm-minisign-verify');
```## Usage
### Initialization
In order to set up logging of log messages and panics:
```js
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:
```js
const publicKey = minisignVerify.PublicKey.decode(
"untrusted comment: minisign public key 60DF2F3B621B4533\n" +
"RWQzRRtiOy/fYNCli5tW96CO6R+FnO92LceeIoWlCLj+BTVe+6q8T69M"
);
```Create a Minisign signature from a string:
```js
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`.```js
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](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
http://opensource.org/licenses/MIT)at your option.
[github-actions]: https://github.com/threema-ch/wasm-minisign-verify/actions?query=branch%3Amain
[github-actions-badge]: https://github.com/threema-ch/wasm-minisign-verify/workflows/CI/badge.svg
[license]: https://github.com/threema-ch/wasm-minisign-verify#license
[license-badge]: https://img.shields.io/badge/License-Apache%202.0%20%2f%20MIT-blue.svg