PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/avalanche/src/utils
Просмотр файла: mnemonic.ts
/**
* @packageDocumentation
* @module Utils-Mnemonic
*/
import { Buffer } from "buffer/"
import { Wordlist } from "ethers"
import { InvalidEntropy } from "./errors"
const bip39: any = require("bip39")
const randomBytes: any = require("randombytes")
/**
* BIP39 Mnemonic code for generating deterministic keys.
*
*/
export default class Mnemonic {
private static instance: Mnemonic
private constructor() {}
protected wordlists: string[] = bip39.wordlists
/**
* Retrieves the Mnemonic singleton.
*/
static getInstance(): Mnemonic {
if (!Mnemonic.instance) {
Mnemonic.instance = new Mnemonic()
}
return Mnemonic.instance
}
/**
* Return wordlists
*
* @param language a string specifying the language
*
* @returns A [[Wordlist]] object or array of strings
*/
getWordlists(language?: string): string[] | Wordlist {
if (language !== undefined) {
return this.wordlists[`${language}`]
} else {
return this.wordlists
}
}
/**
* Synchronously takes mnemonic and password and returns {@link https://github.com/feross/buffer|Buffer}
*
* @param mnemonic the mnemonic as a string
* @param password the password as a string
*
* @returns A {@link https://github.com/feross/buffer|Buffer}
*/
mnemonicToSeedSync(mnemonic: string, password: string = ""): Buffer {
const seed: Buffer = bip39.mnemonicToSeedSync(mnemonic, password)
return Buffer.from(seed)
}
/**
* Asynchronously takes mnemonic and password and returns Promise {@link https://github.com/feross/buffer|Buffer}
*
* @param mnemonic the mnemonic as a string
* @param password the password as a string
*
* @returns A {@link https://github.com/feross/buffer|Buffer}
*/
async mnemonicToSeed(
mnemonic: string,
password: string = ""
): Promise<Buffer> {
const seed: Buffer = await bip39.mnemonicToSeed(mnemonic, password)
return Buffer.from(seed)
}
/**
* Takes mnemonic and wordlist and returns buffer
*
* @param mnemonic the mnemonic as a string
* @param wordlist Optional the wordlist as an array of strings
*
* @returns A string
*/
mnemonicToEntropy(mnemonic: string, wordlist?: string[]): string {
return bip39.mnemonicToEntropy(mnemonic, wordlist)
}
/**
* Takes mnemonic and wordlist and returns buffer
*
* @param entropy the entropy as a {@link https://github.com/feross/buffer|Buffer} or as a string
* @param wordlist Optional, the wordlist as an array of strings
*
* @returns A string
*/
entropyToMnemonic(entropy: Buffer | string, wordlist?: string[]): string {
return bip39.entropyToMnemonic(entropy, wordlist)
}
/**
* Validates a mnemonic
11*
* @param mnemonic the mnemonic as a string
* @param wordlist Optional the wordlist as an array of strings
*
* @returns A string
*/
validateMnemonic(mnemonic: string, wordlist?: string[]): string {
return bip39.validateMnemonic(mnemonic, wordlist)
}
/**
* Sets the default word list
*
* @param language the language as a string
*
*/
setDefaultWordlist(language: string): void {
bip39.setDefaultWordlist(language)
}
/**
* Returns the language of the default word list
*
* @returns A string
*/
getDefaultWordlist(): string {
return bip39.getDefaultWordlist()
}
/**
* Generate a random mnemonic (uses crypto.randomBytes under the hood), defaults to 256-bits of entropy
*
* @param strength Optional the strength as a number
* @param rng Optional the random number generator. Defaults to crypto.randomBytes
* @param wordlist Optional
*
*/
generateMnemonic(
strength?: number,
rng?: (size: number) => Buffer,
wordlist?: string[]
): string {
strength = strength || 256
if (strength % 32 !== 0) {
throw new InvalidEntropy("Error - Invalid entropy")
}
rng = rng || randomBytes
return bip39.generateMnemonic(strength, rng, wordlist)
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!