@safeheron/master-key-derive
Version:
Mnemonic Generation;
70 lines (69 loc) • 2.26 kB
TypeScript
import * as BN from "bn.js";
export declare enum Purpose {
MASTER_KEY_DERIVE = 0,
AUTH_KEY_DERIVE = 1,
POLICY_ENGINE = 2
}
export declare enum SigAlg {
ECDSA_SECP256K1 = 0,
EDDSA_ED25519 = 1,
BLS_BN12_381 = 2,
SCHNORR_SECP256K1 = 3,
ECDSA_P256 = 4,
SCHNORR_P256 = 5
}
export declare class MasterKeyPair {
readonly xprv: string;
readonly xpub: string;
constructor(xprv: string, xpub: string);
static _checkIsValidChainCode(masterKeyShares: MasterKeyShare[]): boolean;
static _checkIsFullChainCode(masterKeyShares: MasterKeyShare[]): boolean;
/**
* Recover master key pair from all the MasterKeyShares
* @param masterKeyShares
* @param sigAlg
*/
static recoverFromMasterKeyShares(masterKeyShares: MasterKeyShare[], sigAlg: SigAlg): MasterKeyPair;
private static _recoverFromMnemonics;
/**
* Recover master key pair from all the Mnemonics
* @param mnemonics
* @param sigAlg
*/
static recoverFromMnemonics(mnemonics: Mnemonics[], sigAlg: SigAlg): MasterKeyPair;
}
export declare class MasterKeyShare {
readonly keyShare: BN;
readonly chainCodeShare: BN;
readonly isFullChainCode: boolean;
constructor(keyShare: BN, chainCodeShare: BN, isFullChainCode: boolean);
}
export declare class Mnemonics {
readonly mnemo: string;
readonly extraMnemo: string;
constructor(mnemo: string, extraMnemo: string);
/***
* Create Mnemonics from key share and chain code.
*
* Warn: only invoked by the old user of mpc wallet
*
* @param keyShare
* @param chainCode
*/
static createMnemonics(keyShare: BN, chainCode: BN): Mnemonics;
/**
* Create a new Mnemonic
*/
static generateMnemonic(): Mnemonics;
private _derive;
private _derive_old_secp256k1;
/**
* Derive function
* @param purpose
* @param sigAlg
* @param alg
*/
derive(purpose: Purpose, sigAlg: SigAlg, alg: number): MasterKeyShare;
}
export declare function mnemonicToExtendedPub(sigAlg: SigAlg, alt: number, mnemo: string, chaincode?: string): string;
export declare function extendedPubSharesAgg(sigAlg: SigAlg, extendedPubShares: string[], isFullChainCode: boolean): string;