Skip to content

Commit da8855b

Browse files
committed
fix: pass opts.version in all necessary places
1 parent b912e12 commit da8855b

File tree

1 file changed

+76
-81
lines changed

1 file changed

+76
-81
lines changed

dashkeys.js

Lines changed: 76 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
* @prop {AddressToPubKeyHash} addrToPkh
3333
* @prop {PubKeyHashToAddress} pkhToAddr
3434
* @prop {PrivateKeyToWif} privKeyToWif
35-
* @prop {PrivateKeyToAddress} privKeyToAddr
3635
* @prop {PublicKeyToAddress} pubkeyToAddr
3736
* @prop {PublicKeyToPubKeyHash} pubkeyToPkh
3837
* @prop {WifToAddress} wifToAddr
@@ -516,7 +515,7 @@ var DashKeys = ("object" === typeof module && exports) || {};
516515
let rawAddr = addr.slice(version.length, -8);
517516
if (50 === addr.length) {
518517
return {
519-
version: opts?.version || version,
518+
version: version,
520519
pubKeyHash: rawAddr,
521520
check: addr.slice(-8),
522521
};
@@ -525,20 +524,20 @@ var DashKeys = ("object" === typeof module && exports) || {};
525524
if (isXKey) {
526525
if (version === xprvVersion) {
527526
return {
528-
version: opts?.version || version,
527+
version: version,
529528
xprv: rawAddr,
530529
check: addr.slice(-8),
531530
};
532531
}
533532
return {
534-
version: opts?.version || version,
533+
version: version,
535534
xpub: rawAddr,
536535
check: addr.slice(-8),
537536
};
538537
}
539538

540539
return {
541-
version: opts?.version || version,
540+
version: version,
542541
privateKey: rawAddr.slice(0, 64),
543542
compressed: true, // "01" === rawAddr.slice(64),
544543
check: addr.slice(-8),
@@ -1081,22 +1080,26 @@ var DashKeys = ("object" === typeof module && exports) || {};
10811080
if (!opts.version) {
10821081
opts.version = DASH_PKH;
10831082
}
1084-
return await _DashKeys._encodePkh(keyBytes, opts);
1083+
return await _DashKeys.pkhToAddr(keyBytes, opts);
10851084
}
10861085

10871086
if (32 === keyBytes.length) {
10881087
if (!opts.version) {
10891088
opts.version = DASH_PRIV_KEY;
10901089
}
1091-
return await _DashKeys._encodePrivKey(keyBytes, opts);
1090+
return await _DashKeys.privKeyToWif(
1091+
keyBytes,
1092+
//@ts-ignore - is private key opts (see above)
1093+
opts,
1094+
);
10921095
}
10931096

10941097
if (33 === keyBytes.length) {
10951098
let pkhBytes = await _DashKeys.pubkeyToPkh(keyBytes);
10961099
if (!opts.version) {
10971100
opts.version = DASH_PKH;
10981101
}
1099-
return await _DashKeys._encodePkh(pkhBytes, opts);
1102+
return await _DashKeys.pkhToAddr(pkhBytes, opts);
11001103
}
11011104

11021105
if (74 === keyBytes.length) {
@@ -1115,69 +1118,6 @@ var DashKeys = ("object" === typeof module && exports) || {};
11151118
);
11161119
};
11171120

1118-
/** @type {EncodeKeyUint8Array} */
1119-
_DashKeys._encodePkh = async function (shaRipeBytes, opts) {
1120-
let pubKeyHash = Utils.bytesToHex(shaRipeBytes);
1121-
let version = opts?.version;
1122-
1123-
switch (version) {
1124-
case "mainnet":
1125-
version = DASH_PKH;
1126-
break;
1127-
case "testnet":
1128-
version = DASH_PKH_TESTNET;
1129-
break;
1130-
case DASH_PKH:
1131-
// keep as is
1132-
break;
1133-
case DASH_PKH_TESTNET:
1134-
// keep as is
1135-
break;
1136-
default:
1137-
throw new Error(
1138-
`Address (PubKey Hash) version must be "mainnet" ("${DASH_PKH}") or "testnet" ("${DASH_PKH_TESTNET}"), not '${version}'`,
1139-
);
1140-
}
1141-
1142-
let addr = await dash58check.encode({
1143-
pubKeyHash,
1144-
version,
1145-
});
1146-
return addr;
1147-
};
1148-
1149-
/** @type {EncodeKeyUint8Array} */
1150-
_DashKeys._encodePrivKey = async function (privBytes, opts) {
1151-
let privateKey = Utils.bytesToHex(privBytes);
1152-
let version = opts?.version;
1153-
1154-
switch (version) {
1155-
case "mainnet":
1156-
version = DASH_PRIV_KEY;
1157-
break;
1158-
case "testnet":
1159-
version = DASH_PRIV_KEY_TESTNET;
1160-
break;
1161-
case DASH_PRIV_KEY:
1162-
// keep as is
1163-
break;
1164-
case DASH_PRIV_KEY_TESTNET:
1165-
// keep as is
1166-
break;
1167-
default:
1168-
throw new Error(
1169-
`WIF (Private Key) version must be "mainnet" ("${DASH_PRIV_KEY}") or "testnet" ("${DASH_PRIV_KEY_TESTNET}"), not '${version}'`,
1170-
);
1171-
}
1172-
1173-
let wif = await dash58check.encode({
1174-
privateKey,
1175-
version,
1176-
});
1177-
return wif;
1178-
};
1179-
1180-
/** @type {EncodeKeyUint8Array} */
11811121
_DashKeys._encodeXKey = async function (xkeyBytes, opts) {
11821122
let xkey = Utils.bytesToHex(xkeyBytes);
11831123
let version = opts?.version;
@@ -1220,6 +1160,25 @@ var DashKeys = ("object" === typeof module && exports) || {};
12201160
let pubKeyHash = Utils.bytesToHex(shaRipeBytes);
12211161
let version = opts?.version;
12221162

1163+
switch (version) {
1164+
case "mainnet":
1165+
version = DASH_PKH;
1166+
break;
1167+
case "testnet":
1168+
version = DASH_PKH_TESTNET;
1169+
break;
1170+
case DASH_PKH:
1171+
// keep as is
1172+
break;
1173+
case DASH_PKH_TESTNET:
1174+
// keep as is
1175+
break;
1176+
default:
1177+
throw new Error(
1178+
`Address (PubKey Hash) version must be "mainnet" ("${DASH_PKH}") or "testnet" ("${DASH_PKH_TESTNET}"), not '${version}'`,
1179+
);
1180+
}
1181+
12231182
let addr = await dash58check.encode({
12241183
pubKeyHash,
12251184
version,
@@ -1232,6 +1191,25 @@ var DashKeys = ("object" === typeof module && exports) || {};
12321191
let privateKey = Utils.bytesToHex(privBytes);
12331192
let version = opts?.version;
12341193

1194+
switch (version) {
1195+
case "mainnet":
1196+
version = DASH_PRIV_KEY;
1197+
break;
1198+
case "testnet":
1199+
version = DASH_PRIV_KEY_TESTNET;
1200+
break;
1201+
case DASH_PRIV_KEY:
1202+
// keep as is
1203+
break;
1204+
case DASH_PRIV_KEY_TESTNET:
1205+
// keep as is
1206+
break;
1207+
default:
1208+
throw new Error(
1209+
`WIF (Private Key) version must be "mainnet" ("${DASH_PRIV_KEY}") or "testnet" ("${DASH_PRIV_KEY_TESTNET}"), not '${version}'`,
1210+
);
1211+
}
1212+
12351213
let wif = await dash58check.encode({
12361214
privateKey,
12371215
version,
@@ -1257,8 +1235,21 @@ var DashKeys = ("object" === typeof module && exports) || {};
12571235

12581236
/** @type {WifToAddress} */
12591237
_DashKeys.wifToAddr = async function (wif, opts) {
1260-
let privBytes = await _DashKeys.wifToPrivKey(wif);
1261-
let version = opts?.version;
1238+
let version = opts?.version || "mainnet";
1239+
1240+
switch (version) {
1241+
case "mainnet":
1242+
version = DASH_PRIV_KEY;
1243+
break;
1244+
case "testnet":
1245+
version = DASH_PRIV_KEY_TESTNET;
1246+
break;
1247+
default:
1248+
let msg = `'version' must be "mainnet" or "testnet", not '${version}', or use priv => priv or pub => pub methods for more control`;
1249+
throw new Error(msg);
1250+
}
1251+
1252+
let privBytes = await _DashKeys.wifToPrivKey(wif, { version });
12621253

12631254
let pubBytes = await Utils.toPublicKey(privBytes);
12641255
let pubKeyHash = await _DashKeys.pubkeyToPkh(pubBytes);
@@ -1275,8 +1266,8 @@ var DashKeys = ("object" === typeof module && exports) || {};
12751266
* @param {String} wif - Base58Check-encoded Private Key
12761267
* @returns {Promise<Uint8Array>} - private key (no magic byte or checksum)
12771268
*/
1278-
_DashKeys.wifToPrivKey = async function (wif) {
1279-
let wifParts = await dash58check.decode(wif);
1269+
_DashKeys.wifToPrivKey = async function (wif, opts) {
1270+
let wifParts = await dash58check.decode(wif, opts);
12801271
let privBytes = Utils.hexToBytes(wifParts.privateKey);
12811272

12821273
return privBytes;
@@ -1347,15 +1338,10 @@ if ("object" === typeof module) {
13471338
/**
13481339
* Developer Convenience function for Generating Non-HD (NON-RECOVERABLE) WIFs
13491340
* @callback GenerateWif
1350-
* @param {GenerateWifOpts} [opts]
1341+
* @param {PrivateKeyToWifOpts} [opts]
13511342
* @returns {Promise<String>} - JS Bytes Buffer (Uint8Array, Node & Browsers)
13521343
*/
13531344

1354-
/**
1355-
* @typedef GenerateWifOpts
1356-
* @prop {VERSION_PRIVATE} version - "mainnet" ("cc") by default
1357-
*/
1358-
13591345
/**
13601346
* @callback Hasher
13611347
* @param {Uint8Array|Buffer} bytes
@@ -1419,5 +1405,14 @@ if ("object" === typeof module) {
14191405
* (of the same coin type, of course)
14201406
* @callback WifToAddress
14211407
* @param {String} wif - private key
1408+
* @param {PrivateKeyToWifOpts} [opts]
14221409
* @returns {Promise<String>} - address
14231410
*/
1411+
1412+
/**
1413+
* Decodes a WIF-encoded PrivateKey to Bytes
1414+
* @callback WifToPrivateKey
1415+
* @param {String} wif - private key
1416+
* @param {PrivateKeyToWifOpts} [opts]
1417+
* @returns {Promise<Uint8Array>}
1418+
*/

0 commit comments

Comments
 (0)