Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

dashhd

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dashhd - npm Package Compare versions

Comparing version 0.1.2 to 0.2.0

bin/_xaddr.js

11

bin/seed-to-wif.js

@@ -12,2 +12,4 @@ #!/usr/bin/env node

let Xaddr = require("./_xaddr.js");
let coinType = 5; // TODO testnet?

@@ -49,4 +51,7 @@

referenceKey = privateRoot
//@ts-ignore
.deriveChild(44 + HdKey.HARDENED_OFFSET)
//@ts-ignore
.deriveChild(coinType + HdKey.HARDENED_OFFSET)
//@ts-ignore
.deriveChild(account + HdKey.HARDENED_OFFSET)

@@ -63,2 +68,3 @@ .deriveChild(direction)

);
//@ts-ignore
referenceKey = directionRoot.deriveChild(index);

@@ -71,3 +77,5 @@ let wif3 = await b58c.encode({

let accountRoot = privateRoot.derive(`m/44'/${coinType}'/${account}'`);
//@ts-ignore
directionRoot = accountRoot.deriveChild(direction);
//@ts-ignore
referenceKey = directionRoot.deriveChild(index);

@@ -102,3 +110,6 @@ let wif4 = await b58c.encode({

let addr = await Xaddr.publicKeyToAddr(referenceKey.publicKey);
console.info(wif1);
console.error(addr);
}

@@ -105,0 +116,0 @@

63

bin/seed-to-wifs.js

@@ -12,2 +12,4 @@ #!/usr/bin/env node

let Xaddr = require("./_xaddr.js");
let coinType = 5; // TODO testnet?

@@ -111,10 +113,4 @@

});
let addr = await Xaddr.publicKeyToAddr(key.publicKey);
let pubKeyHash = await publicKeyToPubKeyHash(key.publicKey);
let pubKeyHashHex = uint8ArrayToHex(pubKeyHash);
let addr = await b58c.encode({
// TODO version: opts?.version,
pubKeyHash: pubKeyHashHex,
});
console.info(`${hdpath}: ${wif}`);

@@ -164,56 +160,3 @@ console.info(` ${addr}`);

/** @type {import('node:crypto')} */
//@ts-ignore
let Crypto = exports.crypto || require("node:crypto");
/**
* @callback Sha256Sum
* @param {Uint8Array|Buffer} u8
* @returns {Promise<Uint8Array|Buffer>}
*/
/** @type {Sha256Sum} */
let sha256sum = async function (u8) {
let arrayBuffer = await Crypto.subtle.digest("SHA-256", u8);
let buf = new Uint8Array(arrayBuffer);
return buf;
};
/** @type {import('@dashincubator/ripemd160')} */
//@ts-ignore
let RIPEMD160 = exports.RIPEMD160 || require("@dashincubator/ripemd160");
/**
* @param {Uint8Array|Buffer} buf
* @returns {Promise<Uint8Array>} - pubKeyHash buffer (no magic byte or checksum)
*/
async function publicKeyToPubKeyHash(buf) {
let shaBuf = await sha256sum(buf);
let ripemd = RIPEMD160.create();
ripemd.update(shaBuf);
let hash = ripemd.digest();
return hash;
}
/**
* JS Buffer to Hex that works for Little-Endian CPUs (ARM, x64, x86, WASM)
* @param {Buffer|Uint8Array} buf
* @returns {String} - hex
*/
function uint8ArrayToHex(buf) {
/** @type {Array<String>} */
let hex = [];
buf.forEach(function (b) {
let h = b.toString(16);
h = h.padStart(2, "0");
hex.push(h);
});
return hex.join("");
}
/**
* @param {Array<String>} arr

@@ -220,0 +163,0 @@ * @returns {Array<String>}

@@ -41,2 +41,9 @@ #!/usr/bin/env node

let xKeys = xKey.toJSON();
// TODO would other software know how to reconcile parent-child keys?
//let xPrivKey = privateRoot.derive(`m/44'/${coinType}'/${account}'`);
//let xPubKey = xPrivKey.deriveChild(0);
//let xKeys = {
// parentPrivate: xPrivKey.toJSON().xpriv,
// childPublic: xPubKey.toJSON().xpub,
//};

@@ -43,0 +50,0 @@ let xprvParts = await b58c.decode(xKeys.xpriv);

{
"name": "dashhd",
"version": "0.1.2",
"version": "0.2.0",
"description": "Browser, Node, Bundler, and CLI compatible Dash HD Wallet tools",
"main": "index.js",
"bin": {
"dash-mnemonic-generate": "./bin/mnemonic-generate.js",
"dash-mnemonic-to-seed": "./bin/mnemonic-to-seed.js",
"dash-seed-to-wif": "./bin/seed-to-wif.js",
"dash-seed-to-wifs": "./bin/seed-to-wifs.js",
"dash-seed-to-xkeys": "./bin/seed-to-xkeys.js",
"dash-wif-to-qr": "./bin/wif-to-qr.js",
"dash-xprv-to-wif": "./bin/xprv-to-wif.js",
"dash-xprv-to-wifs": "./bin/xprv-to-wifs.js",
"dash-xpub-to-addr": "./bin/xpub-to-addr.js",
"dash-xpub-to-addrs": "./bin/xpub-to-addrs.js"
},
"files": [

@@ -7,0 +19,0 @@ "bin/",

@@ -5,5 +5,41 @@ # dashhd.js

# Table of Contents
- CLI utils
- dash-mnemonic-generate
- dash-mnemonic-to-seed (salted or plain)
- dash-seed-to-xkeys (extended public / private keys)
- dash-seed-to-wif
- dash-seed-to-wifs
- dash-xprv-to-wif
- dash-xprv-to-wifs
- dash-xpub-to-addr
- dash-xpub-to-addrs
- Test Fixtures
- Mnemonic
- Salted Seed (password)
- Plain Seed
<!-- TODO
- mnemonic-to-wifs
- mnemonic-to-addrs
-->
# CLI
## Install
```sh
npm install --location=global dashhd
```
Or, use without installing:
```sh
npx -p dashd dash-mnemonic-generate
```
## Usages
```sh
./bin/mnemonic-generate.js

@@ -32,7 +68,23 @@

# Usage: seed-to-wif <./seed.hex> [account] [direction] [index]
```
# XD3sNsdXjXvsnGtcbiqj3SCVdGHyHCRWFDaCAhWotxVfudSN4iRt
```sh
./bin/xprv-to-wif.js
# Usage: xprv-to-wif <./xprv.txt> [index]
```
```txt
XD3sNsdXjXvsnGtcbiqj3SCVdGHyHCRWFDaCAhWotxVfudSN4iRt
```
```sh
./bin/xpub-to-addr.js
# Usage: xpub-to-addr <./xpub.txt> [index]
```
```txt
XnRtALP7ns8stH6o79RQTiWGeW2SQeetxL
```
```sh
./bin/seed-to-wifs.js

@@ -43,2 +95,8 @@ # Usage: seed-to-wif <./seed.hex> [fromPath] [toPath]

```sh
./bin/xprv-to-wifs.js
# Usage: xprv-to-wif <./xprv.txt> [fromPath] [toPath]
# Example: xprv-to-wif ./xprv.txt "0'/0/0" "1'/0/1"
```
```txt

@@ -56,2 +114,13 @@ m/44'/5'/0'/0/0: XKHiWYkmDkNnWGP756UCGcuZ21mHGeYdWeCBBHCBGZaf3NYw1SAz

```sh
./bin/xpub-to-addrs.js
# Usage: xpub-to-addrs <./xpub.txt> [startIndex] [endIndex]
# Example: xpub-to-addrs ./xpub.txt 0 1
```
```txt
XjxyR1gve94LuKqkMLEeqJbEVM5B5q1ZSx
XxRrwh1xBWig9rfLyiy494u2vj6YXQMsH7
```
# Fixtures

@@ -107,2 +176,4 @@

XnRtALP7ns8stH6o79RQTiWGeW2SQeetxL (Addr)
m/44'/5'/0'/0/1: XJ8RCLHTg55mBbvv5mF5Ja3DikzBYWxHn5DvKyJoFm2cufBdUSc2
XeGtfXhcgeyLS2EtAnrkbEKNmVVDupZV6p

@@ -114,3 +185,3 @@ (account 2, internal/change, address 2)

## Seed, xprv, WIFs, & Addrs (Empty Password)
## Seed, xprv, WIFs, & Addrs (With Password)

@@ -150,2 +221,4 @@ If the mnemonic is used with the "password" (or "secret") `supersecret123`, it

XjxyR1gve94LuKqkMLEeqJbEVM5B5q1ZSx (Addr)
m/44'/5'/0'/0/1: XCsy8Qw1fLH7C1UxLjBfTfLpn8DMRK1TMNNE2a5J1F4TyE5UApcK
XxRrwh1xBWig9rfLyiy494u2vj6YXQMsH7

@@ -152,0 +225,0 @@ (account 2, internal/change, address 2)

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc