From 613295d859041cd7a708069b7ba66942427d9225 Mon Sep 17 00:00:00 2001 From: Tomas Zorvan Date: Wed, 11 Dec 2019 14:11:21 +0100 Subject: [PATCH] Feature/bigint (#99) * replace bitcoinjs-lib byt trezor-utxo-lib * change imports for trezor-utxo-lib * replace number with strings (amount) * fix OutputInfo flowtype * Update .flowconfig * Update .travis.yml * import trezor-utxo-lib package from npm * Add new @trezor/utxo-lib * New version of trezor-link, incorporate bridge-fallback changes * Bump trezor-link * Bump trezor-link because of webusb changes * Cancel request when cached and entered passphrase are not the same. Emit Invalid passphrase error. * Necessary changes for Zcash Blossom upgrade * Update @trezor/utxo-lib, bump version --- .travis.yml | 2 +- API.md | 2 +- flowtype/bitcoin-zcash.js | 384 ---------------------- flowtype/trezor-utxo-lib.js | 406 ++++++++++++++++++++++++ package.json | 6 +- src/.flowconfig | 3 +- src/device-list.js | 6 +- src/device.js | 2 +- src/session.js | 2 +- src/trezortypes.js | 12 +- src/utils/call.js | 6 +- src/utils/hdnode.js | 2 +- src/utils/signbjstx.js | 42 +-- src/utils/signtx.js | 8 +- yarn.lock | 613 +++++++++++++++++++----------------- 15 files changed, 783 insertions(+), 713 deletions(-) delete mode 100644 flowtype/bitcoin-zcash.js create mode 100644 flowtype/trezor-utxo-lib.js diff --git a/.travis.yml b/.travis.yml index 0a2879f7..2e4c6ad7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: node_js dist: trusty node_js: - - "6.0.0" + - "6.2.2" before_script: - yarn diff --git a/API.md b/API.md index 7f06b2e7..f26bf12c 100644 --- a/API.md +++ b/API.md @@ -153,7 +153,7 @@ Note that the lenght of the action is not tied to the actual device actions. You | getAddress | path: Array<number>
coin: string
display: boolean | Promise<Response
<{ address: string }>>> | Gets address with a given path.
Coin is the name of coin ("bitcoin", "testnet", "litecoin",...)
if `display` is true, the address is displayed on TREZOR and user has to confirm. | | ethereumGetAddress | address_n: Array<number>
display: ?boolean | Promise<Response
<{ address: string, path: Array<number> }>> | Gets Ethereum address from a given path.
if `display` is true, the address is displayed on TREZOR and user has to confirm. | | verifyAddress | path: Array<number>
refAddress: string 
coin: string  | Promise<boolean> | Gets address with the given path, displays it on display and compares to the `refAddress`.

Note: promise doesn't reject on different result, but resolves with **false**. It rejects on user not confirming on device. | -| getHDNode | path: Array<number>
coin: string  | Promise<HDNode> | Returns [bitcoin.js HDNode](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/src/hdnode.js) with the given path. (No confirmation needed; it's public node.) | +| getHDNode | path: Array<number>
coin: string  | Promise<HDNode> | Returns [bitcoin.js HDNode](https://github.com/trezor/trezor-utxo-lib/tree/master/src/hdnode.js) with the given path. (No confirmation needed; it's public node.) | | wipeDevice | | Promise | Wipes the device (after user confirms). | | resetDevice | settings: {
`strength`: number,
`passphrase_protection`:
boolean,
`pin_protection`: boolean,
`label`: string
`language`: string
`u2f_counter`: number
`skip_backup`: boolean } | Promise | Sets a new device. It has to be wiped first. It resolves after user confirms all the words on display. | | loadDevice | settings: {
`strength`: number,
`passphrase_protection`:
boolean,
`pin_protection`: boolean,
`label`: string,
`mnemonic`: string,
`node` HDNode,
`payload`: string }
network: string | Promise | Loads a device with specific mnemonic and/or HD Node and/or xprv. *Do not use this if you don't need to; use recoverDevice*
Either mnemonic, node or payload have to be present. HDNode is an internal TREZOR structure, not bitcoin.js HD Node. | diff --git a/flowtype/bitcoin-zcash.js b/flowtype/bitcoin-zcash.js deleted file mode 100644 index 1ba87c6d..00000000 --- a/flowtype/bitcoin-zcash.js +++ /dev/null @@ -1,384 +0,0 @@ -/* @flow */ - -// TODO import BigInteger from 'bigi' -// TODO import Point from 'ecurve' -// For now, I just copy-paste the definition from there - -// ---------- copypasta start ---- -declare class $npm$bigi$BigInteger { - constructor(input: string | Array, base?: number): void, - static (input: string | Array, base?: number): $npm$bigi$BigInteger, - - toString(base?: number): string, - toByteArray(): Array, - bitLength(): number, - byteLength(): number, - add(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, - subtract(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, - multiply(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, - divide(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, - mod(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, - modInverse(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, - shiftLeft(o: number): $npm$bigi$BigInteger, - shiftRight(o: number): $npm$bigi$BigInteger, - isProbablePrime(): boolean, - - static fromByteArrayUnsigned(array: Array): $npm$bigi$BigInteger, - static fromBuffer(buffer: Buffer): $npm$bigi$BigInteger, - static fromDERInteger(buffer: Buffer): $npm$bigi$BigInteger, - static fromHex(hex: string): $npm$bigi$BigInteger, - - toByteArrayUnsigned(): Array, - toBuffer(): Buffer, - toDERInteger(): Buffer, - toHex(): string, -} - -declare module 'bigi' { - declare export default typeof $npm$bigi$BigInteger; -} - -declare class $npm$ecurve$Curve { - p: $npm$bigi$BigInteger, - a: $npm$bigi$BigInteger, - b: $npm$bigi$BigInteger, - G: $npm$ecurve$Point, - n: $npm$bigi$BigInteger, - h: $npm$bigi$BigInteger, - - constructor( - p: $npm$bigi$BigInteger, - a: $npm$bigi$BigInteger, - b: $npm$bigi$BigInteger, - Gx: $npm$bigi$BigInteger, - Gy: $npm$bigi$BigInteger, - n: $npm$bigi$BigInteger, - h: $npm$bigi$BigInteger - ): void, - - infinity: $npm$ecurve$Point, - isInfinity(point: $npm$ecurve$Point): boolean, - validate(a: $npm$ecurve$Point): boolean, - isOnCurve(a: $npm$ecurve$Point): boolean, - pointFromX(odd: boolean, x: $npm$ecurve$Point): $npm$ecurve$Point, -} - -declare class $npm$ecurve$Point { - constructor( - curve: $npm$ecurve$Curve, - x: $npm$bigi$BigInteger, - y: $npm$bigi$BigInteger, - z: $npm$bigi$BigInteger - ): void, - - x: $npm$bigi$BigInteger, - y: $npm$bigi$BigInteger, - z: $npm$bigi$BigInteger, - - zInv: $npm$bigi$BigInteger, - affineX: $npm$bigi$BigInteger, - affineY: $npm$bigi$BigInteger, - - static fromAffine(curve: $npm$ecurve$Curve, x: $npm$bigi$BigInteger, y: $npm$bigi$BigInteger): $npm$ecurve$Point, - equals(other: $npm$ecurve$Point): boolean, - negate(): $npm$ecurve$Point, - add(other: $npm$ecurve$Point): $npm$ecurve$Point, - twice(): $npm$ecurve$Point, - multiply(k: $npm$bigi$BigInteger): $npm$ecurve$Point, - multiplyTwo(j: $npm$bigi$BigInteger, x: $npm$ecurve$Point, k: $npm$bigi$BigInteger): $npm$ecurve$Point, - - static decodeFrom(curve: $npm$ecurve$Curve, buffer: Buffer): $npm$ecurve$Point, - getEncoded(compressed: boolean): Buffer, - - toString(): string, -} - -declare module 'ecurve' { - declare var Point: typeof $npm$ecurve$Point; - - declare var Curve: typeof $npm$ecurve$Curve; - - declare function getCurveByName(name: string): ?Curve; -} -// ---------- copypasta end ---- - -declare module 'bitcoinjs-lib-zcash' { - declare type Network = { - messagePrefix: string, - bip32: { - public: number, - private: number, - }, - pubKeyHash: number, - scriptHash: number, - wif: number, - dustThreshold: number, - bech32: ?string, - coin: string, - } - - declare type Output = { - script: Buffer, - value: number, - }; - - declare type Input = { - script: Buffer, - hash: Buffer, - index: number, - sequence: number, - }; - - declare var address: { - fromBase58Check(address: string): {hash: Buffer, version: number}, - fromBech32(address: string): {data: Buffer, version: number, prefix: string}, - fromOutputScript(script: Buffer, network?: Network): string, - toBase58Check(hash: Buffer, version: number): string, - toOutputScript(address: string, network?: Network): Buffer, - }; - - declare type Stack = Array; - - declare var script: { - scriptHash: { - input: { - check: (script: Buffer, allowIncomplete: boolean) => boolean, - decode: (script: Buffer) => { - redeemScriptStack: Stack, - redeemScript: Buffer, - }, - encode: (redeemScriptSig: Buffer, redeemScript: Buffer) => Buffer, - }, - output: { - check: (script: Stack) => boolean, - encode: (scriptHash: Buffer) => Buffer, - decode: (script: Buffer) => Buffer, - }, - }, - pubKeyHash: { - input: { - check: (script: Buffer, allowIncomplete: boolean) => boolean, - decode: (script: Buffer) => { - signature: Buffer, - pubKey: Buffer, - }, - encode: (signature: Buffer, pubKey: Buffer) => Buffer, - }, - output: { - check: (script: Stack) => boolean, - encode: (pubKeyHash: Buffer) => Buffer, - decode: (script: Buffer) => Buffer, - }, - }, - witnessPubKeyHash: { - input: { - check: (script: Buffer) => boolean, - }, - output: { - check: (script: Stack) => boolean, - encode: (pubkeyHash: Buffer) => Buffer, - decode: (buffer: Buffer) => Buffer, - }, - }, - witnessScriptHash: { - input: { - check: (script: Buffer, allowIncomplete: boolean) => boolean, - }, - output: { - check: (script: Stack) => boolean, - encode: (scriptHash: Buffer) => Buffer, - decode: (script: Buffer) => Buffer, - }, - }, - }; - - declare var crypto: { - sha1(buffer: Buffer): Buffer, - sha256(buffer: Buffer): Buffer, - hash256(buffer: Buffer): Buffer, - hash160(buffer: Buffer): Buffer, - ripemd160(buffer: Buffer): Buffer, - } - - declare type ECPairOptions = { - compressed?: boolean, - network?: Network, - } - - declare class ECPair { - d: ?$npm$bigi$BigInteger, - Q: $npm$ecurve$Point, - compressed: boolean, - network: Network, - getNetwork(): Network, - - constructor(d: ?$npm$bigi$BigInteger, Q: ?$npm$ecurve$Point, options: ECPairOptions): void, - getAddress(): string, - getPublicKeyBuffer(): Buffer, - static fromPublicKeyBuffer(buffer: Buffer): ECPair, - verify: (hash: Buffer, signature: ECSignature) => boolean, - sign(hash: Buffer): Buffer, - toWIF(): string, - static fromWIF(string: string, network: Network): ECPair, - static makeRandom(): ECPair, - } - - declare class HDNode { - depth: number, - parentFingerprint: number, - index: number, - keyPair: ECPair, - chainCode: Buffer, - static fromBase58( - str: string, - networks: ?(Array | Network) - ): HDNode, - derive(index: number): HDNode, - deriveHardened(index: number): HDNode, - derivePath(path: string): HDNode, - toBase58(): string, - getAddress(): string, - getFingerprint(): Buffer, - getIdentifier(): Buffer, - getNetwork(): Network, - constructor(keyPair: ECPair, chainCode: Buffer): void, - - static fromBase58(base: string, network?: ?(Network | Array), skipValidation?: boolean): HDNode, - static fromSeedHex(seed: string, network?: ?Network): HDNode, - static fromSeedBuffer(seed: Buffer, network?: ?Network): HDNode, - getPublicKeyBuffer(): Buffer, - - sign(): ECSignature, - verify(hash: Buffer, signature: ECSignature): Buffer, - neutered(): HDNode, - isNeutered(): boolean, - constructor(keyPair: ECPair, chainCode: Buffer): void, - static HIGHEST_BIT: number, - } - - declare class Transaction { - version: number, - locktime: number, - timestamp?: number, - ins: Array, - outs: Array, - versionGroupId: string, - expiry: number, - dashType: number, - dashPayload: number, - invalidTransaction: boolean, - - constructor(network?: ?Network): void, - static fromHex(hex: string, network: ?Network): Transaction, - static fromBuffer(buffer: Buffer, network: ?Network, __noStrict?: boolean): Transaction, - toHex(): string, - addInput(hash: Buffer, index: number, sequence?: ?number, scriptSig?: Buffer): void, - addOutput(scriptPubKey: Buffer, value: number): void, - getHash(): Buffer, - toBuffer(): Buffer, - toHex(): string, - getId(): string, - - static isCoinbaseHash(buffer: Buffer): boolean, - isCoinbase(): boolean, - byteLength(): number, - - joinsplitByteLength(): number, - joinsplits: Array, - - clone(): Transaction, - hashForSignature(inIndex: number, prevOutScript: Buffer, hashType: number): Buffer, - setInputScript(index: number, scriptSig: Buffer): void, - getExtraData(): ?Buffer, - isDashSpecialTransaction(): boolean, - isZcashTransaction(): boolean, - } - - declare class TransactionBuilder { - network: Network, - inputs: Array, - tx: Transaction, - - setLockTime(locktime: number): void, - setVersion(version: number): void, - addInput(txhash: string | Transaction | Buffer, vout: number, sequence?: number, prevOutScript?: Buffer): void, - addOutput(scriptPubKey: string | Buffer, value: number): void, - build(): Transaction, - buildIncomplete(): Transaction, - sign(index: number, keyPair: ECPair, redeemScript: Buffer, hashType: number): void, - - static fromTransaction(transaction: Transaction, network: ?Network): TransactionBuilder, - - } - - declare var networks: {[key: string]: Network} - declare var opcodes: {[key: string]: number} - - declare class ECSignature { - r: $npm$bigi$BigInteger, - s: $npm$bigi$BigInteger, - constructor(r: $npm$bigi$BigInteger, s: $npm$bigi$BigInteger): void, - - static parseCompact(buffer: Buffer): { - compressed: boolean, - i: number, - signature: Buffer, - }, - - static fromDER(buffer: Buffer): ECSignature, - static parseScriptSignature(buffer: Buffer): { - signature: ECSignature, - hashType: number, - }, - - toCompact(i: number, compressed: boolean): Buffer, - toDER(): Buffer, - toScriptSignature(hashType: number): Buffer, - } - - declare class Block { - version: number, - prevHash: Buffer, - merkleRoot: Buffer, - timestamp: number, - bits: number, - nonce: number, - - getHash(): Buffer, - getId(): string, - getUTCDate(): Date, - toBuffer(headersOnly?: boolean): Buffer, - toHex(headersOnly?: boolean): string, - calculateTarget(bits: number): Buffer, - checkProofOfWork(): boolean, - - static fromBuffer(buffer: Buffer): Block, - static fromHex(hex: string): Block, - } - - declare var bufferutils: { - equal(a: Buffer, b: Buffer): boolean, - pushDataSize(i: number): number, - readPushDataInt(buffer: Buffer, offset: number): { - opcode: number, - number: number, - size: number, - }, - readUInt64LE(buffer: Buffer, offset: number): number, - readVarInt(buffer: Buffer, offset: number): { - number: number, - size: number, - }, - varIntBuffer(i: number): Buffer, - varIntSize(i: number): number, - writePushDataInt(buffer: Buffer, number: number, offset: number): number, - writeUInt64LE(buffer: Buffer, value: number, offset: number): void, - writeVarInt(buffer: Buffer, number: number, offset: number): number, - } - - declare var message: { - magicHash(message: Buffer | string, network: Network): Buffer, - sign(pair: ECPair, message: Buffer | string, network: Network): Buffer, - verify(address: string, signature: Buffer, message: Buffer | string, network: Network): boolean, - } -} \ No newline at end of file diff --git a/flowtype/trezor-utxo-lib.js b/flowtype/trezor-utxo-lib.js new file mode 100644 index 00000000..8802461f --- /dev/null +++ b/flowtype/trezor-utxo-lib.js @@ -0,0 +1,406 @@ +/* @flow */ + +// TODO import BigInteger from 'bigi' +// TODO import Point from 'ecurve' +// For now, I just copy-paste the definition from there + +// ---------- copypasta start ---- +declare class $npm$bigi$BigInteger { + constructor(input: string | Array, base?: number): void, + static (input: string | Array, base?: number): $npm$bigi$BigInteger, + + toString(base?: number): string, + toByteArray(): Array, + bitLength(): number, + byteLength(): number, + add(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + subtract(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + multiply(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + divide(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + mod(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + modInverse(o: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + shiftLeft(o: number): $npm$bigi$BigInteger, + shiftRight(o: number): $npm$bigi$BigInteger, + isProbablePrime(): boolean, + min(i: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + max(i: $npm$bigi$BigInteger): $npm$bigi$BigInteger, + compareTo(i: $npm$bigi$BigInteger): number, + + static fromByteArrayUnsigned(array: Array): $npm$bigi$BigInteger, + static fromBuffer(buffer: Buffer): $npm$bigi$BigInteger, + static fromDERInteger(buffer: Buffer): $npm$bigi$BigInteger, + static fromHex(hex: string): $npm$bigi$BigInteger, + + toByteArrayUnsigned(): Array, + toBuffer(): Buffer, + toDERInteger(): Buffer, + toHex(): string, + + static ZERO: $npm$bigi$BigInteger, +} + +declare module 'bigi' { + declare export default typeof $npm$bigi$BigInteger; +} + +declare class $npm$ecurve$Curve { + p: $npm$bigi$BigInteger, + a: $npm$bigi$BigInteger, + b: $npm$bigi$BigInteger, + G: $npm$ecurve$Point, + n: $npm$bigi$BigInteger, + h: $npm$bigi$BigInteger, + + constructor( + p: $npm$bigi$BigInteger, + a: $npm$bigi$BigInteger, + b: $npm$bigi$BigInteger, + Gx: $npm$bigi$BigInteger, + Gy: $npm$bigi$BigInteger, + n: $npm$bigi$BigInteger, + h: $npm$bigi$BigInteger + ): void, + + infinity: $npm$ecurve$Point, + isInfinity(point: $npm$ecurve$Point): boolean, + validate(a: $npm$ecurve$Point): boolean, + isOnCurve(a: $npm$ecurve$Point): boolean, + pointFromX(odd: boolean, x: $npm$ecurve$Point): $npm$ecurve$Point, +} + +declare class $npm$ecurve$Point { + constructor( + curve: $npm$ecurve$Curve, + x: $npm$bigi$BigInteger, + y: $npm$bigi$BigInteger, + z: $npm$bigi$BigInteger + ): void, + + x: $npm$bigi$BigInteger, + y: $npm$bigi$BigInteger, + z: $npm$bigi$BigInteger, + + zInv: $npm$bigi$BigInteger, + affineX: $npm$bigi$BigInteger, + affineY: $npm$bigi$BigInteger, + + static fromAffine(curve: $npm$ecurve$Curve, x: $npm$bigi$BigInteger, y: $npm$bigi$BigInteger): $npm$ecurve$Point, + equals(other: $npm$ecurve$Point): boolean, + negate(): $npm$ecurve$Point, + add(other: $npm$ecurve$Point): $npm$ecurve$Point, + twice(): $npm$ecurve$Point, + multiply(k: $npm$bigi$BigInteger): $npm$ecurve$Point, + multiplyTwo(j: $npm$bigi$BigInteger, x: $npm$ecurve$Point, k: $npm$bigi$BigInteger): $npm$ecurve$Point, + + static decodeFrom(curve: $npm$ecurve$Curve, buffer: Buffer): $npm$ecurve$Point, + getEncoded(compressed: boolean): Buffer, + + toString(): string, +} + +declare module 'ecurve' { + declare var Point: typeof $npm$ecurve$Point; + + declare var Curve: typeof $npm$ecurve$Curve; + + declare function getCurveByName(name: string): ?Curve; +} +// ---------- copypasta end ---- + +declare module '@trezor/utxo-lib' { + declare type Network = { + messagePrefix: string, + bip32: { + public: number, + private: number, + }, + pubKeyHash: number, + scriptHash: number, + wif: number, + dustThreshold: number, + bech32: ?string, + coin: string, + } + + declare type Output = { + script: Buffer, + value: number | string, + }; + + declare type Input = { + script: Buffer, + hash: Buffer, + index: number, + sequence: number, + }; + + declare var coins: { + isBitcoin(network: Network): boolean, + isBitcoinCash(network: Network): boolean, + isBitcoinSV(network: Network): boolean, + isBitcoinGold(network: Network): boolean, + isDash(network: Network): boolean, + isLitecoin(network: Network): boolean, + isZcash(network: Network): boolean, + isKomodo(network: Network): boolean, + isCapricoin(network: Network): boolean, + } + + declare var address: { + fromBase58Check(address: string): {hash: Buffer, version: number}, + fromBech32(address: string): {data: Buffer, version: number, prefix: string}, + fromOutputScript(script: Buffer, network?: Network): string, + toBase58Check(hash: Buffer, version: number): string, + toOutputScript(address: string, network?: Network): Buffer, + }; + + declare type Stack = Array; + + declare var script: { + scriptHash: { + input: { + check: (script: Buffer, allowIncomplete: boolean) => boolean, + decode: (script: Buffer) => { + redeemScriptStack: Stack, + redeemScript: Buffer, + }, + encode: (redeemScriptSig: Buffer, redeemScript: Buffer) => Buffer, + }, + output: { + check: (script: Stack) => boolean, + encode: (scriptHash: Buffer) => Buffer, + decode: (script: Buffer) => Buffer, + }, + }, + pubKeyHash: { + input: { + check: (script: Buffer, allowIncomplete: boolean) => boolean, + decode: (script: Buffer) => { + signature: Buffer, + pubKey: Buffer, + }, + encode: (signature: Buffer, pubKey: Buffer) => Buffer, + }, + output: { + check: (script: Stack) => boolean, + encode: (pubKeyHash: Buffer) => Buffer, + decode: (script: Buffer) => Buffer, + }, + }, + witnessPubKeyHash: { + input: { + check: (script: Buffer) => boolean, + }, + output: { + check: (script: Stack) => boolean, + encode: (pubkeyHash: Buffer) => Buffer, + decode: (buffer: Buffer) => Buffer, + }, + }, + witnessScriptHash: { + input: { + check: (script: Buffer, allowIncomplete: boolean) => boolean, + }, + output: { + check: (script: Stack) => boolean, + encode: (scriptHash: Buffer) => Buffer, + decode: (script: Buffer) => Buffer, + }, + }, + nullData: { + output: { + check: (script: Stack) => boolean, + encode: (scriptHash: Buffer) => Buffer, + decode: (script: Buffer) => Buffer, + }, + }, + }; + + declare var crypto: { + sha1(buffer: Buffer): Buffer, + sha256(buffer: Buffer): Buffer, + hash256(buffer: Buffer): Buffer, + hash160(buffer: Buffer): Buffer, + ripemd160(buffer: Buffer): Buffer, + } + + declare type ECPairOptions = { + compressed?: boolean, + network?: Network, + } + + declare class ECPair { + d: ?$npm$bigi$BigInteger, + Q: $npm$ecurve$Point, + compressed: boolean, + network: Network, + getNetwork(): Network, + + constructor(d: ?$npm$bigi$BigInteger, Q: ?$npm$ecurve$Point, options: ECPairOptions): void, + getAddress(): string, + getPublicKeyBuffer(): Buffer, + static fromPublicKeyBuffer(buffer: Buffer): ECPair, + verify: (hash: Buffer, signature: ECSignature) => boolean, + sign(hash: Buffer): Buffer, + toWIF(): string, + static fromWIF(string: string, network: Network): ECPair, + static makeRandom(): ECPair, + } + + declare class HDNode { + depth: number, + parentFingerprint: number, + index: number, + keyPair: ECPair, + chainCode: Buffer, + derive(index: number): HDNode, + deriveHardened(index: number): HDNode, + derivePath(path: string): HDNode, + toBase58(): string, + getAddress(): string, + getFingerprint(): Buffer, + getIdentifier(): Buffer, + getNetwork(): Network, + constructor(keyPair: ECPair, chainCode: Buffer): void, + + static fromBase58(base: string, network?: ?(Network | Array), skipValidation?: boolean): HDNode, + static fromSeedHex(seed: string, network?: ?Network): HDNode, + static fromSeedBuffer(seed: Buffer, network?: ?Network): HDNode, + getPublicKeyBuffer(): Buffer, + + sign(): ECSignature, + verify(hash: Buffer, signature: ECSignature): Buffer, + neutered(): HDNode, + isNeutered(): boolean, + constructor(keyPair: ECPair, chainCode: Buffer): void, + static HIGHEST_BIT: number, + } + + declare class Transaction { + network: Network, + version: number, + locktime: number, + timestamp?: number, + ins: Array, + outs: Array, + versionGroupId: string, + expiry: number, + type: number, + extra_payload: number, + + constructor(network?: ?Network): void, + static fromHex(hex: string, network: ?Network): Transaction, + static fromBuffer(buffer: Buffer, network: ?Network, __noStrict?: boolean): Transaction, + toHex(): string, + addInput(hash: Buffer, index: number, sequence?: ?number, scriptSig?: Buffer): void, + addOutput(scriptPubKey: Buffer, value: number): void, + getHash(): Buffer, + toBuffer(): Buffer, + toHex(): string, + getId(): string, + + static isCoinbaseHash(buffer: Buffer): boolean, + isCoinbase(): boolean, + byteLength(): number, + + joinsplitByteLength(): number, + joinsplits: Array, + + clone(): Transaction, + hashForSignature(inIndex: number, prevOutScript: Buffer, hashType: number): Buffer, + setInputScript(index: number, scriptSig: Buffer): void, + getExtraData(): ?Buffer, + isDashSpecialTransaction(): boolean, + isZcashTransaction(): boolean, + + static USE_STRING_VALUES: boolean, + } + + declare class TransactionBuilder { + network: Network, + inputs: Array, + tx: Transaction, + + setLockTime(locktime: number): void, + setVersion(version: number): void, + addInput(txhash: string | Transaction | Buffer, vout: number, sequence?: number, prevOutScript?: Buffer): void, + addOutput(scriptPubKey: string | Buffer, value: number): void, + build(): Transaction, + buildIncomplete(): Transaction, + sign(index: number, keyPair: ECPair, redeemScript: Buffer, hashType: number): void, + + static fromTransaction(transaction: Transaction, network: ?Network): TransactionBuilder, + + } + + declare var networks: {[key: string]: Network} + declare var opcodes: {[key: string]: number} + + declare class ECSignature { + r: $npm$bigi$BigInteger, + s: $npm$bigi$BigInteger, + constructor(r: $npm$bigi$BigInteger, s: $npm$bigi$BigInteger): void, + + static parseCompact(buffer: Buffer): { + compressed: boolean, + i: number, + signature: Buffer, + }, + + static fromDER(buffer: Buffer): ECSignature, + static parseScriptSignature(buffer: Buffer): { + signature: ECSignature, + hashType: number, + }, + + toCompact(i: number, compressed: boolean): Buffer, + toDER(): Buffer, + toScriptSignature(hashType: number): Buffer, + } + + declare class Block { + version: number, + prevHash: Buffer, + merkleRoot: Buffer, + timestamp: number, + bits: number, + nonce: number, + + getHash(): Buffer, + getId(): string, + getUTCDate(): Date, + toBuffer(headersOnly?: boolean): Buffer, + toHex(headersOnly?: boolean): string, + calculateTarget(bits: number): Buffer, + checkProofOfWork(): boolean, + + static fromBuffer(buffer: Buffer): Block, + static fromHex(hex: string): Block, + } + + declare var bufferutils: { + equal(a: Buffer, b: Buffer): boolean, + pushDataSize(i: number): number, + readPushDataInt(buffer: Buffer, offset: number): { + opcode: number, + number: number, + size: number, + }, + readUInt64LE(buffer: Buffer, offset: number): number, + readVarInt(buffer: Buffer, offset: number): { + number: number, + size: number, + }, + varIntBuffer(i: number): Buffer, + varIntSize(i: number): number, + writePushDataInt(buffer: Buffer, number: number, offset: number): number, + writeUInt64LE(buffer: Buffer, value: number, offset: number): void, + writeVarInt(buffer: Buffer, number: number, offset: number): number, + } + + declare var message: { + magicHash(message: Buffer | string, network: Network): Buffer, + sign(pair: ECPair, message: Buffer | string, network: Network): Buffer, + verify(address: string, signature: Buffer, message: Buffer | string, network: Network): boolean, + } +} diff --git a/package.json b/package.json index d460f3c1..20a7488a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "trezor.js", - "version": "8.1.0", + "version": "9.0.0", "author": "TREZOR ", "homepage": "https://github.com/trezor/trezor.js", "description": "High-level Javascript API for Bitcoin Trezor", @@ -63,13 +63,13 @@ "flow-bin": "0.45.0" }, "dependencies": { + "@trezor/utxo-lib": "0.1.0", "bchaddrjs": "^0.2.1", - "bitcoinjs-lib-zcash": "^3.6.1", "ecurve": "^1.0.2", "node-fetch": "^1.6.0", "randombytes": "^2.0.1", "semver-compare": "1.0.0", - "trezor-link": "1.6.0", + "trezor-link": "1.6.0-bridge-fallback.2", "unorm": "^1.3.3", "whatwg-fetch": "0.11.0" }, diff --git a/src/.flowconfig b/src/.flowconfig index 195a541d..39ef5579 100644 --- a/src/.flowconfig +++ b/src/.flowconfig @@ -1,6 +1,5 @@ [ignore] -.*/node_modules/bitcoinjs-lib-zcash/.* -.*/node_modules/bitcoinjs-lib/.* +.*/node_modules/@trezor/utxo-lib/.* .*/node_modules/events/.* .*/node_modules/protobufjs-old-fixed-webpack/src/bower.json diff --git a/src/device-list.js b/src/device-list.js index 36fe8b8d..fed719ee 100644 --- a/src/device-list.js +++ b/src/device-list.js @@ -1,7 +1,7 @@ /* @flow */ 'use strict'; -import * as bitcoin from 'bitcoinjs-lib-zcash'; +import * as bitcoin from '@trezor/utxo-lib'; import {EventEmitter} from './events'; import {Event0, Event1, Event2} from './flow-events'; @@ -28,6 +28,7 @@ export type DeviceListOptions = { configUrl?: string; config?: string; bridgeVersionUrl?: string; + bridgeVersion?: string; clearSession?: boolean; clearSessionTime?: number; rememberDevicePassphrase?: boolean; @@ -216,6 +217,9 @@ export default class DeviceList extends EventEmitter { if (this.options.bridgeVersionUrl != null) { transport.setBridgeLatestUrl(this.options.bridgeVersionUrl); } + if (this.options.bridgeVersion != null) { + transport.setBridgeLatestVersion(this.options.bridgeVersion); + } if (this.options.debugInfo) { console.log('[trezor.js] [device list] Initializing transports'); } diff --git a/src/device.js b/src/device.js index 0d90b938..2f2469db 100644 --- a/src/device.js +++ b/src/device.js @@ -8,7 +8,7 @@ import {Event0, Event1, Event2} from './flow-events'; import Session from './session'; import {lock} from './utils/connectionLock'; import {BITCOIN_COIN_INFO, harden} from './utils/hdnode'; -import * as bitcoin from 'bitcoinjs-lib-zcash'; +import * as bitcoin from '@trezor/utxo-lib'; import type DeviceList from './device-list'; import type {Features} from './trezortypes'; diff --git a/src/session.js b/src/session.js index 5585f330..6f029928 100644 --- a/src/session.js +++ b/src/session.js @@ -3,7 +3,7 @@ import {EventEmitter} from './events'; import {Event0, Event1, Event2} from './flow-events'; -import * as bitcoin from 'bitcoinjs-lib-zcash'; +import * as bitcoin from '@trezor/utxo-lib'; import * as hdnodeUtils from './utils/hdnode'; import * as signTxHelper from './utils/signtx'; diff --git a/src/trezortypes.js b/src/trezortypes.js index 35e3682d..ec15f487 100644 --- a/src/trezortypes.js +++ b/src/trezortypes.js @@ -117,29 +117,29 @@ export type TransactionInput = { prev_hash: string; script_sig?: string; script_type?: 'SPENDADDRESS' | 'SPENDMULTISIG' | 'EXTERNAL' | 'SPENDWITNESS' | 'SPENDP2SHWITNESS'; - amount?: number; // only with segwit + amount?: string; // only with segwit }; export type TransactionOutput = { address: string; - amount: number; // in satoshis + amount: string; // in satoshis script_type: 'PAYTOADDRESS'; } | { address_n: Array; - amount: number; // in satoshis + amount: string; // in satoshis script_type: 'PAYTOADDRESS'; } | { address_n: Array; - amount: number; // in satoshis + amount: string; // in satoshis script_type: 'PAYTOP2SHWITNESS'; } | { op_return_data: string; - amount: 0; // fixed + amount: '0'; // fixed script_type: 'PAYTOOPRETURN'; } export type TransactionBinOutput = { - amount: number; + amount: string; script_pubkey: string; }; diff --git a/src/utils/call.js b/src/utils/call.js index 51e88155..ce4b5ba6 100644 --- a/src/utils/call.js +++ b/src/utils/call.js @@ -184,7 +184,11 @@ export class CallHelper { const currentState = this.session.device.passphraseState; const receivedState = res.message.state; if (currentState != null && currentState !== receivedState) { - return Promise.reject(new Error('Device has entered inconsistent state. Please reconnect the device.')); + // when cached passphrase is different than entered passphrase + // cancel current request and emit error + return this._commonCall('Cancel', {}).catch(() => { + this.session.errorEvent.emit(new Error('Invalid passphrase')); + }); } this.session.device.passphraseState = receivedState; return this._commonCall('PassphraseStateAck', { }); diff --git a/src/utils/hdnode.js b/src/utils/hdnode.js index b727dec2..2c57425f 100644 --- a/src/utils/hdnode.js +++ b/src/utils/hdnode.js @@ -1,7 +1,7 @@ /* @flow */ 'use strict'; -import * as bitcoin from 'bitcoinjs-lib-zcash'; +import * as bitcoin from '@trezor/utxo-lib'; import * as ecurve from 'ecurve'; import * as trezor from '../trezortypes'; diff --git a/src/utils/signbjstx.js b/src/utils/signbjstx.js index 0198ba1f..e09d7796 100644 --- a/src/utils/signbjstx.js +++ b/src/utils/signbjstx.js @@ -2,30 +2,32 @@ 'use strict'; import bchaddr from 'bchaddrjs'; -import * as bitcoin from 'bitcoinjs-lib-zcash'; +import * as bitcoin from '@trezor/utxo-lib'; import * as trezor from '../trezortypes'; import * as hdnodeUtils from './hdnode'; +bitcoin.Transaction.USE_STRING_VALUES = true; + import type Session, {MessageResponse} from '../session'; // TODO refactor this using string types -export type OutputInfo = { +export type OutputInfo = {| path: Array; - value: number; + value: string; segwit: boolean; -} | { +|} | {| address: string; - value: number; -} | { + value: string; +|} | {| opReturnData: Buffer; -}; +|}; export type InputInfo = { hash: Buffer; index: number; - path?: Array; + path: Array; segwit: boolean; - amount?: number; // only with segwit + amount?: string; // only with segwit }; export type TxInfo = { @@ -65,10 +67,9 @@ function output2trezor(output: OutputInfo, network: bitcoin.Network, isCashaddre throw new Error('Wrong type.'); } - // $FlowIssue const data: Buffer = output.opReturnData; return { - amount: 0, + amount: '0', op_return_data: data.toString('hex'), script_type: 'PAYTOOPRETURN', }; @@ -80,8 +81,7 @@ function output2trezor(output: OutputInfo, network: bitcoin.Network, isCashaddre const pathArr: Array = _flow_makeArray(output.path); - // $FlowIssue - const amount: number = output.value; + const amount: string = output.value; if (output.segwit) { return { address_n: pathArr, @@ -102,7 +102,7 @@ function output2trezor(output: OutputInfo, network: bitcoin.Network, isCashaddre } // $FlowIssue - const amount: number = output.value; + const amount: string = output.value; isScriptHash(address, network, isCashaddress); @@ -121,9 +121,10 @@ function signedTx2bjsTx(signedTx: MessageResponse, network: bit function bjsTx2refTx(tx: bitcoin.Transaction): trezor.RefTransaction { const extraData = tx.getExtraData(); + const version_group_id = bitcoin.coins.isZcash(tx.network) ? parseInt(tx.versionGroupId, 16) : null; return { lock_time: tx.locktime, - version: tx.isDashSpecialTransaction() ? tx.version | tx.dashType << 16 : tx.version, + version: tx.isDashSpecialTransaction() ? tx.version | tx.type << 16 : tx.version, hash: tx.getId(), inputs: tx.ins.map((input: bitcoin.Input) => { return { @@ -135,12 +136,12 @@ function bjsTx2refTx(tx: bitcoin.Transaction): trezor.RefTransaction { }), bin_outputs: tx.outs.map((output: bitcoin.Output) => { return { - amount: output.value, + amount: typeof output.value === 'number' ? output.value.toString() : output.value, script_pubkey: output.script.toString('hex'), }; }), extra_data: extraData ? extraData.toString('hex') : null, - version_group_id: tx.isZcashTransaction() ? parseInt(tx.versionGroupId, 16) : null, + version_group_id, }; } @@ -241,8 +242,7 @@ function verifyBjsTx( outputs.map((output, i) => { const scriptB = resTx.outs[i].script; - if (output.opReturnData != null) { - // $FlowIssue + if (output.opReturnData instanceof Buffer) { const scriptA = bitcoin.script.nullData.output.encode(output.opReturnData); if (scriptA.compare(scriptB) !== 0) { throw new Error('Scripts differ'); @@ -251,7 +251,7 @@ function verifyBjsTx( if (output.value !== resTx.outs[i].value) { throw new Error('Signed transaction has wrong output value.'); } - if (output.address == null && output.path == null) { + if (output.address === null && output.path === null) { throw new Error('Both path and address cannot be null.'); } @@ -277,7 +277,7 @@ function isBech32(address: string): boolean { function isScriptHash(address: string, network: bitcoin.Network, isCashaddress: ?boolean): boolean { // cashaddr hack // Cashaddr format (with prefix) is neither base58 nor bech32, so it would fail - // in bitcoinjs-lib-zchash. For this reason, we use legacy format here + // in trezor-utxo-lib. For this reason, we use legacy format here try { if (isCashaddress) { address = bchaddr.toLegacyAddress(address); diff --git a/src/utils/signtx.js b/src/utils/signtx.js index 337b7791..3879ef32 100644 --- a/src/utils/signtx.js +++ b/src/utils/signtx.js @@ -207,7 +207,13 @@ export function signTx( // this is done like that, so old devices work on non-zcash txs if (overwintered) { - txDesc = {...txDesc, overwintered: true, version: 4, version_group_id: 0x892f2085}; + txDesc = { + ...txDesc, + overwintered: true, + version: 4, + version_group_id: 0x892f2085, + branch_id: 0x2bb40e60, + }; } return session.typedCall('SignTx', 'TxRequest', txDesc).then((res) => diff --git a/yarn.lock b/yarn.lock index 00ec8089..a858357e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,30 @@ # yarn lockfile v1 -"@types/node@^10.11.7": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.0.tgz#ea6dcbddbc5b584c83f06c60e82736d8fbb0c235" - -"@types/semver@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45" +"@trezor/utxo-lib@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@trezor/utxo-lib/-/utxo-lib-0.1.0.tgz#f7a60d514ab75bef2f2206200cf0317d2d8523b2" + integrity sha512-jkqFRKL++xTga3xUgu5pWw1ArzTfraK0unXuj31V9g6wu+MKPbvcXW1+tMOVh+WNZZ3QUSGSQNNflSyh+qD0Vw== + dependencies: + bech32 "0.0.3" + bigi "^1.4.0" + bip66 "^1.1.0" + bitcoin-ops "^1.3.0" + blake2b "https://github.com/BitGo/blake2b#6268e6dd678661e0acc4359e9171b97eb1ebf8ac" + bs58check "^2.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.3" + debug "~3.1.0" + ecurve "^1.0.0" + merkle-lib "^2.0.10" + pushdata-bitcoin "^1.0.1" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.0.4" + wif "^2.0.1" + optionalDependencies: + secp256k1 "^3.5.2" abbrev@1: version "1.1.0" @@ -776,8 +793,9 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" base-x@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.2.tgz#bf873861b7514279b7969f340929eab87c11d130" + version "3.0.7" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.7.tgz#1c5a7fafe8f66b4114063e8da102799d4e7c408f" + integrity sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw== dependencies: safe-buffer "^5.0.1" @@ -794,92 +812,54 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bech32@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.3.tgz#bd47a8986bbb3eec34a56a097a84b8d3e9a2dfcd" - -big-integer@^1.3.19: - version "1.6.36" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" +bech32@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-0.0.3.tgz#736747c4a6531c5d8937d0400498de30e93b2f9c" + integrity sha512-O+K1w8P/aAOLcYwwQ4sbiPYZ51ZIW95lnS4/6nE8Aib/z+OOddQIIPdu2qi94qGDp4HhYy/wJotttXKkak1lXg== big-integer@^1.6.26: version "1.6.30" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.30.tgz#7796f04acdd6ba56345f19049c8fffd427f09d16" -bigi@0.2.0, bigi@0.2.x: - version "0.2.0" - resolved "https://registry.yarnpkg.com/bigi/-/bigi-0.2.0.tgz#8bee26348b99c4ae2ed20481fb12384c32792f74" - -bigi@^1.1.0, bigi@^1.2.1, bigi@^1.4.0, bigi@^1.4.1: +bigi@^1.1.0, bigi@^1.4.0, bigi@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" + integrity sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU= binary-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b" -binstring@0.2.x, binstring@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/binstring/-/binstring-0.2.1.tgz#8a174d301f6d54efda550dd98bb4cb524eacd75d" +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" -bip66@^1.1.0: +bip66@^1.1.0, bip66@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= dependencies: safe-buffer "^5.0.1" bitcoin-ops@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.3.0.tgz#6b126b585537bc679b02ed499f14450cffc37e13" - -bitcoin-script@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/bitcoin-script/-/bitcoin-script-0.1.1.tgz#52c504dddc1e3b1317a7b6567a88981b3ef3929c" - dependencies: - big-integer "^1.3.19" - bigi "^1.2.1" - coinkey "^0.1.0" - ecdsa "^0.6.0" - js-beautify "^1.5.4" - ripemd160 "^0.2.0" - secure-random "^1.1.1" - sha1 "^1.1.0" - sha256 "^0.1.1" - -bitcoinjs-lib-zcash@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/bitcoinjs-lib-zcash/-/bitcoinjs-lib-zcash-3.6.1.tgz#563fe1a4c7255aa1bf07bb0904ec1de072cbc098" - integrity sha512-p09YKY2l0sNf1LjJOO82s4tgxLNdNTwOMN1yRzFm3ozGC87Odx1iq8vD6XTBs/g3nAOsXlmD2VJc2hHCHyH7xg== - dependencies: - bech32 "^1.1.2" - bigi "^1.4.0" - bip66 "^1.1.0" - bitcoin-ops "^1.3.0" - bitcoin-script "^0.1.1" - blake2b "^2.1.2" - bs58check "^2.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.3" - ecurve "^1.0.0" - merkle-lib "^2.0.10" - pushdata-bitcoin "^1.0.1" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - typeforce "1.11.3" - varuint-bitcoin "^1.0.4" - wif "^2.0.1" + version "1.4.1" + resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz#e45de620398e22fd4ca6023de43974ff42240278" + integrity sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow== -blake2b-wasm@^1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz#e4d075da10068e5d4c3ec1fb9accc4d186c55d81" +"blake2b-wasm@https://github.com/BitGo/blake2b-wasm#193cdb71656c1a6c7f89b05d0327bb9b758d071b": + version "2.0.0" + resolved "https://github.com/BitGo/blake2b-wasm#193cdb71656c1a6c7f89b05d0327bb9b758d071b" dependencies: nanoassert "^1.0.0" -blake2b@^2.1.2: +"blake2b@git+https://github.com/BitGo/blake2b.git#6268e6dd678661e0acc4359e9171b97eb1ebf8ac": version "2.1.3" - resolved "https://registry.yarnpkg.com/blake2b/-/blake2b-2.1.3.tgz#f5388be424768e7c6327025dad0c3c6d83351bca" + resolved "git+https://github.com/BitGo/blake2b.git#6268e6dd678661e0acc4359e9171b97eb1ebf8ac" dependencies: - blake2b-wasm "^1.1.0" + blake2b-wasm "https://github.com/BitGo/blake2b-wasm#193cdb71656c1a6c7f89b05d0327bb9b758d071b" nanoassert "^1.0.0" block-stream@*: @@ -888,6 +868,11 @@ block-stream@*: dependencies: inherits "~2.0.0" +bn.js@^4.11.8, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -909,6 +894,23 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + browserslist@^2.1.2: version "2.11.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" @@ -916,25 +918,21 @@ browserslist@^2.1.2: caniuse-lite "^1.0.30000792" electron-to-chromium "^1.3.30" -bs58@0.3.x: - version "0.3.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-0.3.0.tgz#cb48107bf446727d3e17b21102da73ca89109588" - dependencies: - bigi "0.2.0" - binstring "~0.2.0" - bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= dependencies: base-x "^3.0.2" bs58check@<3.0.0, bs58check@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.0.2.tgz#06f63b01c2fa6173033c90eb87f1fe3d2e13d89a" + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== dependencies: bs58 "^4.0.0" create-hash "^1.1.0" + safe-buffer "^5.1.2" bs58check@^2.1.1: version "2.1.1" @@ -943,6 +941,11 @@ bs58check@^2.1.1: bs58 "^4.0.0" create-hash "^1.1.0" +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + bufferview@~1: version "1.0.1" resolved "https://registry.yarnpkg.com/bufferview/-/bufferview-1.0.1.tgz#7afd74a45f937fa422a1d338c08bbfdc76cd725d" @@ -1005,10 +1008,6 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" -"charenc@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - chokidar@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1024,9 +1023,10 @@ chokidar@^1.6.1: optionalDependencies: fsevents "^1.0.0" -cipher-base@^1.0.1, cipher-base@^1.0.3: +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -1053,21 +1053,6 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -coinkey@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/coinkey/-/coinkey-0.1.0.tgz#bdf2a953dcfe4fd70fdba3000c787ff369d8294c" - dependencies: - coinstring "~0.2.0" - eckey "~0.4.0" - secure-random "~0.2.0" - -coinstring@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/coinstring/-/coinstring-0.2.0.tgz#fa2820497bb9e35b7cfa116f048219ca6f3f348f" - dependencies: - bs58 "0.3.x" - crypto-hashing "~0.3.0" - color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" @@ -1092,10 +1077,6 @@ commander@^2.11.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" -commander@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - commander@^2.8.1: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -1112,29 +1093,14 @@ concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@~1.1.5: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" -convert-hex@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/convert-hex/-/convert-hex-0.1.0.tgz#08c04568922c27776b8a2e81a95d393362ea0b65" - convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" -convert-string@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/convert-string/-/convert-string-0.1.0.tgz#79ce41a9bb0d03bcf72cdc6a8f3c56fbbc64410a" - core-js@^2.4.0: version "2.5.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" @@ -1147,18 +1113,21 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -create-hash@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" inherits "^2.0.1" - ripemd160 "^2.0.0" + md5.js "^1.3.4" + ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" +create-hmac@^1.1.3, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" @@ -1175,23 +1144,12 @@ cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -"crypt@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" dependencies: boom "2.x.x" -crypto-hashing@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/crypto-hashing/-/crypto-hashing-0.3.1.tgz#0195548db8bdef50aa9d526514cc546e1e62fbce" - dependencies: - binstring "0.2.x" - ripemd160 "~0.2.0" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1204,6 +1162,13 @@ debug@^2.2.0, debug@^2.6.8: dependencies: ms "2.0.0" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -1212,12 +1177,12 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" + object-keys "^1.0.12" del@^2.0.2: version "2.2.2" @@ -1252,84 +1217,82 @@ doctrine@^2.0.0: esutils "^2.0.2" isarray "^1.0.0" +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" dependencies: jsbn "~0.1.0" -ecdsa@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/ecdsa/-/ecdsa-0.6.0.tgz#35e9887b6f418ec7b98380170334dc2763a6b317" - dependencies: - bigi "^1.2.1" - ecurve "^1.0.0" - -eckey@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/eckey/-/eckey-0.4.2.tgz#cea53b7d529e42168f2c8597a7e8d32bc9e39436" - dependencies: - bigi "0.2.x" - ecurve "~0.3.0" - ecurve-names "~0.3.0" - -ecurve-names@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/ecurve-names/-/ecurve-names-0.3.0.tgz#f9525e403f44a35f7bc17557ff7e41091931d59c" +ecurve@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" + integrity sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w== dependencies: - bigi "0.2.x" - ecurve "~0.3.0" + bigi "^1.1.0" + safe-buffer "^5.0.1" -ecurve@^1.0.0, ecurve@^1.0.2, ecurve@^1.0.3: +ecurve@^1.0.2, ecurve@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.5.tgz#d148e8fe50a674f983bb5bae09da0ea23e10535e" dependencies: bigi "^1.1.0" -ecurve@~0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-0.3.2.tgz#badeff9ef95399eea2e17d1b533f010484240b50" - dependencies: - bigi "0.2.x" - -editorconfig@^0.15.0: - version "0.15.2" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.2.tgz#047be983abb9ab3c2eefe5199cb2b7c5689f0702" - dependencies: - "@types/node" "^10.11.7" - "@types/semver" "^5.5.0" - commander "^2.19.0" - lru-cache "^4.1.3" - semver "^5.6.0" - sigmund "^1.0.1" - electron-to-chromium@^1.3.30: version "1.3.31" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz#00d832cba9fe2358652b0c48a8816c8e3a037e9f" +elliptic@^6.4.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" dependencies: iconv-lite "~0.4.13" -es-abstract@^1.6.1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.0.tgz#3b00385e85729932beffa9163bbea1234e932914" +es-abstract@^1.12.0: + version "1.14.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.2.tgz#7ce108fad83068c8783c3cdf62e504e084d8c497" + integrity sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg== dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - has "^1.0.1" - is-callable "^1.1.3" + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.0" + is-callable "^1.1.4" is-regex "^1.0.4" + object-inspect "^1.6.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.0.0" + string.prototype.trimright "^2.0.0" -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: - is-callable "^1.1.1" + is-callable "^1.1.4" is-date-object "^1.0.1" - is-symbol "^1.0.1" + is-symbol "^1.0.2" escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" @@ -1429,6 +1392,14 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -1484,6 +1455,11 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -1521,10 +1497,6 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1569,10 +1541,15 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.0: +function-bind@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -1660,6 +1637,11 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -1670,11 +1652,28 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" hawk@~3.1.3: version "3.1.3" @@ -1685,6 +1684,15 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" @@ -1727,13 +1735,14 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" +inherits@^2.0.1, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@~1.3.0: version "1.3.4" @@ -1774,9 +1783,10 @@ is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== is-date-object@^1.0.1: version "1.0.1" @@ -1878,9 +1888,12 @@ is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" @@ -1904,15 +1917,6 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -js-beautify@^1.5.4: - version "1.8.8" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.8.8.tgz#1eb175b73a3571a5f1ed8d98e7cf2b05bfa98471" - dependencies: - config-chain "~1.1.5" - editorconfig "^0.15.0" - mkdirp "~0.5.0" - nopt "~4.0.1" - js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -2019,16 +2023,19 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" merkle-lib@^2.0.10: version "2.0.10" resolved "https://registry.yarnpkg.com/merkle-lib/-/merkle-lib-2.0.10.tgz#82b8dbae75e27a7785388b73f9d7725d0f6f3326" + integrity sha1-grjbrnXieneFOItz+ddyXQ9vMyY= micromatch@^2.1.5: version "2.3.11" @@ -2062,6 +2069,16 @@ mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -2076,7 +2093,7 @@ minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: +"mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.1" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -2085,11 +2102,17 @@ minimist@^1.2.0: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" +nan@^2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" @@ -2097,6 +2120,7 @@ nan@^2.3.0: nanoassert@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d" + integrity sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40= natural-compare@^1.4.0: version "1.4.0" @@ -2123,7 +2147,7 @@ node-pre-gyp@^0.6.36: tar "^2.2.1" tar-pack "^3.4.0" -nopt@^4.0.1, nopt@~4.0.1: +nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" dependencies: @@ -2157,9 +2181,15 @@ object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object-inspect@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.omit@^2.0.0: version "2.0.1" @@ -2169,13 +2199,14 @@ object.omit@^2.0.0: is-extendable "^0.1.1" object.values@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" once@^1.3.0, once@^1.3.3: version "1.4.0" @@ -2290,10 +2321,6 @@ progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - protobufjs-old-fixed-webpack@3.8.5: version "3.8.5" resolved "https://registry.yarnpkg.com/protobufjs-old-fixed-webpack/-/protobufjs-old-fixed-webpack-3.8.5.tgz#5813c1af9f1d136bbf39f4f9f2e6f3e43c389d06" @@ -2312,6 +2339,7 @@ punycode@^1.4.1: pushdata-bitcoin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz#15931d3cd967ade52206f523aa7331aef7d43af7" + integrity sha1-FZMdPNlnreUiBvUjqnMxrvfUOvc= dependencies: bitcoin-ops "^1.3.0" @@ -2476,15 +2504,12 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: dependencies: glob "^7.0.5" -ripemd160@^0.2.0, ripemd160@~0.2.0: - version "0.2.1" - resolved "http://registry.npmjs.org/ripemd160/-/ripemd160-0.2.1.tgz#dee19248a3e1c815ff9aea39e753a337f56a243d" - -ripemd160@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: - hash-base "^2.0.0" + hash-base "^3.0.0" inherits "^2.0.1" run-async@^2.2.0: @@ -2503,17 +2528,28 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -secure-random@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/secure-random/-/secure-random-1.1.1.tgz#0880f2d8c5185f4bcb4684058c836b4ddb07145a" - -secure-random@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/secure-random/-/secure-random-0.2.1.tgz#1c2f08cb94d8c06deff52721a6045bba96f85a9a" +secp256k1@^3.5.2: + version "3.7.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.7.1.tgz#12e473e0e9a7c2f2d4d4818e722ad0e14cc1e2f1" + integrity sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.4.1" + nan "^2.14.0" + safe-buffer "^5.1.2" semver-compare@1.0.0, semver-compare@^1.0.0: version "1.0.0" @@ -2523,10 +2559,6 @@ semver@^5.0.1, semver@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -2536,24 +2568,12 @@ set-immediate-shim@^1.0.1: resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" - -sha1@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" - dependencies: - charenc ">= 0.0.1" - crypt ">= 0.0.1" - -sha256@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sha256/-/sha256-0.1.1.tgz#34296f90498da3e8c6b06fffe8e860dba299f902" - dependencies: - convert-hex "~0.1.0" - convert-string "~0.1.0" + safe-buffer "^5.0.1" shebang-command@^1.2.0: version "1.2.0" @@ -2565,10 +2585,6 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -2630,6 +2646,22 @@ string-width@^2.0.0, string-width@^2.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string.prototype.trimleft@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" @@ -2722,9 +2754,10 @@ tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" -trezor-link@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/trezor-link/-/trezor-link-1.6.0.tgz#d79fec3e6ecf57c74c11ffbe37ebbd9118a91826" +trezor-link@1.6.0-bridge-fallback.2: + version "1.6.0-bridge-fallback.2" + resolved "https://registry.yarnpkg.com/trezor-link/-/trezor-link-1.6.0-bridge-fallback.2.tgz#e749f59976f8fa3ba3f661000066be2c9e139d63" + integrity sha512-hSZsHSAKpw2AUPvc4L2U/eVa/92hYcL6ml0XaYqUbWStTDpm1h1IJciG2evplIZz25m90PapccV9l4z+v9GUxw== dependencies: bigi "^1.4.1" ecurve "^1.0.3" @@ -2763,12 +2796,10 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typeforce@1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.11.3.tgz#a54d0ff58808788fba358020982270bd6995d8e4" - integrity sha512-+vllWbxe1AKLkO3KNyZPjb51NRHwRE/8bAi/cmF6TK24VqrPiQPRiHrFV19j1xHxxCHQbIvN4Zfco+skuiXSWQ== - dependencies: - inherits "^2.0.1" +typeforce@^1.11.3: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== uid-number@^0.0.6: version "0.0.6" @@ -2797,8 +2828,11 @@ v8flags@^2.1.1: user-home "^1.1.1" varuint-bitcoin@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.0.4.tgz#d812c5dae16e32f60544b6adee1d4be1307d0283" + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" verror@1.10.0: version "1.10.0" @@ -2827,6 +2861,7 @@ wide-align@^1.1.0: wif@^2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha1-CNP1IFbGZnkplyb63g1DKudLRwQ= dependencies: bs58check "<3.0.0"