OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-wallet-lib / secure-storage.js

44 lines · javascript ref:
// secure-storage.js - Secure Mnemonic Storage
//
// Uses OS keychain for secure mnemonic storage:
// - macOS: Keychain Access
// - Linux: libsecret (GNOME Keyring, KDE Wallet)
// - Windows: Credential Vault

import keytar from 'keytar'

const SERVICE_NAME = 'hyper-wallet'
const ACCOUNT_NAME = 'mnemonic'

/**
 * Store mnemonic securely in OS keychain
 * @param {String} mnemonic - BIP39 mnemonic phrase
 */
export async function storeMnemonic(mnemonic) {
  await keytar.setPassword(SERVICE_NAME, ACCOUNT_NAME, mnemonic)
}

/**
 * Retrieve mnemonic from OS keychain
 * @returns {String|null} - Mnemonic or null if not found
 */
export async function loadMnemonic() {
  return await keytar.getPassword(SERVICE_NAME, ACCOUNT_NAME)
}

/**
 * Delete mnemonic from OS keychain
 */
export async function deleteMnemonic() {
  await keytar.deletePassword(SERVICE_NAME, ACCOUNT_NAME)
}

/**
 * Check if wallet is initialized (mnemonic exists in keychain)
 * @returns {Boolean}
 */
export async function isInitialized() {
  const mnemonic = await loadMnemonic()
  return mnemonic !== null
}