32
32
* @prop {AddressToPubKeyHash } addrToPkh
33
33
* @prop {PubKeyHashToAddress } pkhToAddr
34
34
* @prop {PrivateKeyToWif } privKeyToWif
35
- * @prop {PrivateKeyToAddress } privKeyToAddr
36
35
* @prop {PublicKeyToAddress } pubkeyToAddr
37
36
* @prop {PublicKeyToPubKeyHash } pubkeyToPkh
38
37
* @prop {WifToAddress } wifToAddr
@@ -516,7 +515,7 @@ var DashKeys = ("object" === typeof module && exports) || {};
516
515
let rawAddr = addr . slice ( version . length , - 8 ) ;
517
516
if ( 50 === addr . length ) {
518
517
return {
519
- version : opts ?. version || version ,
518
+ version : version ,
520
519
pubKeyHash : rawAddr ,
521
520
check : addr . slice ( - 8 ) ,
522
521
} ;
@@ -525,20 +524,20 @@ var DashKeys = ("object" === typeof module && exports) || {};
525
524
if ( isXKey ) {
526
525
if ( version === xprvVersion ) {
527
526
return {
528
- version : opts ?. version || version ,
527
+ version : version ,
529
528
xprv : rawAddr ,
530
529
check : addr . slice ( - 8 ) ,
531
530
} ;
532
531
}
533
532
return {
534
- version : opts ?. version || version ,
533
+ version : version ,
535
534
xpub : rawAddr ,
536
535
check : addr . slice ( - 8 ) ,
537
536
} ;
538
537
}
539
538
540
539
return {
541
- version : opts ?. version || version ,
540
+ version : version ,
542
541
privateKey : rawAddr . slice ( 0 , 64 ) ,
543
542
compressed : true , // "01" === rawAddr.slice(64),
544
543
check : addr . slice ( - 8 ) ,
@@ -1081,22 +1080,26 @@ var DashKeys = ("object" === typeof module && exports) || {};
1081
1080
if ( ! opts . version ) {
1082
1081
opts . version = DASH_PKH ;
1083
1082
}
1084
- return await _DashKeys . _encodePkh ( keyBytes , opts ) ;
1083
+ return await _DashKeys . pkhToAddr ( keyBytes , opts ) ;
1085
1084
}
1086
1085
1087
1086
if ( 32 === keyBytes . length ) {
1088
1087
if ( ! opts . version ) {
1089
1088
opts . version = DASH_PRIV_KEY ;
1090
1089
}
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
+ ) ;
1092
1095
}
1093
1096
1094
1097
if ( 33 === keyBytes . length ) {
1095
1098
let pkhBytes = await _DashKeys . pubkeyToPkh ( keyBytes ) ;
1096
1099
if ( ! opts . version ) {
1097
1100
opts . version = DASH_PKH ;
1098
1101
}
1099
- return await _DashKeys . _encodePkh ( pkhBytes , opts ) ;
1102
+ return await _DashKeys . pkhToAddr ( pkhBytes , opts ) ;
1100
1103
}
1101
1104
1102
1105
if ( 74 === keyBytes . length ) {
@@ -1115,69 +1118,6 @@ var DashKeys = ("object" === typeof module && exports) || {};
1115
1118
) ;
1116
1119
} ;
1117
1120
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 } */
1181
1121
_DashKeys . _encodeXKey = async function ( xkeyBytes , opts ) {
1182
1122
let xkey = Utils . bytesToHex ( xkeyBytes ) ;
1183
1123
let version = opts ?. version ;
@@ -1220,6 +1160,25 @@ var DashKeys = ("object" === typeof module && exports) || {};
1220
1160
let pubKeyHash = Utils . bytesToHex ( shaRipeBytes ) ;
1221
1161
let version = opts ?. version ;
1222
1162
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
+
1223
1182
let addr = await dash58check . encode ( {
1224
1183
pubKeyHash,
1225
1184
version,
@@ -1232,6 +1191,25 @@ var DashKeys = ("object" === typeof module && exports) || {};
1232
1191
let privateKey = Utils . bytesToHex ( privBytes ) ;
1233
1192
let version = opts ?. version ;
1234
1193
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
+
1235
1213
let wif = await dash58check . encode ( {
1236
1214
privateKey,
1237
1215
version,
@@ -1257,8 +1235,21 @@ var DashKeys = ("object" === typeof module && exports) || {};
1257
1235
1258
1236
/** @type {WifToAddress } */
1259
1237
_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 } ) ;
1262
1253
1263
1254
let pubBytes = await Utils . toPublicKey ( privBytes ) ;
1264
1255
let pubKeyHash = await _DashKeys . pubkeyToPkh ( pubBytes ) ;
@@ -1275,8 +1266,8 @@ var DashKeys = ("object" === typeof module && exports) || {};
1275
1266
* @param {String } wif - Base58Check-encoded Private Key
1276
1267
* @returns {Promise<Uint8Array> } - private key (no magic byte or checksum)
1277
1268
*/
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 ) ;
1280
1271
let privBytes = Utils . hexToBytes ( wifParts . privateKey ) ;
1281
1272
1282
1273
return privBytes ;
@@ -1347,15 +1338,10 @@ if ("object" === typeof module) {
1347
1338
/**
1348
1339
* Developer Convenience function for Generating Non-HD (NON-RECOVERABLE) WIFs
1349
1340
* @callback GenerateWif
1350
- * @param {GenerateWifOpts } [opts]
1341
+ * @param {PrivateKeyToWifOpts } [opts]
1351
1342
* @returns {Promise<String> } - JS Bytes Buffer (Uint8Array, Node & Browsers)
1352
1343
*/
1353
1344
1354
- /**
1355
- * @typedef GenerateWifOpts
1356
- * @prop {VERSION_PRIVATE } version - "mainnet" ("cc") by default
1357
- */
1358
-
1359
1345
/**
1360
1346
* @callback Hasher
1361
1347
* @param {Uint8Array|Buffer } bytes
@@ -1419,5 +1405,14 @@ if ("object" === typeof module) {
1419
1405
* (of the same coin type, of course)
1420
1406
* @callback WifToAddress
1421
1407
* @param {String } wif - private key
1408
+ * @param {PrivateKeyToWifOpts } [opts]
1422
1409
* @returns {Promise<String> } - address
1423
1410
*/
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