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
364 changes: 179 additions & 185 deletions package-lock.json

Large diffs are not rendered by default.

15 changes: 5 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,30 +49,25 @@
"src"
],
"dependencies": {
"@noble/hashes": "^1.2.0",
"bech32": "^2.0.0",
"bip174": "^2.1.0",
"bs58check": "^2.1.2",
"create-hash": "^1.1.0",
"ripemd160": "^2.0.2",
"bs58check": "^3.0.1",
"typeforce": "^1.11.3",
"varuint-bitcoin": "^1.1.2",
"wif": "^2.0.1"
"varuint-bitcoin": "^1.1.2"
},
"devDependencies": {
"@types/bs58": "^4.0.0",
"@types/bs58check": "^2.1.0",
"@types/create-hash": "^1.2.2",
"@types/mocha": "^5.2.7",
"@types/node": "^16.11.7",
"@types/proxyquire": "^1.3.28",
"@types/randombytes": "^2.0.0",
"@types/ripemd160": "^2.0.0",
"@types/wif": "^2.0.2",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.45.0",
"better-npm-audit": "^3.7.3",
"bip32": "^3.0.1",
"bip39": "^3.0.2",
"bip32": "^4.0.0",
"bip39": "^3.1.0",
"bip65": "^1.0.1",
"bip68": "^1.0.3",
"bs58": "^4.0.0",
Expand Down
4 changes: 2 additions & 2 deletions src/address.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ function _toFutureSegwitAddress(output, network) {
return toBech32(data, version, network.bech32);
}
function fromBase58Check(address) {
const payload = bs58check.decode(address);
const payload = Buffer.from(bs58check.decode(address));
// TODO: 4.0.0, move to "toOutputScript"
if (payload.length < 21) throw new TypeError(address + ' is too short');
if (payload.length > 21) throw new TypeError(address + ' is too long');
const version = payload.readUInt8(0);
const version = payload.readUint8(0);
const hash = payload.slice(1);
return { version, hash };
}
Expand Down
27 changes: 12 additions & 15 deletions src/crypto.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,34 +9,31 @@ exports.taggedHash =
exports.sha1 =
exports.ripemd160 =
void 0;
const createHash = require('create-hash');
const RipeMd160 = require('ripemd160');
const ripemd160_1 = require('@noble/hashes/ripemd160');
const sha1_1 = require('@noble/hashes/sha1');
const sha256_1 = require('@noble/hashes/sha256');
function ripemd160(buffer) {
try {
return createHash('rmd160').update(buffer).digest();
} catch (err) {
try {
return createHash('ripemd160').update(buffer).digest();
} catch (err2) {
return new RipeMd160().update(buffer).digest();
}
}
return Buffer.from((0, ripemd160_1.ripemd160)(Uint8Array.from(buffer)));
}
exports.ripemd160 = ripemd160;
function sha1(buffer) {
return createHash('sha1').update(buffer).digest();
return Buffer.from((0, sha1_1.sha1)(Uint8Array.from(buffer)));
}
exports.sha1 = sha1;
function sha256(buffer) {
return createHash('sha256').update(buffer).digest();
return Buffer.from((0, sha256_1.sha256)(Uint8Array.from(buffer)));
}
exports.sha256 = sha256;
function hash160(buffer) {
return ripemd160(sha256(buffer));
return Buffer.from(
(0, ripemd160_1.ripemd160)((0, sha256_1.sha256)(Uint8Array.from(buffer))),
);
}
exports.hash160 = hash160;
function hash256(buffer) {
return sha256(sha256(buffer));
return Buffer.from(
(0, sha256_1.sha256)((0, sha256_1.sha256)(Uint8Array.from(buffer))),
);
}
exports.hash256 = hash256;
exports.TAGS = [
Expand Down
2 changes: 1 addition & 1 deletion src/payments/p2pkh.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function p2pkh(a, opts) {
a,
);
const _address = lazy.value(() => {
const payload = bs58check.decode(a.address);
const payload = Buffer.from(bs58check.decode(a.address));
const version = payload.readUInt8(0);
const hash = payload.slice(1);
return { version, hash };
Expand Down
2 changes: 1 addition & 1 deletion src/payments/p2sh.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function p2sh(a, opts) {
}
const o = { network };
const _address = lazy.value(() => {
const payload = bs58check.decode(a.address);
const payload = Buffer.from(bs58check.decode(a.address));
const version = payload.readUInt8(0);
const hash = payload.slice(1);
return { version, hash };
Expand Down
4 changes: 2 additions & 2 deletions ts_src/address.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,13 @@ function _toFutureSegwitAddress(output: Buffer, network: Network): string {
}

export function fromBase58Check(address: string): Base58CheckResult {
const payload = bs58check.decode(address);
const payload = Buffer.from(bs58check.decode(address));

// TODO: 4.0.0, move to "toOutputScript"
if (payload.length < 21) throw new TypeError(address + ' is too short');
if (payload.length > 21) throw new TypeError(address + ' is too long');

const version = payload.readUInt8(0);
const version = payload.readUint8(0);
const hash = payload.slice(1);

return { version, hash };
Expand Down
23 changes: 8 additions & 15 deletions ts_src/crypto.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,25 @@
import * as createHash from 'create-hash';
import * as RipeMd160 from 'ripemd160';
import { ripemd160 as _ripemd160 } from '@noble/hashes/ripemd160';
import { sha1 as _sha1 } from '@noble/hashes/sha1';
import { sha256 as _sha256 } from '@noble/hashes/sha256';

export function ripemd160(buffer: Buffer): Buffer {
try {
return createHash('rmd160').update(buffer).digest();
} catch (err) {
try {
return createHash('ripemd160').update(buffer).digest();
} catch (err2) {
return new RipeMd160().update(buffer).digest();
}
}
return Buffer.from(_ripemd160(Uint8Array.from(buffer)));
}

export function sha1(buffer: Buffer): Buffer {
return createHash('sha1').update(buffer).digest();
return Buffer.from(_sha1(Uint8Array.from(buffer)));
}

export function sha256(buffer: Buffer): Buffer {
return createHash('sha256').update(buffer).digest();
return Buffer.from(_sha256(Uint8Array.from(buffer)));
}

export function hash160(buffer: Buffer): Buffer {
return ripemd160(sha256(buffer));
return Buffer.from(_ripemd160(_sha256(Uint8Array.from(buffer))));
}

export function hash256(buffer: Buffer): Buffer {
return sha256(sha256(buffer));
return Buffer.from(_sha256(_sha256(Uint8Array.from(buffer))));
}

export const TAGS = [
Expand Down
2 changes: 1 addition & 1 deletion ts_src/payments/p2pkh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export function p2pkh(a: Payment, opts?: PaymentOpts): Payment {
);

const _address = lazy.value(() => {
const payload = bs58check.decode(a.address!);
const payload = Buffer.from(bs58check.decode(a.address!));
const version = payload.readUInt8(0);
const hash = payload.slice(1);
return { version, hash };
Expand Down
2 changes: 1 addition & 1 deletion ts_src/payments/p2sh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export function p2sh(a: Payment, opts?: PaymentOpts): Payment {
const o: Payment = { network };

const _address = lazy.value(() => {
const payload = bs58check.decode(a.address!);
const payload = Buffer.from(bs58check.decode(a.address!));
const version = payload.readUInt8(0);
const hash = payload.slice(1);
return { version, hash };
Expand Down