@holo-host/wasm-key-manager

v1.1.1
Holochain-compatible key management for Holo web users

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

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',
    },
}

Contributing

npm i @holo-host/wasm-key-manager

Metadata

  • Unknown
  • Whatever
  • Unknown
  • released 6/18/2023

Downloads