From 1605f99e17204f174bd18a71333e0fac3ddde687 Mon Sep 17 00:00:00 2001 From: junderw Date: Thu, 25 Jul 2019 18:15:11 +0900 Subject: [PATCH 1/3] Move lowR to public writable attribute --- src/ecpair.js | 4 +++- ts_src/ecpair.ts | 6 +++++- types/ecpair.d.ts | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ecpair.js b/src/ecpair.js index 809987e..91fe3a9 100644 --- a/src/ecpair.js +++ b/src/ecpair.js @@ -16,6 +16,7 @@ class ECPair { constructor(__D, __Q, options) { this.__D = __D; this.__Q = __Q; + this.lowR = false; if (options === undefined) options = {}; this.compressed = options.compressed === undefined ? true : options.compressed; @@ -33,8 +34,9 @@ class ECPair { if (!this.__D) throw new Error('Missing private key'); return wif.encode(this.network.wif, this.__D, this.compressed); } - sign(hash, lowR = false) { + sign(hash, lowR) { if (!this.__D) throw new Error('Missing private key'); + if (lowR === undefined) lowR = this.lowR; if (lowR === false) { return ecc.sign(hash, this.__D); } else { diff --git a/ts_src/ecpair.ts b/ts_src/ecpair.ts index c951f76..9052866 100644 --- a/ts_src/ecpair.ts +++ b/ts_src/ecpair.ts @@ -36,6 +36,7 @@ export interface SignerAsync { export interface ECPairInterface extends Signer { compressed: boolean; network: Network; + lowR: boolean; privateKey?: Buffer; toWIF(): string; verify(hash: Buffer, signature: Buffer): boolean; @@ -44,12 +45,14 @@ export interface ECPairInterface extends Signer { class ECPair implements ECPairInterface { compressed: boolean; network: Network; + lowR: boolean; constructor( private __D?: Buffer, private __Q?: Buffer, options?: ECPairOptions, ) { + this.lowR = false; if (options === undefined) options = {}; this.compressed = options.compressed === undefined ? true : options.compressed; @@ -73,8 +76,9 @@ class ECPair implements ECPairInterface { return wif.encode(this.network.wif, this.__D, this.compressed); } - sign(hash: Buffer, lowR: boolean = false): Buffer { + sign(hash: Buffer, lowR?: boolean): Buffer { if (!this.__D) throw new Error('Missing private key'); + if (lowR === undefined) lowR = this.lowR; if (lowR === false) { return ecc.sign(hash, this.__D); } else { diff --git a/types/ecpair.d.ts b/types/ecpair.d.ts index 8b7d193..07d71d4 100644 --- a/types/ecpair.d.ts +++ b/types/ecpair.d.ts @@ -20,6 +20,7 @@ export interface SignerAsync { export interface ECPairInterface extends Signer { compressed: boolean; network: Network; + lowR: boolean; privateKey?: Buffer; toWIF(): string; verify(hash: Buffer, signature: Buffer): boolean; @@ -29,6 +30,7 @@ declare class ECPair implements ECPairInterface { private __Q?; compressed: boolean; network: Network; + lowR: boolean; constructor(__D?: Buffer | undefined, __Q?: Buffer | undefined, options?: ECPairOptions); readonly privateKey: Buffer | undefined; readonly publicKey: Buffer; From d48864e22a9511db36c0f8880a304b690a796795 Mon Sep 17 00:00:00 2001 From: junderw Date: Thu, 25 Jul 2019 22:43:06 +0900 Subject: [PATCH 2/3] Bump bip32 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88785e4..67e1135 100644 --- a/package-lock.json +++ b/package-lock.json @@ -205,9 +205,9 @@ "integrity": "sha512-AaoWrkYtv6A2y8H+qzs6NvRWypzNbADT8PQGpM9rnP+jLzeol+uzhe3Myeuq/dwrHYtmsW8V71HmX2oXhQGagw==" }, "bip32": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.3.tgz", - "integrity": "sha512-Tg4dHUXiYBkJyCQq4g++C2PqKcZRveVqy7cKxyl88Uai7MmmknFGaF88odYrXcXk5EMyrlXLuAMC3yEiLxRnNA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.4.tgz", + "integrity": "sha512-ioPytarPDIrWckWMuK4RNUtvwhvWEc2fvuhnO0WEwu732k5OLjUXv4rXi2c/KJHw9ZMNQMkYRJrBw81RujShGQ==", "requires": { "@types/node": "10.12.18", "bs58check": "^2.1.1", diff --git a/package.json b/package.json index 63b33bf..76f7953 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@types/node": "10.12.18", "bech32": "^1.1.2", "bip174": "^1.0.0", - "bip32": "^2.0.3", + "bip32": "^2.0.4", "bip66": "^1.1.0", "bitcoin-ops": "^1.4.0", "bs58check": "^2.0.0", From 4a29cb49dcbc3f38b8709a62d2f1a465140d84c2 Mon Sep 17 00:00:00 2001 From: junderw Date: Thu, 25 Jul 2019 22:43:16 +0900 Subject: [PATCH 3/3] 5.1.2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 67e1135..b57c244 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "bitcoinjs-lib", - "version": "5.1.1", + "version": "5.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 76f7953..f72d7e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bitcoinjs-lib", - "version": "5.1.1", + "version": "5.1.2", "description": "Client-side Bitcoin JavaScript library", "main": "./src/index.js", "types": "./types/index.d.ts",