PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-lib/src/testutil
Просмотр файла: keys.ts
import { BIP32API, BIP32Factory, BIP32Interface } from 'bip32';
import * as crypto from 'crypto';
import { Triple } from '../bitgo/types';
import { RootWalletKeys } from '../bitgo/wallet/WalletKeys';
import { ecc, ECPair, ECPairInterface } from '../noble_ecc';
import { networks } from '../networks';
const bip32: BIP32API = BIP32Factory(ecc);
export type KeyTriple = Triple<BIP32Interface>;
export type UncompressedKeyTriple = Triple<ECPairInterface>;
export function getKey(seed: string): BIP32Interface {
return bip32.fromSeed(crypto.createHash('sha256').update(seed).digest());
}
export function getKeyTriple(seed: string): KeyTriple {
return [getKey(seed + '.0'), getKey(seed + '.1'), getKey(seed + '.2')];
}
function getUncompressedKey(input) {
// Using input for deterministic randomness
return ECPair.makeRandom({
compressed: false,
network: networks.testnet,
rng: (): Buffer => {
return Buffer.alloc(32, input);
},
});
}
export function getUncompressedKeyTriple(inputs: Triple<number>): UncompressedKeyTriple {
return [getUncompressedKey(inputs[0]), getUncompressedKey(inputs[1]), getUncompressedKey(inputs[2])];
}
export function getKeyName(triple: Triple<BIP32Interface>, k: BIP32Interface): string | undefined {
return ['user', 'backup', 'bitgo'][triple.indexOf(k)];
}
export function getDefaultCosigner<T>(keyset: Triple<T>, signer: T): T {
const eq = (a: T, b: T) => a === b || (Buffer.isBuffer(a) && Buffer.isBuffer(b) && a.equals(b));
const [user, backup, bitgo] = keyset;
if (eq(signer, user)) {
return bitgo;
}
if (eq(signer, backup)) {
return bitgo;
}
if (eq(signer, bitgo)) {
return user;
}
throw new Error(`signer not in pubkeys`);
}
export function getDefaultWalletKeys(): RootWalletKeys {
return new RootWalletKeys(getKeyTriple('default'));
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!