OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-wallet-lib / identity.js

48 lines · javascript ref:
// identity.js - Identity Management Wrapper
//
// Wraps keet-identity-key for consistent API

import KeetIdentityKey from 'keet-identity-key'

/**
 * Identity wrapper
 * Provides consistent API for identity management and exposes mnemonic for WDK
 */
class IdentityKey {
  /**
   * Create identity from mnemonic
   * @param {Object} options - { mnemonic }
   * @returns {IdentityKey} - Identity instance with mnemonic exposed
   */
  static async from({ mnemonic }) {
    const identity = await KeetIdentityKey.from({ mnemonic })

    // Expose mnemonic for WDK (WDK needs the mnemonic to derive keys)
    identity.mnemonic = mnemonic

    return identity
  }

  /**
   * Verify device attestation proof
   * @param {Buffer} proof - Attestation proof
   * @returns {Boolean} - True if valid
   */
  static verify(proof) {
    return KeetIdentityKey.verify(proof)
  }

  /**
   * Attest new device
   * @param {Buffer} devicePublicKey - Device public key
   * @param {Object} signingDevice - Device with signing authority
   * @param {Buffer} previousProof - Previous attestation proof
   * @returns {Buffer} - New attestation proof
   */
  static attest(devicePublicKey, signingDevice, previousProof) {
    return KeetIdentityKey.attest(devicePublicKey, signingDevice, previousProof)
  }
}

export default IdentityKey