@holo-host/wasm-key-manager
v1.1.1
Published
Holochain-compatible key management for Holo web users
Downloads
63
Keywords
Readme
Wasm Key Manager
Rust/Wasm key management implementation that uses Ed25519 signing algorithm and Argon2 key derivation. The private key remains in Wasm memory with no direct access for Javascript.
Release
Release source - https://github.com/Holo-Host/wasm-key-manager/
API Reference
Usage
const { KeyManager, deriveSeedFrom } = require('@holo-host/wasm-key-manager')
const crypto = require('crypto')
const seed = crypto.randomBytes(32)
const hha_id = new Uint8Array([
66, 123, 133, 136, 133, 6, 247, 116, 4, 59, 43, 206, 131, 168, 123, 44, 54, 52, 3, 53, 134, 75,
137, 43, 63, 26, 216, 191, 67, 117, 38, 142,
])
// or derive seed
const seed = deriveSeedFrom(hha_id, '[email protected]', 'Passw0rd!')
const message = 'Hello World'
const keys = new KeyManager(seed)
const signature = keys.sign(message)
const verified = keys.verify(message, signature)
const public_key = keys.publicKey()
const verified = KeyManager.verifyWithPublicKey(message, signature, public_key)
Bundle for web
bootstrap.js
import('./index.js')
.then((m) => Object.assign(window, m))
.catch((e) => console.error('Error importing `index.js`:', e))
index.js
const { KeyManager, deriveSeedFrom } = require('@holo-host/wasm-key-manager')
module.exports = {
KeyManager,
deriveSeedFrom,
}
webpack.config.js
module.exports = {
target: 'web',
entry: './bootstrap.js',
// Assign 'module.exports' to the window variable
output: {
libraryTarget: 'window',
},
}