Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions modules/abstract-utxo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
]
},
"dependencies": {
"@bitgo/secp256k1": "^1.5.0",
"@bitgo/blockapis": "^1.12.0",
"@bitgo/sdk-api": "^1.70.1",
"@bitgo/sdk-core": "^36.12.0",
Expand Down
6 changes: 3 additions & 3 deletions modules/abstract-utxo/src/abstractUtxoCoin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import { randomBytes } from 'crypto';

import _ from 'lodash';
import * as utxolib from '@bitgo/utxo-lib';
import { bip32, bitgo, getMainnet, isMainnet, isTestnet } from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/secp256k1';
import { bitgo, getMainnet, isMainnet, isTestnet } from '@bitgo/utxo-lib';
import {
AddressCoinSpecific,
AddressTypeChainMismatchError,
Expand Down Expand Up @@ -46,7 +47,6 @@ import {
Wallet,
isValidPrv,
isValidXprv,
bitcoin,
} from '@bitgo/sdk-core';

import {
Expand Down Expand Up @@ -1160,7 +1160,7 @@ export abstract class AbstractUtxoCoin extends BaseCoin {
throw new Error('invalid private key');
}
if (publicKey) {
const genPubKey = bitcoin.HDNode.fromBase58(prv).neutered().toBase58();
const genPubKey = bip32.fromBase58(prv).neutered().toBase58();
if (genPubKey !== publicKey) {
throw new Error('public key does not match private key');
}
Expand Down
5 changes: 2 additions & 3 deletions modules/abstract-utxo/src/descriptor/builder/parse.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { BIP32Interface } from '@bitgo/utxo-lib';
import * as utxolib from '@bitgo/utxo-lib';
import { BIP32Interface, bip32 } from '@bitgo/secp256k1';
import { Descriptor } from '@bitgo/wasm-miniscript';

import { DescriptorBuilder, getDescriptorFromBuilder } from './builder';
Expand Down Expand Up @@ -55,7 +54,7 @@ function parseMulti(node: unknown): {
});
return {
threshold,
keys: keyWithPath.map((k) => utxolib.bip32.fromBase58(k.xpub)),
keys: keyWithPath.map((k) => bip32.fromBase58(k.xpub)),
path: paths[0],
};
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BitGoAPI } from '@bitgo/sdk-api';
import * as utxolib from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/secp256k1';
import { Wallet } from '@bitgo/sdk-core';

import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
Expand Down Expand Up @@ -56,12 +56,12 @@ export async function createDescriptorWalletWithWalletPassphrase(
if (!userKeychain.prv) {
throw new Error('Missing private key');
}
const userKey = utxolib.bip32.fromBase58(userKeychain.prv);
const userKey = bip32.fromBase58(userKeychain.prv);
const cosigners = [backupKeychain, bitgoKeychain].map((keychain) => {
if (!keychain.pub) {
throw new Error('Missing public key');
}
return utxolib.bip32.fromBase58(keychain.pub);
return bip32.fromBase58(keychain.pub);
});
return createDescriptorWallet(bitgo, coin, {
...params,
Expand Down
8 changes: 4 additions & 4 deletions modules/abstract-utxo/src/keychains.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import assert from 'assert';

import * as t from 'io-ts';
import * as utxolib from '@bitgo/utxo-lib';
import { BIP32Interface, bip32 } from '@bitgo/secp256k1';
import { IRequestTracer, IWallet, KeyIndices, promiseProps, Triple } from '@bitgo/sdk-core';

import { AbstractUtxoCoin } from './abstractUtxoCoin';
Expand Down Expand Up @@ -48,12 +48,12 @@ export function toKeychainTriple(keychains: UtxoNamedKeychains): Triple<UtxoKeyc

export function toBip32Triple(
keychains: UtxoNamedKeychains | Triple<{ pub: string }> | Triple<string>
): Triple<utxolib.BIP32Interface> {
): Triple<BIP32Interface> {
if (Array.isArray(keychains)) {
return keychains.map((keychain: { pub: string } | string) => {
const v = typeof keychain === 'string' ? keychain : keychain.pub;
return utxolib.bip32.fromBase58(v);
}) as Triple<utxolib.BIP32Interface>;
return bip32.fromBase58(v);
}) as Triple<BIP32Interface>;
}

return toBip32Triple(toKeychainTriple(keychains));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BIP32Interface, bip32 } from '@bitgo/secp256k1';
import * as utxolib from '@bitgo/utxo-lib';
import { BIP32Interface } from '@bitgo/utxo-lib';
import { BaseCoin } from '@bitgo/sdk-core';

import { getNetworkFromChain } from '../names';
Expand All @@ -23,7 +23,7 @@ export function createHalfSigned(
): OfflineVaultHalfSigned {
const network = getNetworkFromChain(coin);
if (typeof prv === 'string') {
prv = utxolib.bip32.fromBase58(prv);
prv = bip32.fromBase58(prv);
}
prv = BaseCoin.deriveKeyWithSeedBip32(prv, derivationId).key;
if (!OfflineVaultSignable.is(tx)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as utxolib from '@bitgo/utxo-lib';
import { BIP32Interface, bip32 } from '@bitgo/secp256k1';
import { Triple } from '@bitgo/sdk-core';
import * as t from 'io-ts';

Expand Down Expand Up @@ -28,8 +28,8 @@ export type OfflineVaultUnsigned = t.TypeOf<typeof OfflineVaultSignable>;

type WithXpub = { xpub: string };
type NamedKeys = { user: WithXpub; backup: WithXpub; bitgo: WithXpub };
export function toKeyTriple(xpubs: NamedKeys): Triple<utxolib.BIP32Interface> {
export function toKeyTriple(xpubs: NamedKeys): Triple<BIP32Interface> {
return [xpubs.user.xpub, xpubs.backup.xpub, xpubs.bitgo.xpub].map((xpub) =>
utxolib.bip32.fromBase58(xpub)
) as Triple<utxolib.BIP32Interface>;
bip32.fromBase58(xpub)
) as Triple<BIP32Interface>;
}
2 changes: 1 addition & 1 deletion modules/abstract-utxo/src/recovery/crossChainRecovery.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as utxolib from '@bitgo/utxo-lib';
import { bip32, BIP32Interface } from '@bitgo/utxo-lib';
import { BIP32Interface, bip32 } from '@bitgo/secp256k1';
import { Dimensions } from '@bitgo/unspents';
import { BitGoBase, IWallet, Keychain, Triple, Wallet } from '@bitgo/sdk-core';
import { decrypt } from '@bitgo/sdk-api';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import * as utxolib from '@bitgo/utxo-lib';
import { bip322 } from '@bitgo/utxo-core';
import { bip32, BIP32Interface, bitgo } from '@bitgo/utxo-lib';
import { BIP32Interface, bip32 } from '@bitgo/secp256k1';
import { bitgo } from '@bitgo/utxo-lib';
import { Triple } from '@bitgo/sdk-core';
import * as utxocore from '@bitgo/utxo-core';

Expand Down Expand Up @@ -302,7 +303,7 @@ export function explainPsbt<TNumber extends number | bigint, Tx extends bitgo.Ut
utxocore.paygo.verifyPayGoAddressProof(
psbt,
payGoVerificationInfo.outputIndex,
utxolib.bip32.fromBase58(payGoVerificationInfo.verificationPubkey, utxolib.networks.bitcoin).publicKey
bip32.fromBase58(payGoVerificationInfo.verificationPubkey, utxolib.networks.bitcoin).publicKey
);
} catch (e) {
if (strict) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import assert from 'assert';

import _ from 'lodash';
import { bip32, BIP32Interface, bitgo } from '@bitgo/utxo-lib';
import { BIP32Interface, bip32 } from '@bitgo/secp256k1';
import { bitgo } from '@bitgo/utxo-lib';
import * as utxolib from '@bitgo/utxo-lib';
import { isTriple, Triple } from '@bitgo/sdk-core';

Expand Down
2 changes: 1 addition & 1 deletion modules/abstract-utxo/src/transaction/signTransaction.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import _ from 'lodash';
import { BitGoBase } from '@bitgo/sdk-core';
import * as utxolib from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/secp256k1';
import buildDebug from 'debug';

import { AbstractUtxoCoin, SignTransactionOptions } from '../abstractUtxoCoin';
Expand Down
2 changes: 1 addition & 1 deletion modules/abstract-utxo/src/verifyKey.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import assert from 'assert';

import buildDebug from 'debug';
import * as utxolib from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/utxo-lib';
import { bip32 } from '@bitgo/secp256k1';
import * as bitcoinMessage from 'bitcoinjs-message';
import { BitGoBase, decryptKeychainPrivateKey, KeyIndices } from '@bitgo/sdk-core';

Expand Down
14 changes: 13 additions & 1 deletion modules/secp256k1/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,4 +176,16 @@ const ECPair: ECPairAPI = ECPairFactory(ecc);
const bip32: BIP32API = BIP32Factory(ecc);
const musig: MuSig = MuSigFactory(crypto);

export { ecc, ECPair, ECPairAPI, ECPairInterface, bip32, BIP32API, BIP32Interface, musig, MuSig };
export {
ecc,
ECPair,
ECPairAPI,
ECPairFactory,
ECPairInterface,
bip32,
BIP32API,
BIP32Factory,
BIP32Interface,
musig,
MuSig,
};
1 change: 1 addition & 0 deletions modules/utxo-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
]
},
"dependencies": {
"@bitgo/secp256k1": "^1.5.0",
"@bitgo/unspents": "^0.50.2",
"@bitgo/utxo-lib": "^11.11.0",
"@bitgo/wasm-miniscript": "2.0.0-beta.7",
Expand Down
2 changes: 1 addition & 1 deletion modules/utxo-core/src/bip32utils.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BIP32Interface } from '@bitgo/secp256k1';
import * as utxolib from '@bitgo/utxo-lib';
import * as bitcoinMessage from 'bitcoinjs-message';
import { BIP32Interface } from '@bitgo/utxo-lib';
/**
* bip32-aware wrapper around bitcoin-message package
* @see {bitcoinMessage.sign}
Expand Down
4 changes: 2 additions & 2 deletions modules/utxo-core/src/descriptor/psbt/sign.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import assert from 'assert';

import * as utxolib from '@bitgo/utxo-lib';
import { BIP32Interface, ECPairInterface } from '@bitgo/secp256k1';
import { Psbt as WasmPsbt } from '@bitgo/wasm-miniscript';

/** These can be replaced when @bitgo/wasm-miniscript is updated */
Expand Down Expand Up @@ -31,7 +31,7 @@ export function getNewSignatureCount(signResult: SignPsbtResult): number {
return Object.values(signResult).reduce((sum, signatures) => sum + getNewSignatureCountForInput(signatures), 0);
}

type Key = Buffer | utxolib.BIP32Interface | utxolib.ECPairInterface;
type Key = Buffer | BIP32Interface | ECPairInterface;

/** Convenience function to sign a PSBT with a key */
export function signWithKey(psbt: WasmPsbt, key: Key): SignPsbtResult {
Expand Down
2 changes: 1 addition & 1 deletion modules/utxo-core/src/testutil/descriptor/descriptors.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import assert from 'assert';

import { bip32, BIP32Interface } from '@bitgo/secp256k1';
import { Miniscript, Descriptor, ast } from '@bitgo/wasm-miniscript';
import { bip32, BIP32Interface } from '@bitgo/utxo-lib';

import { DescriptorMap, PsbtParams } from '../../descriptor';
import { getKeyTriple, Triple, KeyTriple } from '../key.utils';
Expand Down
4 changes: 2 additions & 2 deletions modules/utxo-core/src/testutil/key.utils.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as crypto from 'crypto';

import { bip32, BIP32Interface } from '@bitgo/secp256k1';
import * as utxolib from '@bitgo/utxo-lib';
import { BIP32Interface } from '@bitgo/utxo-lib';

export type Triple<T> = [T, T, T];

Expand All @@ -13,7 +13,7 @@ export type KeyTriple = Triple<BIP32Interface>;
*/
export function getKey(seed?: string): BIP32Interface {
const finalSeed = seed === undefined ? crypto.randomBytes(32) : crypto.createHash('sha256').update(seed).digest();
return utxolib.bip32.fromSeed(finalSeed);
return bip32.fromSeed(finalSeed);
}

/**
Expand Down
3 changes: 2 additions & 1 deletion modules/utxo-core/test/bip32utils.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import * as crypto from 'crypto';
import * as assert from 'assert';

import { bip32 } from '@bitgo/secp256k1';
import * as utxolib from '@bitgo/utxo-lib';

import { signMessage, verifyMessage } from '../src/bip32utils';
Expand All @@ -10,7 +11,7 @@ describe('bip32utils', function () {
return Array.from({ length }).map((_, i) => crypto.createHash('sha256').update(`${i}`).digest());
}
it('signMessage/verifyMessage', function () {
const keys = getSeedBuffers(4).map((seed) => utxolib.bip32.fromSeed(seed));
const keys = getSeedBuffers(4).map((seed) => bip32.fromSeed(seed));
const messages = ['hello', 'goodbye', Buffer.from('\x01\x02\x03'), Buffer.from('')];
keys.forEach((key) => {
messages.forEach((message) => {
Expand Down
3 changes: 2 additions & 1 deletion modules/utxo-core/test/paygo/psbt/payGoAddressProof.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import assert from 'assert';
import crypto from 'crypto';

import { bip32 } from '@bitgo/secp256k1';
import * as utxolib from '@bitgo/utxo-lib';
import { decodeProprietaryKey } from 'bip174/src/lib/proprietaryKeyVal';
import { KeyValue } from 'bip174/src/lib/interfaces';
Expand All @@ -19,7 +20,7 @@ import { NIL_UUID } from '../../../src/paygo/attestation';

// To construct our PSBTs
export const network = utxolib.networks.bitcoin;
const keys = [1, 2, 3].map((v) => utxolib.bip32.fromSeed(Buffer.alloc(16, `test/2/${v}`), network));
const keys = [1, 2, 3].map((v) => bip32.fromSeed(Buffer.alloc(16, `test/2/${v}`), network));
const rootWalletKeys = new utxolib.bitgo.RootWalletKeys([keys[0], keys[1], keys[2]]);

// PSBT INPUTS AND OUTPUTS
Expand Down
7 changes: 1 addition & 6 deletions modules/utxo-lib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,14 @@
],
"dependencies": {
"@bitgo/blake2b": "^3.2.4",
"@bitgo/secp256k1": "^1.5.0",
"@brandonblack/musig": "^0.0.1-alpha.0",
"@noble/curves": "1.8.1",
"@noble/secp256k1": "1.6.3",
"bech32": "^2.0.0",
"bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4",
"bip32": "^3.0.1",
"bitcoin-ops": "^1.3.0",
"bitcoinjs-lib": "npm:@bitgo-forks/bitcoinjs-lib@7.1.0-master.11",
"bs58check": "^2.1.2",
"cashaddress": "^1.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
"ecpair": "npm:@bitgo/ecpair@2.1.0-rc.0",
"fastpriorityqueue": "^0.7.1",
"typeforce": "^1.11.3",
"varuint-bitcoin": "^1.1.2"
Expand Down
2 changes: 1 addition & 1 deletion modules/utxo-lib/src/bitgo/Musig2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
checkXOnlyPublicKey,
toXOnlyPublicKey,
} from './outputScripts';
import { ecc, musig } from '../noble_ecc';
import { ecc, musig } from '@bitgo/secp256k1';
import { Tuple } from './types';
import { calculateTapTweak, tapTweakPubkey } from '../taproot';
import { Transaction } from '../index';
Expand Down
2 changes: 1 addition & 1 deletion modules/utxo-lib/src/bitgo/UtxoPsbt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import {
import { checkForInput } from 'bip174/src/lib/utils';
import { BufferWriter, varuint } from 'bitcoinjs-lib/src/bufferutils';
import { SessionKey } from '@brandonblack/musig';
import { BIP32Factory, BIP32Interface } from 'bip32';
import * as bs58check from 'bs58check';
import { decodeProprietaryKey, encodeProprietaryKey } from 'bip174/src/lib/proprietaryKeyVal';
import { BIP32Factory, BIP32Interface } from '@bitgo/secp256k1';

import {
taproot,
Expand Down
3 changes: 1 addition & 2 deletions modules/utxo-lib/src/bitgo/keyutil.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { ECPairInterface } from 'ecpair';
import * as bs58check from 'bs58check';
import { Network } from '../networks';
import { bip32, ECPair } from '../noble_ecc';
import { bip32, ECPair, ECPairInterface } from '@bitgo/secp256k1';

/**
* Create an ECPair from the raw private key bytes
Expand Down
2 changes: 1 addition & 1 deletion modules/utxo-lib/src/bitgo/legacysafe/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* */

import * as assert from 'assert';
import { ecc as eccLib } from '../../noble_ecc';
import { ecc as eccLib } from '@bitgo/secp256k1';
import { isBitcoin, Network } from '../../networks';
import { isTriple } from '../types';
import * as bitcoinjs from 'bitcoinjs-lib';
Expand Down
2 changes: 1 addition & 1 deletion modules/utxo-lib/src/bitgo/outputScripts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as taproot from '../taproot';

import { isTriple, Triple, Tuple } from './types';

import { ecc as eccLib } from '../noble_ecc';
import { ecc as eccLib } from '@bitgo/secp256k1';
import { getDepthFirstTaptree, getTweakedOutputKey } from '../taproot';

export { scriptTypeForChain } from './wallet/chains';
Expand Down
5 changes: 2 additions & 3 deletions modules/utxo-lib/src/bitgo/signature.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { BIP32Interface } from 'bip32';

import { Transaction, taproot, TxOutput, ScriptSignature } from 'bitcoinjs-lib';
import { BIP32Interface } from '@bitgo/secp256k1';

import { UtxoTransaction } from './UtxoTransaction';
import { UtxoTransactionBuilder } from './UtxoTransactionBuilder';
Expand All @@ -15,7 +14,7 @@ import {
} from './outputScripts';
import { Triple } from './types';
import { getMainnet, Network, networks } from '../networks';
import { ecc as eccLib } from '../noble_ecc';
import { ecc as eccLib } from '@bitgo/secp256k1';
import { parseSignatureScript2Of3 } from './parseInput';
import { getTaprootOutputKey } from '../taproot';

Expand Down
2 changes: 1 addition & 1 deletion modules/utxo-lib/src/bitgo/wallet/Psbt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import * as assert from 'assert';

import { GlobalXpub, PartialSig, PsbtInput, TapScriptSig } from 'bip174/src/lib/interfaces';
import { checkForInput } from 'bip174/src/lib/utils';
import { BIP32Interface } from 'bip32';
import * as bs58check from 'bs58check';
import { BIP32Interface } from '@bitgo/secp256k1';
import { UtxoPsbt } from '../UtxoPsbt';
import { Psbt } from '../../';
import { UtxoTransaction } from '../UtxoTransaction';
Expand Down
Loading