From 942de1bc5e8d4a5c900267f1b486e2d56725acf2 Mon Sep 17 00:00:00 2001 From: xwcdev Date: Sun, 28 Mar 2021 18:54:12 +0800 Subject: [PATCH] change xwc to xwcc,add new xwc --- src/index.html | 1 + src/js/index.js | 15 ++++++++++++++- src/js/xwc-util.js | 28 ++++++++++++++++++++++++++++ tests/spec/tests.js | 12 +++++++++++- 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/js/xwc-util.js diff --git a/src/index.html b/src/index.html index 0588171..cc84247 100644 --- a/src/index.html +++ b/src/index.html @@ -1104,6 +1104,7 @@ + diff --git a/src/js/index.js b/src/js/index.js index c502208..9c627e8 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -1424,6 +1424,12 @@ pubkey = CosmosBufferToPublic(keyPair.getPublicKeyBuffer()); privkey = keyPair.d.toBuffer().toString("base64"); } + if (networks[DOM.network.val()].name == "XWC - Whitecoin"){ + address = XWCbufferToAddress(keyPair.getPublicKeyBuffer()); + pubkey = XWCbufferToPublic(keyPair.getPublicKeyBuffer()); + privkey = XWCbufferToPrivate(keyPair.d.toBuffer(32)); + + } //Groestlcoin Addresses are different if(isGRS()) { @@ -3568,7 +3574,7 @@ }, }, { - name: "XWC - Whitecoin", + name: "XWCC - Whitecoin Classic", onSelect: function() { network = libs.bitcoin.networks.whitecoin; setHdCoin(155); @@ -3609,6 +3615,13 @@ setHdCoin(121); }, }, + { + name: "XWC - Whitecoin", + onSelect: function() { + network = libs.bitcoin.networks.bitcoin; + setHdCoin(559); + }, + } ] var clients = [ diff --git a/src/js/xwc-util.js b/src/js/xwc-util.js new file mode 100644 index 0000000..fc47d05 --- /dev/null +++ b/src/js/xwc-util.js @@ -0,0 +1,28 @@ +function XWCbufferToAddress(pubBuf){ + const Buffer = libs.buffer.Buffer; + const XWC_ADDRESS_PREFIX = "XWC"; + const XWC_NORMAL_ADDRESS_VERSION = "35" + let addrData = libs.createHash("rmd160").update( libs.createHash("sha512").update(pubBuf).digest()).digest(); + let addrBuf = Buffer.concat([Buffer.from(XWC_NORMAL_ADDRESS_VERSION, "hex") ,addrData]) + let checksum = libs.createHash("rmd160").update(addrBuf).digest("hex").slice(0, 8); + addrBuf = Buffer.concat([addrBuf, Buffer.from(checksum, "hex")]); + return XWC_ADDRESS_PREFIX.concat(libs.bs58.encode(addrBuf)); +} + +function XWCbufferToPublic(pubBuf) { + const Buffer = libs.buffer.Buffer; + const XWC_PUBLIC_PREFIX = "XWC"; + let checksum = libs.createHash("rmd160").update(pubBuf).digest("hex").slice(0, 8); + pubBuf = Buffer.concat([pubBuf, Buffer.from(checksum, "hex")]); + return XWC_PUBLIC_PREFIX.concat(libs.bs58.encode(pubBuf)); +} + +function XWCbufferToPrivate(privBuf) { + const Buffer = libs.buffer.Buffer; + const XWC_PRIVATE_PREFIX = "80"; + privBuf = Buffer.concat([Buffer.from(XWC_PRIVATE_PREFIX, "hex"), privBuf]); + let tmp = libs.createHash("sha256").update(privBuf).digest(); + let checksum = libs.createHash("sha256").update(tmp).digest("hex").slice(0, 8); + privBuf = Buffer.concat([privBuf, Buffer.from(checksum, "hex")]); + return libs.bs58.encode(privBuf); +} diff --git a/tests/spec/tests.js b/tests/spec/tests.js index 257cd7b..879405e 100644 --- a/tests/spec/tests.js +++ b/tests/spec/tests.js @@ -1877,7 +1877,7 @@ it('Allows selection of VeChain', function(done) { }); it('Allows selection of Whitecoin', function(done) { var params = { - selectText: "XWC - Whitecoin", + selectText: "XWCC - Whitecoin Classic", phrase: "abandon abandon ability", firstAddress: "WcSwCAUqrSgeSYbsaS3SSWWhsx8KRYTFDR", firstPubKey: "03d3f4fa758f6260bfb39664d248a32258b53a90a71224db056ee79abaa3e9f208", @@ -1885,6 +1885,16 @@ it('Allows selection of Whitecoin', function(done) { }; testNetwork(done, params); }); +it('Allows selection of Whitecoin', function(done) { + var params = { + selectText: "XWC - Whitecoin", + phrase: "abandon abandon ability", + firstAddress: "XWCNY5EQsC55ifxRVEbP7H28yc3TMXC2pqsb5", + firstPubKey: "XWC68fEy4cCc8G1UWyeMPnQ5NjEhMUFSvu1oz4gLKxvj3dPvh7v18", + firstPrivKey: "5K8toD6TYy5DMHkxjpywXNLj4M6CjZAT5h12uhRuVuBBRtci8Zw", + }; + testNetwork(done, params); +}); it('Allows selection of Wincoin', function(done) { var params = { selectText: "WC - Wincoin",