@gear-js/api
Version:
A JavaScript library that provides functionality to connect GEAR Component APIs.
84 lines (80 loc) • 3.13 kB
JavaScript
;
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;