PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-bin/src/commands

Просмотр файла: cmdBip32.ts

import * as crypto from 'crypto';

import * as yargs from 'yargs';
import { CommandModule } from 'yargs';
import * as utxolib from '@bitgo/utxo-lib';

import { parseBip32 } from '../bip32';
import { formatTreeOrJson, FormatTreeOrJson } from '../args';

import { formatString } from './formatString';

type ArgsBip32Generate = {
  format: FormatTreeOrJson;
  bip32Key: string;
  derive?: string;
  all: boolean;
};

export const cmdBip32Parse: CommandModule<unknown, ArgsBip32Generate> = {
  command: 'parse [xpub|xprv]',
  describe: 'show xpub info',
  builder(b: yargs.Argv<unknown>): yargs.Argv<ArgsBip32Generate> {
    return b
      .options({ format: formatTreeOrJson })
      .positional('bip32Key', { type: 'string', demandOption: true })
      .option('all', { type: 'boolean', default: false })
      .option('derive', { type: 'string', description: 'show xpub derived with path' });
  },
  handler(argv): void {
    console.log(formatString(parseBip32(argv.bip32Key, { derive: argv.derive }), argv));
  },
};

type GenerateBip32Args = {
  seed: string;
};

export const cmdBip32Generate: CommandModule<unknown, GenerateBip32Args> = {
  command: 'generateFromSeed',
  describe: 'generate keypair from seed - do not use for real keys!',
  builder(b) {
    return b.option('seed', { type: 'string', demandOption: true, default: 'setec astronomy' });
  },
  handler(argv) {
    const key = utxolib.bip32.fromSeed(crypto.createHash('sha256').update(argv.seed).digest());
    console.log(key.toBase58());
    console.log(key.neutered().toBase58());
  },
};

export const cmdBip32: CommandModule<unknown, unknown> = {
  command: 'bip32 <command>',
  describe: 'bip32 commands',
  builder(b: yargs.Argv<unknown>): yargs.Argv<unknown> {
    return b.strict().command(cmdBip32Parse).command(cmdBip32Generate).demandCommand();
  },
  handler(): void {
    // do nothing
  },
};

Выполнить команду


Для локальной разработки. Не используйте в интернете!