UNPKG

@gear-js/api

Version:

A JavaScript library that provides functionality to connect GEAR Component APIs.

84 lines (80 loc) 3.13 kB
'use strict'; var util = require('@polkadot/util'); var utilCrypto = require('@polkadot/util-crypto'); var api = require('@polkadot/api'); var wasmCrypto = require('@polkadot/wasm-crypto'); require('./utils/generate.js'); require('@polkadot/types'); var address = require('./utils/address.js'); require('assert'); require('./default/index.js'); require('./metadata/programMetadata.js'); var consts = require('./consts.js'); class GearKeyring { static unlock(keyring, passphrase) { if (keyring.isLocked) { keyring.unlock(passphrase); } return keyring; } static async fromSuri(suri, name, ss58Format = consts.VARA_SS58_FORMAT) { const keyring = new api.Keyring({ type: 'sr25519', ss58Format }); await wasmCrypto.waitReady(); const keyPair = keyring.addFromUri(suri, { name }); return keyPair; } static fromKeyPair(pair, name, ss58Format = consts.VARA_SS58_FORMAT) { const keyring = new api.Keyring({ type: 'sr25519', ss58Format }); return GearKeyring.unlock(keyring.addFromPair(pair, { name })); } static fromJson(keypairJson, passphrase, ss58Format = consts.VARA_SS58_FORMAT) { const json = util.isString(keypairJson) ? JSON.parse(keypairJson) : keypairJson; const keyring = new api.Keyring({ type: 'sr25519', ss58Format }).addFromJson(json); return GearKeyring.unlock(keyring, passphrase); } static async fromSeed(seed, name, ss58Format = consts.VARA_SS58_FORMAT) { const keyring = new api.Keyring({ type: 'sr25519', ss58Format }); await wasmCrypto.waitReady(); const keypair = util.isU8a(seed) ? keyring.addFromSeed(seed, { name }) : keyring.addFromSeed(util.hexToU8a(seed), { name }); return keypair; } static async fromMnemonic(mnemonic, name, ss58Format = consts.VARA_SS58_FORMAT) { return await GearKeyring.fromSuri(mnemonic, name, ss58Format); } static toJson(keyring, passphrase) { return keyring.toJson(passphrase); } static async create(name, passphrase, ss58Format = consts.VARA_SS58_FORMAT) { const mnemonic = utilCrypto.mnemonicGenerate(); const seed = utilCrypto.mnemonicToMiniSecret(mnemonic); const keyring = await GearKeyring.fromSeed(seed, name, ss58Format); return { keyring, mnemonic: mnemonic, seed: util.u8aToHex(seed), json: keyring.toJson(passphrase), }; } static generateMnemonic() { return utilCrypto.mnemonicGenerate(); } static generateSeed(mnemonic) { if (!mnemonic) { mnemonic = utilCrypto.mnemonicGenerate(); } return { seed: util.u8aToHex(utilCrypto.mnemonicToMiniSecret(mnemonic)), mnemonic }; } static sign(keyring, message) { return keyring.sign(util.stringToU8a(message)); } static checkPublicKey(publicKey) { try { address.decodeAddress(publicKey); } catch (_) { return false; } return true; } } exports.GearKeyring = GearKeyring;