Compare commits

...

55 Commits
0.3.2 ... 0.3.5

Author SHA1 Message Date
Ian Coleman
a08c709606 Release v0.3.5 2018-04-12 12:34:35 +10:00
Ian Coleman
645945a00f Warn when using weak entropy and strong mnemonic 2018-04-12 12:16:05 +10:00
Ian Coleman
85c906727a Warn when generating low entropy mnemonics 2018-04-12 12:08:52 +10:00
iancoleman
d1b4c8c579 Merge pull request #200 from Coinomi/coinomi
Add coins supported by Coinomi wallet
2018-04-12 11:32:37 +10:00
iancoleman
e602fd18de Merge pull request #198 from fujicoin/mod-fujicoin-SegWit
fix index.js fujicoin
2018-04-11 10:32:53 +10:00
xarakas
85f762c905 Add coins supported by Coinomi wallet 2018-04-10 17:34:16 +03:00
motty
3021870752 fix index.js fujicoin 2018-04-10 21:23:56 +09:00
iancoleman
63e2e0755f Merge pull request #196 from fujicoin/mod-fujicoin-SegWit
mod fujicoin SegWit
2018-04-10 08:59:07 +10:00
motty
9a2ca392f0 mod fujicoin SegWit 2018-04-08 21:15:25 +09:00
Ian Coleman
db37d63919 Order Neblio coin alphabetically 2018-03-27 10:32:19 +11:00
Ian Coleman
2eab7c3236 Order Beetlecoin alphabetically 2018-03-27 10:32:01 +11:00
Ian Coleman
38122a3d58 Add test for testnet p2wpkh parameters 2018-03-27 10:31:23 +11:00
Ian Coleman
680b94c1ef Add test for Beetlecoin 2018-03-27 10:28:39 +11:00
Ian Coleman
e5167afe28 Add test for Neblio coin 2018-03-27 10:28:17 +11:00
Ian Coleman
88ae130125 Change Bitcoin Gold coin number to 156
Closes #189
2018-03-27 10:24:35 +11:00
iancoleman
27fa320125 Merge pull request #188 from dalitsairio/master
Add network testnet.p2wpkh
2018-03-27 10:22:07 +11:00
iancoleman
dfbb5a65ff Merge pull request #186 from williamersatz/master
Implemented support for Beetle Coin
2018-03-27 10:20:57 +11:00
Dalit Sairio
206a27352d Add network testnet.p2wpkh 2018-03-25 22:28:25 +02:00
williamersatz
0c9bbd03b0 Added support for Beetle Coin 2018-03-22 09:09:02 +02:00
williamersatz
52d698e42f Added support for Beetle Coin 2018-03-22 09:08:16 +02:00
Ian Coleman
b777ff554d Update bitcoinjs-lib from 3.3.0 to 3.3.2
Built using instructions at
https://github.com/bitcoinjs/bitcoinjs-lib/tree/v3.3.2#browser
2018-03-19 15:13:07 +11:00
iancoleman
0d876b51df Merge pull request #178 from TrifidTeam/init-nebl-integration
Add Neblio
2018-03-16 10:09:13 +11:00
TrifidTeam
ae008be5db Add files via upload 2018-03-14 16:57:16 -04:00
iancoleman
2ed3f6c0c8 Merge pull request #177 from dimitris-t/patch-2
Fixed typo
2018-03-14 09:38:55 +11:00
Dimitris Tsapakidis
dfe833a7db Fixed typo
"each key will take take several minutes" -> "each key will take several minutes'
2018-03-13 23:52:42 +04:00
Ian Coleman
fca07769eb Release v0.3.4 2018-03-12 11:48:10 +11:00
Ian Coleman
5028988195 Use correct BIP44 value for Denarius of 116, not 0
See https://github.com/satoshilabs/slips/blob/master/slip-0044.md
2018-03-12 11:41:35 +11:00
Ian Coleman
139becaf2c Add Korean language 2018-03-12 11:31:41 +11:00
Ian Coleman
0514c20b81 Update jsbip39.js to latest version 2018-03-12 11:31:41 +11:00
Ian Coleman
f8ca25c338 Add spacing every 11 bits to the checksum 2018-03-12 11:31:41 +11:00
Ian Coleman
548d94994b Warn that entropy values should exclude checksum 2018-03-12 11:31:41 +11:00
Ian Coleman
09d63290a4 Show the checksum value in the entropy details 2018-03-12 11:31:41 +11:00
Ian Coleman
d6cade868f Add spaces every 11 bits to raw binary of entropy
This makes it easier to see that the checksum is missing from the end of
the entropy.
2018-03-12 11:31:41 +11:00
Ian Coleman
048721a6ff Add test for blackcoin 2018-03-12 11:31:41 +11:00
Ian Coleman
892ce76fed Order blackcoin alphabetically in coin list 2018-03-12 11:31:41 +11:00
iancoleman
aaa82c097f Merge pull request #172 from carsenk/master
Add Denarius (DNR) Support
2018-03-12 11:21:17 +11:00
iancoleman
05311e7f54 Merge pull request #163 from janko33bd/blackcoin
Add Blackcoin please
2018-03-12 09:23:17 +11:00
carsenk
40209fd898 Add DNR Support 2018-03-06 01:11:55 -07:00
janko33bd
e5520bb859 typo 2018-02-07 19:27:35 +01:00
janko33bd
e1d0cf4f72 update index.js with correct BIP44 reg. number 2018-02-07 19:26:26 +01:00
janko33bd
e82a142872 make bitcoinjs-extensions black 2018-02-07 19:20:54 +01:00
Ian Coleman
fcc7d12109 Release v0.3.3 2018-02-06 10:36:38 +11:00
Ian Coleman
5dfe77e4a3 Fix tests which generate more rows 2018-02-06 10:33:21 +11:00
Ian Coleman
e21e32da31 Add BIP38 test 2018-02-06 10:14:22 +11:00
Ian Coleman
ba678b1147 Allow initial number of rows to be set by user 2018-02-06 09:57:28 +11:00
Ian Coleman
0b39e9dca7 Add BIP38 interface elements 2018-02-06 09:57:23 +11:00
Ian Coleman
cc61ec30c5 Encrypt private keys with BIP38
with fakes for missing UI elements
2018-02-06 09:43:13 +11:00
Ian Coleman
0f0a888e13 Add bitcoinjs-bip38-2.0.2 library
Created using browserify:
git clone https://github.com/bitcoinjs/bip38.git
git checkout v2.0.2
npm install
npm run unit
browserify index.js --standalone bitcoinjs-bip38 > bitcoinjs-bip38-2.0.2.js
2018-02-06 09:42:10 +11:00
Ian Coleman
2ef27fb80b Remove commented-out lines of code from test 2018-01-16 10:37:37 +11:00
Ian Coleman
423fb969c6 Test AXE network 2018-01-16 10:34:42 +11:00
Ian Coleman
9fae1ffbcc Increase allowed rendering time tests
Firefox was only generating 15 of 20 rows in the address table
2018-01-16 10:33:08 +11:00
Ian Coleman
78db37f663 LeftPad ethereum private keys with zeros if needed 2018-01-16 10:33:08 +11:00
iancoleman
28e1cd455c Merge pull request #154 from AXErunners/master
Add AXE
2018-01-16 09:05:18 +11:00
-k
47debf07ed AXE support
prefix fixed
2018-01-07 00:55:48 -05:00
-k
cfc0c4d743 AXE support 2018-01-06 23:57:11 -05:00
12 changed files with 60906 additions and 14483 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,31 @@
# 0.3.5
* Fix typo
* Add Neblio network
* Update bitcoinjs-lib from 3.3.0 to 3.3.2
* Add Beetle Coin
* Add segwit for bitcoin testnet and Fujicoin
* Set coin number for Bitcoin God to 156
* Add coins supported by coinomi
* Warn when generating low entropy mnemonics
* Warn when overriding weak entropy with a strong mnemonic length
# 0.3.4
* Add BlackCoin
* Add Denarius
* Raw entropy shows groupings with space every 11 bits
* Checksum shown in entropy details
* Warn that entropy values should exclude checksum
* Add Korean language
# 0.3.3
* Add AXE network
* Ethereum private key generation bugfix
* Add BIP38 support
* Allow initial number of rows to be set by the user
# 0.3.2
* Add Onixcoin

View File

@@ -15,7 +15,7 @@
<div class="container">
<h1 class="text-center">Mnemonic Code Converter</h1>
<p class="version">v0.3.2</p>
<p class="version">v0.3.5</p>
<hr>
<div class="row">
<div class="col-md-12">
@@ -48,7 +48,12 @@
<option value="21">21</option>
<option value="24">24</option>
</select>
<span>words</span>
<span>words</span>.
<p class="warning help-block hidden">
<span class="text-danger">
Mnemonics with less than 12 words have low entropy and may be guessed by an attacker.
</span>
</p>
</div>
</div>
</div>
@@ -94,6 +99,8 @@
<div class="filtered col-sm-9 form-control-static"></div>
<label class="col-sm-3 control-label">Raw Binary</label>
<div class="binary col-sm-9 form-control-static"></div>
<label class="col-sm-3 control-label">Binary Checksum</label>
<div class="checksum col-sm-9 form-control-static">&nbsp;</div>
<label class="col-sm-3 control-label">Word Indexes</label>
<div class="word-indexes col-sm-9 form-control-static">&nbsp;</div>
<label class="col-sm-3 control-label">Mnemonic Length</label>
@@ -106,6 +113,11 @@
<option value="21">21 <span>Words</span></option>
<option value="24">24 <span>Words</span></option>
</select>
<p class="weak-entropy-override-warning hidden">
<span class="text-danger">
The mnemonic will appear more secure than it really is.
</span>
</p>
</div>
</div>
<div class="col-sm-3">
@@ -141,6 +153,7 @@
<a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
<a href="#french" title="French">Français</a>
<a href="#italian" title="Italian">Italiano</a>
<a href="#korean" title="Korean">한국어</a>
</div>
</div>
</div>
@@ -603,6 +616,16 @@
</label>
</div>
</div>
<div class="col-md-12">
<div class="checkbox">
<label>
<input type="checkbox" class="use-bip38">
<span>Encrypt private keys using BIP38 and this password:</span>
</label>
<input class="bip38-password">
<span>Enabling BIP38 means each key will take several minutes to generate.</span>
</div>
</div>
<ul class="addresses-type nav nav-tabs" role="tablist">
<li id="table-tab" class="active">
<a href="#table" role="tab" data-toggle="tab">Table</a>
@@ -703,6 +726,9 @@
<span>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
</p>
<h3 id="entropy-notes">Entropy</h3>
<p>
<span>Entropy values should not include the BIP39 checksum. This is automatically added by the tool.</span>
</p>
<p>
<span>
Entropy values must be sourced from a
@@ -871,8 +897,9 @@
<script src="js/bootstrap-3.3.7.js"></script>
<script src="js/levenshtein.js"></script>
<script src="js/kjua-0.1.1.min.js"></script>
<script src="js/bitcoinjs-3.3.0.js"></script>
<script src="js/bitcoinjs-3.3.2.js"></script>
<script src="js/bitcoinjs-extensions.js"></script>
<script src="js/bitcoinjs-bip38-2.0.2.js"></script>
<script src="js/segwit-parameters.js"></script>
<script src="js/ethereumjs-util.js"></script>
<script src="js/ripple-util.js"></script>
@@ -884,6 +911,7 @@
<script src="js/wordlist_chinese_traditional.js"></script>
<script src="js/wordlist_french.js"></script>
<script src="js/wordlist_italian.js"></script>
<script src="js/wordlist_korean.js"></script>
<script src="js/jsbip39.js"></script>
<script src="js/biginteger.js"></script>
<script src="js/zxcvbn.js"></script>

15157
src/js/bitcoinjs-3.3.2.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -108,6 +108,17 @@ bitcoinjs.bitcoin.networks.peercoin = {
wif: 0xb7
};
bitcoinjs.bitcoin.networks.axe = {
messagePrefix: 'unused',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x4B,
scriptHash: 0xCB, // TODO set this correctly
wif: 0xCB
};
bitcoinjs.bitcoin.networks.slimcoin = {
messagePrefix: 'unused',
bip32: {
@@ -141,6 +152,28 @@ bitcoinjs.bitcoin.networks.dogecoin = {
wif: 0x9e
};
bitcoinjs.bitcoin.networks.denarius = {
messagePrefix: '\x19Denarius Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x1e,
scriptHash: 0x5a,
wif: 0x9e
};
bitcoinjs.bitcoin.networks.neblio = {
messagePrefix: '\x18Neblio Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x35,
scriptHash: 0x70,
wif: 0xb5
};
bitcoinjs.bitcoin.networks.viacoin = {
messagePrefix: '\x18Viacoin Signed Message:\n',
bip32: {
@@ -317,3 +350,841 @@ bitcoinjs.bitcoin.networks.komodo = {
scriptHash: 0x55,
wif: 0xbc
};
bitcoinjs.bitcoin.networks.blackcoin = {
messagePrefix: '\x18BlackCoin Signed Message:\n',
bip32: {
public: 0x02CFBEDE,
private: 0x02CFBF60
},
pubKeyHash: 0x19,
scriptHash: 0x55,
wif: 0x99
};
bitcoinjs.bitcoin.networks.beetlecoin = {
messagePrefix: '\x19Beetlecoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x1A,
scriptHash: 0x55,
wif: 0x99,
};
bitcoinjs.bitcoin.networks.adcoin = {
messagePrefix: '\x18AdCoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x17,
scriptHash: 0x05,
wif: 0xb0,
};
bitcoinjs.bitcoin.networks.asiacoin = {
messagePrefix: '\x18AsiaCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x17,
scriptHash: 0x08,
wif: 0x97,
};
bitcoinjs.bitcoin.networks.auroracoin = {
messagePrefix: '\x18AuroraCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x17,
scriptHash: 0x05,
wif: 0x97,
};
bitcoinjs.bitcoin.networks.bata = {
messagePrefix: '\x18Bata Signed Message:\n',
bip32: {
public: 0xA40C86FA,
private: 0xA40B91BD,
},
pubKeyHash: 0x19,
scriptHash: 0x05,
wif: 0xa4,
};
bitcoinjs.bitcoin.networks.belacoin = {
messagePrefix: '\x18BelaCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x19,
scriptHash: 0x05,
wif: 0x99,
};
bitcoinjs.bitcoin.networks.atom = {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x17,
scriptHash: 0x0a,
wif: 0x80,
};
bitcoinjs.bitcoin.networks.bitcoinplus = {
messagePrefix: '\x18BitcoinPlus Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x19,
scriptHash: 0x08,
wif: 0x99,
};
bitcoinjs.bitcoin.networks.bitcore = {
messagePrefix: '\x18BitCore Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80,
};
bitcoinjs.bitcoin.networks.bitsend = {
messagePrefix: '\x18Bitsend Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x66,
scriptHash: 0x05,
wif: 0xcc,
};
bitcoinjs.bitcoin.networks.britcoin = {
messagePrefix: '\x18BritCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x19,
scriptHash: 0x55,
wif: 0x99,
};
bitcoinjs.bitcoin.networks.canadaecoin = {
messagePrefix: '\x18Canada eCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x1c,
scriptHash: 0x05,
wif: 0x9c,
};
bitcoinjs.bitcoin.networks.cannacoin = {
messagePrefix: '\x18Cannacoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x1c,
scriptHash: 0x05,
wif: 0x9c,
};
bitcoinjs.bitcoin.networks.clubcoin = {
messagePrefix: '\x18ClubCoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x1c,
scriptHash: 0x55,
wif: 0x99,
};
bitcoinjs.bitcoin.networks.compcoin = {
messagePrefix: '\x18CompCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x1c,
scriptHash: 0x55,
wif: 0x9c,
};
bitcoinjs.bitcoin.networks.crave = {
messagePrefix: '\x18DarkNet Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x46,
scriptHash: 0x55,
wif: 0x99,
};
bitcoinjs.bitcoin.networks.defcoin = {
messagePrefix: '\x18defcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x1e,
scriptHash: 0x05,
wif: 0x9e,
};
bitcoinjs.bitcoin.networks.diamond = {
messagePrefix: '\x18Diamond Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x5a,
scriptHash: 0x08,
wif: 0xda,
};
bitcoinjs.bitcoin.networks.digibyte = {
messagePrefix: '\x18DigiByte Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x1e,
scriptHash: 0x05,
wif: 0x80,
};
bitcoinjs.bitcoin.networks.digitalcoin = {
messagePrefix: '\x18Digitalcoin Signed Message:\n',
bip32: {
public: 0x9e0488B2,
private: 0x0488ADE4,
},
pubKeyHash: 0x1e,
scriptHash: 0x05,
wif: 0x9e,
};
bitcoinjs.bitcoin.networks.ecoin = {
messagePrefix: '\x18eCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x5c,
scriptHash: 0x14,
wif: 0xdc,
};
bitcoinjs.bitcoin.networks.edrcoin = {
messagePrefix: '\x18EDRcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x5d,
scriptHash: 0x1c,
wif: 0xdd,
};
bitcoinjs.bitcoin.networks.egulden = {
messagePrefix: '\x18Egulden Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x30,
scriptHash: 0x05,
wif: 0xb0,
};
bitcoinjs.bitcoin.networks.einsteinium = {
messagePrefix: '\x18Einsteinium Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x21,
scriptHash: 0x05,
wif: 0xa1,
};
bitcoinjs.bitcoin.networks.europecoin = {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x21,
scriptHash: 0x05,
wif: 0xa8,
};
bitcoinjs.bitcoin.networks.exclusivecoin = {
messagePrefix: '\x18ExclusiveCoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x21,
scriptHash: 0x89,
wif: 0xa1,
};
bitcoinjs.bitcoin.networks.feathercoin = {
messagePrefix: '\x18Feathercoin Signed Message:\n',
bip32: {
public: 0x0488BC26,
private: 0x0488DAEE,
},
pubKeyHash: 0x0e,
scriptHash: 0x05,
wif: 0x8e,
};
bitcoinjs.bitcoin.networks.firstcoin = {
messagePrefix: '\x18FirstCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x23,
scriptHash: 0x05,
wif: 0xa3,
};
bitcoinjs.bitcoin.networks.flashcoin = {
messagePrefix: '\x18Flashcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x44,
scriptHash: 0x82,
wif: 0xc4,
};
bitcoinjs.bitcoin.networks.gcr = {
messagePrefix: '\x18GCR Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x26,
scriptHash: 0x61,
wif: 0x9a,
};
bitcoinjs.bitcoin.networks.gobyte = {
messagePrefix: '\x18DarkCoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x26,
scriptHash: 0x0a,
wif: 0xc6,
};
bitcoinjs.bitcoin.networks.gridcoin = {
messagePrefix: '\x18Gridcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x3e,
scriptHash: 0x55,
wif: 0xbe,
};
bitcoinjs.bitcoin.networks.gulden = {
messagePrefix: '\x18Guldencoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x26,
scriptHash: 0x62,
wif: 0x62,
};
bitcoinjs.bitcoin.networks.helleniccoin = {
messagePrefix: '\x18helleniccoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x30,
scriptHash: 0x05,
wif: 0xb0,
};
bitcoinjs.bitcoin.networks.hempcoin = {
messagePrefix: '\x18Hempcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x28,
scriptHash: 0x08,
wif: 0xa8,
};
bitcoinjs.bitcoin.networks.insane = {
messagePrefix: '\x18INSaNe Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x66,
scriptHash: 0x39,
wif: 0x37,
};
bitcoinjs.bitcoin.networks.iop = {
messagePrefix: '\x18IoP Signed Message:\n',
bip32: {
public: 0x2780915F,
private: 0xAE3416F6,
},
pubKeyHash: 0x75,
scriptHash: 0xae,
wif: 0x31,
};
bitcoinjs.bitcoin.networks.ixcoin = {
messagePrefix: '\x18Ixcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x8a,
scriptHash: 0x05,
wif: 0x80,
};
bitcoinjs.bitcoin.networks.landcoin = {
messagePrefix: '\x18Landcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x30,
scriptHash: 0x7a,
wif: 0xb0,
};
bitcoinjs.bitcoin.networks.lbry = {
messagePrefix: '\x18LBRYcrd Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x55,
scriptHash: 0x7a,
wif: 0x1c,
};
bitcoinjs.bitcoin.networks.linx = {
messagePrefix: '\x18LinX Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x4b,
scriptHash: 0x05,
wif: 0xcb,
};
bitcoinjs.bitcoin.networks.litecoincash = {
messagePrefix: '\x18Litecoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x1c,
scriptHash: 0x05,
wif: 0xb0,
};
bitcoinjs.bitcoin.networks.lynx = {
messagePrefix: '\x18Lynx Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x2d,
scriptHash: 0x32,
wif: 0xad,
};
bitcoinjs.bitcoin.networks.minexcoin = {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x4b,
scriptHash: 0x05,
wif: 0x80,
};
bitcoinjs.bitcoin.networks.navcoin = {
messagePrefix: '\x18Navcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x35,
scriptHash: 0x55,
wif: 0x96,
};
bitcoinjs.bitcoin.networks.neoscoin = {
messagePrefix: '\x18NeosCoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x35,
scriptHash: 0x05,
wif: 0xb1,
};
bitcoinjs.bitcoin.networks.neurocoin = {
messagePrefix: '\x18PPCoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x35,
scriptHash: 0x75,
wif: 0xb5,
};
bitcoinjs.bitcoin.networks.newyorkc = {
messagePrefix: '\x18newyorkc Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x3c,
scriptHash: 0x16,
wif: 0xbc,
};
bitcoinjs.bitcoin.networks.novacoin = {
messagePrefix: '\x18NovaCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x08,
scriptHash: 0x14,
wif: 0x88,
};
bitcoinjs.bitcoin.networks.nushares = {
messagePrefix: '\x18Nu Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x3f,
scriptHash: 0x40,
wif: 0x95,
};
bitcoinjs.bitcoin.networks.okcash = {
messagePrefix: '\x18OKCash Signed Message:\n',
bip32: {
public: 0x03CC23D7,
private: 0x03CC1C73,
},
pubKeyHash: 0x37,
scriptHash: 0x1c,
wif: 0x03,
};
bitcoinjs.bitcoin.networks.omnicore = {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80,
};
bitcoinjs.bitcoin.networks.pesobit = {
messagePrefix: '\x18Pesobit Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x37,
scriptHash: 0x55,
wif: 0xb7,
};
bitcoinjs.bitcoin.networks.pinkcoin = {
messagePrefix: '\x18Pinkcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x03,
scriptHash: 0x1c,
wif: 0x83,
};
bitcoinjs.bitcoin.networks.poswcoin = {
messagePrefix: '\x18Poswcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x37,
scriptHash: 0x55,
wif: 0xb7,
};
bitcoinjs.bitcoin.networks.potcoin = {
messagePrefix: '\x18Potcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x37,
scriptHash: 0x05,
wif: 0xb7,
};
bitcoinjs.bitcoin.networks.putincoin = {
messagePrefix: '\x18PutinCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x37,
scriptHash: 0x14,
wif: 0xb7,
};
bitcoinjs.bitcoin.networks.reddcoin = {
messagePrefix: '\x18Reddcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x3d,
scriptHash: 0x05,
wif: 0xbd,
};
bitcoinjs.bitcoin.networks.revolutionvr = {
messagePrefix: '\x18Voxels Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x46,
scriptHash: 0x05,
wif: 0xc6,
};
bitcoinjs.bitcoin.networks.rubycoin = {
messagePrefix: '\x18Rubycoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x3c,
scriptHash: 0x55,
wif: 0xbc,
};
bitcoinjs.bitcoin.networks.smileycoin = {
messagePrefix: '\x18Smileycoin Signed Message:\n',
bip32: {
public: 0x1E562D9A,
private: 0x1E5631BC,
},
pubKeyHash: 0x19,
scriptHash: 0x05,
wif: 0x05,
};
bitcoinjs.bitcoin.networks.solarcoin = {
messagePrefix: '\x18SolarCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x12,
scriptHash: 0x05,
wif: 0x92,
};
bitcoinjs.bitcoin.networks.stratis = {
messagePrefix: '\x18Stratis Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x3f,
scriptHash: 0x7d,
wif: 0xbf,
};
bitcoinjs.bitcoin.networks.syscoin = {
messagePrefix: '\x18Syscoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x3f,
scriptHash: 0x05,
wif: 0xbf,
};
bitcoinjs.bitcoin.networks.toa = {
messagePrefix: '\x18TOA Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x41,
scriptHash: 0x17,
wif: 0xc1,
};
bitcoinjs.bitcoin.networks.ultimatesecurecash = {
messagePrefix: '\x18UltimateSecureCash Signed Message:\n',
bip32: {
public: 0xEE80286A,
private: 0xEE8031E8,
},
pubKeyHash: 0x44,
scriptHash: 0x7d,
wif: 0xbf,
};
bitcoinjs.bitcoin.networks.unobtanium = {
messagePrefix: '\x18Unobtanium Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x82,
scriptHash: 0x1e,
wif: 0xe0,
};
bitcoinjs.bitcoin.networks.vcash = {
messagePrefix: '\x18Vcash Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x47,
scriptHash: 0x08,
wif: 0xc7,
};
bitcoinjs.bitcoin.networks.verge = {
messagePrefix: '\x18VERGE Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x1e,
scriptHash: 0x21,
wif: 0x9e,
};
bitcoinjs.bitcoin.networks.vertcoin = {
messagePrefix: '\x18Vertcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x47,
scriptHash: 0x05,
wif: 0xc7,
};
bitcoinjs.bitcoin.networks.vivo = {
messagePrefix: '\x18DarkCoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x46,
scriptHash: 0x0a,
wif: 0xc6,
};
bitcoinjs.bitcoin.networks.vpncoin = {
messagePrefix: '\x18VpnCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x47,
scriptHash: 0x05,
wif: 0xc7,
};
bitcoinjs.bitcoin.networks.whitecoin = {
messagePrefix: '\x18Whitecoin Signed Message:\n',
bip32: {
public: 0x04887F1E,
private: 0x048894ED,
},
pubKeyHash: 0x49,
scriptHash: 0x57,
wif: 0xc9,
};
bitcoinjs.bitcoin.networks.wincoin = {
messagePrefix: '\x18WinCoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4,
},
pubKeyHash: 0x49,
scriptHash: 0x1c,
wif: 0xc9,
};
bitcoinjs.bitcoin.networks.zcoin = {
messagePrefix: '\x18Zcoin Signed Message:\n',
bip32: {
public: 0x0488B21E,
private: 0x0488ADE4,
},
pubKeyHash: 0x52,
scriptHash: 0x07,
wif: 0xd2,
};

View File

@@ -38,7 +38,9 @@
DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
DOM.entropyBinary = DOM.entropyContainer.find(".binary");
DOM.entropyWordIndexes = DOM.entropyContainer.find(".word-indexes");
DOM.entropyChecksum = DOM.entropyContainer.find(".checksum");
DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
DOM.entropyWeakEntropyOverrideWarning = DOM.entropyContainer.find(".weak-entropy-override-warning");
DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
DOM.phrase = $(".phrase");
DOM.passphrase = $(".passphrase");
@@ -87,9 +89,12 @@
DOM.bip141path = $("#bip141-path");
DOM.bip141semantics = $(".bip141-semantics");
DOM.generatedStrength = $(".generate-container .strength");
DOM.generatedStrengthWarning = $(".generate-container .warning");
DOM.hardenedAddresses = $(".hardened-addresses");
DOM.useBitpayAddressesContainer = $(".use-bitpay-addresses-container");
DOM.useBitpayAddresses = $(".use-bitpay-addresses");
DOM.useBip38 = $(".use-bip38");
DOM.bip38Password = $(".bip38-password");
DOM.addresses = $(".addresses");
DOM.csvTab = $("#csv-tab a");
DOM.csv = $(".csv");
@@ -111,6 +116,7 @@
function init() {
// Events
DOM.generatedStrength.on("change", generatedStrengthChanged);
DOM.network.on("change", networkChanged);
DOM.bip32Client.on("change", bip32ClientChanged);
DOM.useEntropy.on("change", setEntropyVisibility);
@@ -133,6 +139,8 @@
DOM.bip141semantics.on("change", tabChanged);
DOM.tab.on("shown.bs.tab", tabChanged);
DOM.hardenedAddresses.on("change", calcForDerivationPath);
DOM.useBip38.on("change", calcForDerivationPath);
DOM.bip38Password.on("change", calcForDerivationPath);
DOM.indexToggle.on("click", toggleIndexes);
DOM.addressToggle.on("click", toggleAddresses);
DOM.publicKeyToggle.on("click", togglePublicKeys);
@@ -150,6 +158,16 @@
// Event handlers
function generatedStrengthChanged() {
var strength = parseInt(DOM.generatedStrength.val());
if (strength < 12) {
DOM.generatedStrengthWarning.removeClass("hidden");
}
else {
DOM.generatedStrengthWarning.addClass("hidden");
}
}
function networkChanged(e) {
clearDerivedKeys();
clearAddressesList();
@@ -723,7 +741,8 @@
DOM.extendedPubKey.val(extendedPubKey);
// Display the addresses and privkeys
clearAddressesList();
displayAddresses(0, 20);
var initialAddressCount = parseInt(DOM.rowsToAdd.val());
displayAddresses(0, initialAddressCount);
}
function displayAddresses(start, total) {
@@ -766,6 +785,8 @@
var self = this;
this.shouldGenerate = true;
var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
var useBip38 = DOM.useBip38.prop("checked");
var bip38password = DOM.bip38Password.val();
var isSegwit = segwitSelected();
var segwitAvailable = networkHasSegwit();
var isP2wpkh = p2wpkhSelected();
@@ -780,6 +801,7 @@
if (!self.shouldGenerate) {
return;
}
// derive HDkey for this row of the table
var key = "NA";
if (useHardenedAddresses) {
key = bip32ExtendedKey.deriveHardened(index);
@@ -787,19 +809,36 @@
else {
key = bip32ExtendedKey.derive(index);
}
var address = key.getAddress().toString();
var privkey = "NA";
if (!key.isNeutered()) {
privkey = key.keyPair.toWIF(network);
// bip38 requires uncompressed keys
// see https://github.com/iancoleman/bip39/issues/140#issuecomment-352164035
var keyPair = key.keyPair;
var useUncompressed = useBip38;
if (useUncompressed) {
keyPair = new bitcoinjs.bitcoin.ECPair(keyPair.d, null, { compressed: false });
}
var pubkey = key.getPublicKeyBuffer().toString('hex');
// get address
var address = keyPair.getAddress().toString();
// get privkey
var hasPrivkey = !key.isNeutered();
var privkey = "NA";
if (hasPrivkey) {
privkey = keyPair.toWIF(network);
// BIP38 encode private key if required
if (useBip38) {
privkey = bitcoinjsBip38.encrypt(keyPair.d.toBuffer(), false, bip38password, function(p) {
console.log("Progressed " + p.percent.toFixed(1) + "% for index " + index);
});
}
}
// get pubkey
var pubkey = keyPair.getPublicKeyBuffer().toString('hex');
var indexText = getDerivationPath() + "/" + index;
if (useHardenedAddresses) {
indexText = indexText + "'";
}
// Ethereum values are different
if (networks[DOM.network.val()].name == "ETH - Ethereum") {
var privKeyBuffer = key.keyPair.d.toBuffer();
var privKeyBuffer = keyPair.d.toBuffer(32);
privkey = privKeyBuffer.toString('hex');
var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
var hexAddress = addressBuffer.toString('hex');
@@ -1116,7 +1155,7 @@
function wordArrayToPhrase(words) {
var phrase = words.join(" ");
var language = getLanguageFromPhrase(phrase);
if (language == "japanese") {
if (language == "japanese" || language == "korean") {
phrase = words.join("\u3000");
}
return phrase;
@@ -1152,6 +1191,17 @@
mnemonicLength = parseInt(mnemonicLength);
var numberOfBits = 32 * mnemonicLength / 3;
bits = bits.substring(0, numberOfBits);
// show warning for weak entropy override
if (mnemonicLength / 3 * 32 > entropy.binaryStr.length) {
DOM.entropyWeakEntropyOverrideWarning.removeClass("hidden");
}
else {
DOM.entropyWeakEntropyOverrideWarning.addClass("hidden");
}
}
else {
// hide warning for weak entropy override
DOM.entropyWeakEntropyOverrideWarning.addClass("hidden");
}
// Discard trailing entropy
var bitsToUse = Math.floor(bits.length / 32) * 32;
@@ -1170,6 +1220,8 @@
DOM.phrase.val(phrase);
// Show the word indexes
showWordIndexes();
// Show the checksum
showChecksum();
}
function clearEntropyFeedback() {
@@ -1200,13 +1252,14 @@
var entropyTypeStr = getEntropyTypeStr(entropy);
var wordCount = Math.floor(numberOfBits / 32) * 3;
var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
var spacedBinaryStr = addSpacesEveryElevenBits(entropy.binaryStr);
DOM.entropyFiltered.html(entropy.cleanHtml);
DOM.entropyType.text(entropyTypeStr);
DOM.entropyCrackTime.text(timeToCrack);
DOM.entropyEventCount.text(entropy.base.ints.length);
DOM.entropyBits.text(numberOfBits);
DOM.entropyWordCount.text(wordCount);
DOM.entropyBinary.text(entropy.binaryStr);
DOM.entropyBinary.text(spacedBinaryStr);
DOM.entropyBitsPerEvent.text(bitsPerEvent);
// detect and warn of filtering
var rawNoSpaces = DOM.entropy.val().replace(/\s/g, "");
@@ -1431,6 +1484,35 @@
DOM.entropyWordIndexes.text(wordIndexesStr);
}
function showChecksum() {
var phrase = DOM.phrase.val();
var words = phraseToWordArray(phrase);
var checksumBitlength = words.length / 3;
var checksum = "";
var binaryStr = "";
var language = getLanguage();
for (var i=words.length-1; i>=0; i--) {
var word = words[i];
var wordIndex = WORDLISTS[language].indexOf(word);
var wordBinary = wordIndex.toString(2);
while (wordBinary.length < 11) {
wordBinary = "0" + wordBinary;
}
var binaryStr = wordBinary + binaryStr;
if (binaryStr.length >= checksumBitlength) {
var start = binaryStr.length - checksumBitlength;
var end = binaryStr.length;
checksum = binaryStr.substring(start, end);
// add spaces so the last group is 11 bits, not the first
checksum = checksum.split("").reverse().join("")
checksum = addSpacesEveryElevenBits(checksum);
checksum = checksum.split("").reverse().join("")
break;
}
}
DOM.entropyChecksum.text(checksum);
}
function updateCsv() {
var tableCsv = "path,address,public key,private key\n";
var rows = DOM.addresses.find("tr");
@@ -1451,7 +1533,51 @@
DOM.csv.val(tableCsv);
}
function addSpacesEveryElevenBits(binaryStr) {
return binaryStr.match(/.{1,11}/g).join(" ");
}
var networks = [
{
name: "AC - Asiacoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.asiacoin;
setHdCoin(51);
},
},
{
name: "ACC - Adcoin",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.adcoin;
setHdCoin(161);
},
},
{
name: "AUR - Auroracoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.auroracoin;
setHdCoin(85);
},
},
{
name: "AXE - Axe",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.axe;
setHdCoin(0);
},
},
{
name: "BCA - Bitcoin Atom",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.atom;
setHdCoin(185);
},
},
{
name: "BCH - Bitcoin Cash",
segwitAvailable: false,
@@ -1461,6 +1587,54 @@
setHdCoin(145);
},
},
{
name: "BEET - Beetlecoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.beetlecoin;
setHdCoin(800);
},
},
{
name: "BELA - Belacoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.belacoin;
setHdCoin(73);
},
},
{
name: "BLK - BlackCoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.blackcoin;
setHdCoin(10);
},
},
{
name: "BRIT - Britcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.britcoin;
setHdCoin(70);
},
},
{
name: "BSD - Bitsend",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.bitsend;
setHdCoin(91);
},
},
{
name: "BTA - Bata",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.bata;
setHdCoin(89);
},
},
{
name: "BTC - Bitcoin",
segwitAvailable: true,
@@ -1482,7 +1656,31 @@
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.bgold;
setHdCoin(0);
setHdCoin(156);
},
},
{
name: "BTX - Bitcore",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.bitcore;
setHdCoin(160);
},
},
{
name: "CCN - Cannacoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.cannacoin;
setHdCoin(19);
},
},
{
name: "CDN - Canadaecoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.canadaecoin;
setHdCoin(34);
},
},
{
@@ -1493,6 +1691,30 @@
setHdCoin(23);
},
},
{
name: "CLUB - Clubcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.clubcoin;
setHdCoin(79);
},
},
{
name: "CMP - Compcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.compcoin;
setHdCoin(71);
},
},
{
name: "CRAVE - Crave",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.crave;
setHdCoin(186);
},
},
{
name: "CRW - Crown",
segwitAvailable: false,
@@ -1517,6 +1739,46 @@
setHdCoin(1);
},
},
{
name: "DFC - Defcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.defcoin;
setHdCoin(1337);
},
},
{
name: "DGB - Digibyte",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.digibyte;
setHdCoin(20);
},
},
{
name: "DGC - Digitalcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.digitalcoin;
setHdCoin(18);
},
},
{
name: "DMD - Diamond",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.diamond;
setHdCoin(152);
},
},
{
name: "DNR - Denarius",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.denarius;
setHdCoin(116);
},
},
{
name: "DOGE - Dogecoin",
segwitAvailable: false,
@@ -1525,6 +1787,46 @@
setHdCoin(3);
},
},
{
name: "ECN - Ecoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.ecoin;
setHdCoin(115);
},
},
{
name: "EDRC - Edrcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.edrcoin;
setHdCoin(56);
},
},
{
name: "EFL - Egulden",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.egulden;
setHdCoin(78);
},
},
{
name: "EMC2 - Einsteinium",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.einsteinium;
setHdCoin(41);
},
},
{
name: "ERC - Europecoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.europecoin;
setHdCoin(151);
},
},
{
name: "ETH - Ethereum",
segwitAvailable: false,
@@ -1534,13 +1836,45 @@
},
},
{
name: "FJC - Fujicoin",
name: "EXCL - Exclusivecoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.exclusivecoin;
setHdCoin(190);
},
},
{
name: "FJC - Fujicoin",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.fujicoin;
setHdCoin(75);
},
},
{
name: "FLASH - Flashcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.flashcoin;
setHdCoin(120);
},
},
{
name: "FRST - Firstcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.firstcoin;
setHdCoin(167);
},
},
{
name: "FTC - Feathercoin",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.feathercoin;
setHdCoin(8);
},
},
{
name: "GAME - GameCredits",
segwitAvailable: false,
@@ -1549,6 +1883,62 @@
setHdCoin(101);
},
},
{
name: "GBX - Gobyte",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.gobyte;
setHdCoin(176);
},
},
{
name: "GCR - GCRCoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.gcr;
setHdCoin(79);
},
},
{
name: "GRC - Gridcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.gridcoin;
setHdCoin(84);
},
},
{
name: "HNC - Helleniccoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.helleniccoin;
setHdCoin(168);
},
},
{
name: "INSN - Insane",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.insane;
setHdCoin(68);
},
},
{
name: "IOP - Iop",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.iop;
setHdCoin(66);
},
},
{
name: "IXC - Ixcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.ixcoin;
setHdCoin(86);
},
},
{
name: "JBS - Jumbucks",
segwitAvailable: false,
@@ -1565,6 +1955,38 @@
setHdCoin(141);
},
},
{
name: "LBC - Library Credits",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.lbry;
setHdCoin(140);
},
},
{
name: "LCC - Litecoincash",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.litecoincash;
setHdCoin(192);
},
},
{
name: "LDCN - Landcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.landcoin;
setHdCoin(63);
},
},
{
name: "LINX - Linx",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.linx;
setHdCoin(114);
},
},
{
name: "LTC - Litecoin",
segwitAvailable: true,
@@ -1574,6 +1996,14 @@
DOM.litecoinLtubContainer.removeClass("hidden");
},
},
{
name: "LYNX - Lynx",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.lynx;
setHdCoin(191);
},
},
{
name: "MAZA - Maza",
segwitAvailable: false,
@@ -1582,6 +2012,14 @@
setHdCoin(13);
},
},
{
name: "MNX - Minexcoin",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.minexcoin;
setHdCoin(182);
},
},
{
name: "MONA - Monacoin",
segwitAvailable: true,
@@ -1590,6 +2028,38 @@
setHdCoin(22);
},
},
{
name: "NAV - Navcoin",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.navcoin;
setHdCoin(130);
},
},
{
name: "NEBL - Neblio",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.neblio;
setHdCoin(146);
},
},
{
name: "NEOS - Neoscoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.neoscoin;
setHdCoin(25);
},
},
{
name: "NLG - Gulden",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.gulden;
setHdCoin(87);
},
},
{
name: "NMC - Namecoin",
segwitAvailable: false,
@@ -1598,6 +2068,54 @@
setHdCoin(7);
},
},
{
name: "NRO - Neurocoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.neurocoin;
setHdCoin(110);
},
},
{
name: "NSR - Nushares",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.nushares;
setHdCoin(11);
},
},
{
name: "NYC - Newyorkc",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.newyorkc;
setHdCoin(179);
},
},
{
name: "NVC - Novacoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.novacoin;
setHdCoin(50);
},
},
{
name: "OK - Okcash",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.okcash;
setHdCoin(69);
},
},
{
name: "OMNI - Omnicore",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.omnicore;
setHdCoin(200);
},
},
{
name: "ONX - Onixcoin",
segwitAvailable: false,
@@ -1606,6 +2124,14 @@
setHdCoin(174);
},
},
{
name: "PINK - Pinkcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.pinkcoin;
setHdCoin(117);
},
},
{
name: "PIVX - PIVX",
segwitAvailable: false,
@@ -1622,6 +2148,22 @@
setHdCoin(1);
},
},
{
name: "POSW - POSWcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.poswcoin;
setHdCoin(47);
},
},
{
name: "POT - Potcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.potcoin;
setHdCoin(81);
},
},
{
name: "PPC - Peercoin",
segwitAvailable: false,
@@ -1630,6 +2172,46 @@
setHdCoin(6);
},
},
{
name: "PSB - Pesobit",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.pesobit;
setHdCoin(62);
},
},
{
name: "PUT - Putincoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.putincoin;
setHdCoin(122);
},
},
{
name: "RBY - Rubycoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.rubycoin;
setHdCoin(16);
},
},
{
name: "RDD - Reddcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.reddoin;
setHdCoin(4);
},
},
{
name: "RVR - RevolutionVR",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.revolutionvr;
setHdCoin(129);
},
},
{
name: "SDC - ShadowCash",
segwitAvailable: false,
@@ -1662,6 +2244,62 @@
setHdCoin(111);
},
},
{
name: "SLR - Solarcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.solarcoin;
setHdCoin(58);
},
},
{
name: "SMLY - Smileycoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.smileycoin;
setHdCoin(59);
},
},
{
name: "STRAT - Stratis",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.stratis;
setHdCoin(105);
},
},
{
name: "SYS - Syscoin",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.syscoin;
setHdCoin(57);
},
},
{
name: "THC - Hempcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.hempcoin;
setHdCoin(113);
},
},
{
name: "TOA - Toa",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.toa;
setHdCoin(159);
},
},
{
name: "USC - Ultimatesecurecash",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.ultimatesecurecash;
setHdCoin(112);
},
},
{
name: "USNBT - NuBits",
segwitAvailable: false,
@@ -1670,6 +2308,22 @@
setHdCoin(12);
},
},
{
name: "UNO - Unobtanium",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.unobtanium;
setHdCoin(92);
},
},
{
name: "VASH - Vpncoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.vpncoin;
setHdCoin(33);
},
},
{
name: "VIA - Viacoin",
segwitAvailable: false,
@@ -1686,6 +2340,38 @@
setHdCoin(1);
},
},
{
name: "VIVO - Vivo",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.vivo;
setHdCoin(166);
},
},
{
name: "VTC - Vertcoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.vertcoin;
setHdCoin(28);
},
},
{
name: "WC - Wincoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.wincoin;
setHdCoin(181);
},
},
{
name: "XBC - Bitcoinplus",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.bitcoinplus;
setHdCoin(65);
},
},
{
name: "XMY - Myriadcoin",
segwitAvailable: false,
@@ -1701,7 +2387,39 @@
network = bitcoinjs.bitcoin.networks.bitcoin;
setHdCoin(144);
},
}
},
{
name: "XVC - Vcash",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.vcash;
setHdCoin(127);
},
},
{
name: "XVG - Verge",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.verge;
setHdCoin(77);
},
},
{
name: "XWC - Whitecoin",
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.whitecoin;
setHdCoin(155);
},
},
{
name: "XZC - Zcoin",
segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.zcoin;
setHdCoin(136);
},
},
]
var clients = [

View File

@@ -149,21 +149,14 @@ var Mnemonic = function(language) {
// Set space correctly depending on the language
// see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
var space = " ";
if (language == "japanese") {
if (language == "japanese" || language == "korean") {
space = "\u3000"; // ideographic space
}
return words.join(space);
}
self.normalizeString = function(str) {
if (typeof str.normalize == "function") {
return str.normalize("NFKD");
}
else {
// TODO decide how to handle this in the future.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
return str;
}
return str.normalize("NFKD");
}
function byteArrayToWordArray(data) {

View File

@@ -15,6 +15,19 @@ bitcoinjs.bitcoin.networks.bitcoin.p2wpkh = {
wif: 0x80
};
bitcoinjs.bitcoin.networks.testnet.p2wpkh = {
baseNetwork: "testnet",
messagePrefix: '\x18Bitcoin Signed Message:\n',
bech32: 'tb',
bip32: {
public: 0x045f1cf6,
private: 0x045f18bc
},
pubKeyHash: 0x6f,
scriptHash: 0xc4,
wif: 0xef
};
// p2wpkh in p2sh
bitcoinjs.bitcoin.networks.bitcoin.p2wpkhInP2sh = {
@@ -55,4 +68,30 @@ bitcoinjs.bitcoin.networks.litecoin.p2wpkhInP2sh = {
wif: 0xb0
};
bitcoinjs.bitcoin.networks.fujicoin.p2wpkh = {
baseNetwork: "fujicoin",
messagePrefix: '\x19FujiCoin Signed Message:\n',
bech32: 'fc',
bip32: {
public: 0x04b24746,
private: 0x04b2430c
},
pubKeyHash: 0x24,
scriptHash: 0x10,
wif: 0xa4
};
bitcoinjs.bitcoin.networks.fujicoin.p2wpkhInP2sh = {
baseNetwork: "fujicoin",
messagePrefix: '\x19FujiCoin Signed Message:\n',
bech32: 'fc',
bip32: {
public: 0x049d7cb2,
private: 0x049d7878
},
pubKeyHash: 0x24,
scriptHash: 0x10,
wif: 0xa4
};
})();

View File

@@ -1,3 +1,6 @@
// Polyfill for NFKD normalization
// See https://github.com/walling/unorm
(function (root) {
"use strict";

2051
src/js/wordlist_korean.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -30,9 +30,10 @@ var until = webdriver.until;
var newDriver = null;
var driver = null;
// Delays in ms
var generateDelay = 1000;
var generateDelay = 1500;
var feedbackDelay = 500;
var entropyFeedbackDelay = 500;
var bip38delay = 15000;
// url uses file:// scheme
var path = require('path')
@@ -422,6 +423,13 @@ it('Allows selection of dogecoin', function(done) {
};
testNetwork(done, params);
});
it('Allows selection of denarius', function(done) {
var params = {
selectText: "DNR - Denarius",
firstAddress: "DFdFMVUMzU9xX88EywXvAGwjiwpxyh9vKb",
};
testNetwork(done, params);
});
it('Allows selection of shadowcash', function(done) {
var params = {
selectText: "SDC - ShadowCash",
@@ -594,7 +602,7 @@ it('Allows selection of nubits', function(done) {
it('Allows selection of bitcoin gold', function(done) {
var params = {
selectText: "BTG - Bitcoin Gold",
firstAddress: "GWYxuwSqANWGV3WT7Gpr6HE91euYXBqtwQ",
firstAddress: "GdDqug4WUsn5syNbSTHatNn4XnuwZtzedx",
};
testNetwork(done, params);
});
@@ -605,6 +613,553 @@ it('Allows selection of monacoin', function(done) {
};
testNetwork(done, params);
});
it('Allows selection of AXE', function(done) {
var params = {
selectText: "AXE - Axe",
firstAddress: "XQ4HLxUVS3egk5ff1o9e2vJFJKSSsUH3B7",
};
testNetwork(done, params);
});
it('Allows selection of BlackCoin', function(done) {
var params = {
selectText: "BLK - BlackCoin",
firstAddress: "B5MznAKwj7uQ42vDz3w4onhBXPcqhTwJ9z",
};
testNetwork(done, params);
});
it('Allows selection of Neblio', function(done) {
var params = {
selectText: "NEBL - Neblio",
firstAddress: "NefkeEEvhusbHMmTRrxx7H9wFnUXd8qQsE",
};
testNetwork(done, params);
});
it('Allows selection of Beetlecoin', function(done) {
var params = {
selectText: "BEET - Beetlecoin",
firstAddress: "BVmtbEsGrjpknprmpHFq26z4kYHJUFHE71",
};
testNetwork(done, params);
});
it('Allows selection of Adcoin', function(done) {
var params = {
selectText: "ACC - Adcoin",
firstAddress: "AcEDM6V5sF4kFHC76MJjjfProtS5Sw2qcd",
};
testNetwork(done, params);
});
it('Allows selection of Asiacoin', function(done) {
var params = {
selectText: "AC - Asiacoin",
firstAddress: "ALupuEEz7kJjQTAvmtcBMBVuEjPa7GqZzE",
};
testNetwork(done, params);
});
it('Allows selection of Auroracoin', function(done) {
var params = {
selectText: "AUR - Auroracoin",
firstAddress: "ANuraS6F4Jpi413FEnavjYkKYJJRHkgYCm",
};
testNetwork(done, params);
});
it('Allows selection of Bata', function(done) {
var params = {
selectText: "BTA - Bata",
firstAddress: "BGxBdNeYPtF3GCuTtZBPQdFxCkdBYSF3fj",
};
testNetwork(done, params);
});
it('Allows selection of Belacoin', function(done) {
var params = {
selectText: "BELA - Belacoin",
firstAddress: "BEeetqpNffdzeknSpNmQp5KAFh2KK1Qx7S",
};
testNetwork(done, params);
});
it('Allows selection of Bitcoin Atom', function(done) {
var params = {
selectText: "BCA - Bitcoin Atom",
firstAddress: "AMy6qMbJeC4zsGRL6iWszmeCdQH65fgfih",
};
testNetwork(done, params);
});
it('Allows selection of Bitcoinplus', function(done) {
var params = {
selectText: "XBC - Bitcoinplus",
firstAddress: "B7FSynZoDbEwTCSgsXq9nJ5ue8owYLVL8r",
};
testNetwork(done, params);
});
it('Allows selection of Bitcore', function(done) {
var params = {
selectText: "BTX - Bitcore",
firstAddress: "1Dg18EtqhReS11e9h8khkLjWGLHVjPM2AB",
};
testNetwork(done, params);
});
it('Allows selection of Bitsend', function(done) {
var params = {
selectText: "BSD - Bitsend",
firstAddress: "iBPk7LYjDun3EPk7CRR8UUmnPoceVc1bp2",
};
testNetwork(done, params);
});
it('Allows selection of Britcoin', function(done) {
var params = {
selectText: "BRIT - Britcoin",
firstAddress: "B6Aue4J2XLs1f1dtD4H1SHYFfh4XrmEbrw",
};
testNetwork(done, params);
});
it('Allows selection of Canadaecoin', function(done) {
var params = {
selectText: "CDN - Canadaecoin",
firstAddress: "CanAyCfd5Rj2CQVfaoAmvDUZunPM5W1AEQ",
};
testNetwork(done, params);
});
it('Allows selection of Cannacoin', function(done) {
var params = {
selectText: "CCN - Cannacoin",
firstAddress: "CYjW8xWB43g6krLJTmmrPk1PonoQX7h9Qd",
};
testNetwork(done, params);
});
it('Allows selection of Clubcoin', function(done) {
var params = {
selectText: "CLUB - Clubcoin",
firstAddress: "CHMDEXN4sihpSVX4GyAa2hZ62shnby7uyN",
};
testNetwork(done, params);
});
it('Allows selection of Compcoin', function(done) {
var params = {
selectText: "CMP - Compcoin",
firstAddress: "CLshtw3zhxkseBJS46UF12v3AFy9Dx7JVv",
};
testNetwork(done, params);
});
it('Allows selection of Crave', function(done) {
var params = {
selectText: "CRAVE - Crave",
firstAddress: "VCYJeti6uKMNBFKCL7eP96UwuFWYHM7c85",
};
testNetwork(done, params);
});
it('Allows selection of Defcoin', function(done) {
var params = {
selectText: "DFC - Defcoin",
firstAddress: "D8swcgyaaFUrXZU3ATwbgy16buCpWqbG1M",
};
testNetwork(done, params);
});
it('Allows selection of Diamond', function(done) {
var params = {
selectText: "DMD - Diamond",
firstAddress: "dJnrVbLL9UPjdaVRz2C8VpqHZknqAqjLek",
};
testNetwork(done, params);
});
it('Allows selection of Digibyte', function(done) {
var params = {
selectText: "DGB - Digibyte",
firstAddress: "D85Rp9jwLtMdmP6wGjTiqHBdVQLST3YCEq",
};
testNetwork(done, params);
});
it('Allows selection of Digitalcoin', function(done) {
var params = {
selectText: "DGC - Digitalcoin",
firstAddress: "DKw4UGKEAZWweDNEbBFNQx4EM8x1mpUdia",
};
testNetwork(done, params);
});
it('Allows selection of Ecoin', function(done) {
var params = {
selectText: "ECN - Ecoin",
firstAddress: "e6WFPLG5gcXyF7cESFteH1hE2XSmowW5yB",
};
testNetwork(done, params);
});
it('Allows selection of Edrcoin', function(done) {
var params = {
selectText: "EDRC - Edrcoin",
firstAddress: "eh1nUJsvgKPFv6ebMBfcwJ299GMCpjeZUG",
};
testNetwork(done, params);
});
it('Allows selection of Egulden', function(done) {
var params = {
selectText: "EFL - Egulden",
firstAddress: "Lg66yt55R7edRM58cDhKzXik2kFme3viX7",
};
testNetwork(done, params);
});
it('Allows selection of Einsteinium', function(done) {
var params = {
selectText: "EMC2 - Einsteinium",
firstAddress: "EVAABm9hXKHk2MpVMbwNakRubFnNha5m8m",
};
testNetwork(done, params);
});
it('Allows selection of Europecoin', function(done) {
var params = {
selectText: "ERC - Europecoin",
firstAddress: "ESA2YwPYntAoaPrE8Fm5qkKRtkcwLcwD6R",
};
testNetwork(done, params);
});
it('Allows selection of Exclusivecoin', function(done) {
var params = {
selectText: "EXCL - Exclusivecoin",
firstAddress: "EbUa6m8UZW6nTxsYZD2FsDjkadKbp5M6JT",
};
testNetwork(done, params);
});
it('Allows selection of Feathercoin', function(done) {
var params = {
selectText: "FTC - Feathercoin",
firstAddress: "6gDdjAMoSgQaW8UhqK3oboHs6ftGAroKkM",
};
testNetwork(done, params);
});
it('Allows selection of Firstcoin', function(done) {
var params = {
selectText: "FRST - Firstcoin",
firstAddress: "FJN9GzfMm7Q8R4DJwK1H9F6A1GTghvFiMJ",
};
testNetwork(done, params);
});
it('Allows selection of Flashcoin', function(done) {
var params = {
selectText: "FLASH - Flashcoin",
firstAddress: "UWfpf5LfMmLxZYooEb2EyvWhZ8NG7EZDRt",
};
testNetwork(done, params);
});
it('Allows selection of GCRCoin', function(done) {
var params = {
selectText: "GCR - GCRCoin",
firstAddress: "GJjF5cLwyXLacpuvXAVksxGxKvHDjx58d6",
};
testNetwork(done, params);
});
it('Allows selection of Gobyte', function(done) {
var params = {
selectText: "GBX - Gobyte",
firstAddress: "GS813Ys2brkmvSUw1rUqGPm2HqQVDHJRyA",
};
testNetwork(done, params);
});
it('Allows selection of Gridcoin', function(done) {
var params = {
selectText: "GRC - Gridcoin",
firstAddress: "SGrWbBPvobgqKRF8td1Kdc9vbRY7MJ78Y9",
};
testNetwork(done, params);
});
it('Allows selection of Gulden', function(done) {
var params = {
selectText: "NLG - Gulden",
firstAddress: "GcDP7cNEc33MPPdTFNJ8pZc6VMZJ2CbKxY",
};
testNetwork(done, params);
});
it('Allows selection of Helleniccoin', function(done) {
var params = {
selectText: "HNC - Helleniccoin",
firstAddress: "LbHEKe5H72zp9G1fuWNiiNePTUfJb88915",
};
testNetwork(done, params);
});
it('Allows selection of Hempcoin', function(done) {
var params = {
selectText: "THC - Hempcoin",
firstAddress: "H8sdWbZyJV4gyXyHtLXDaNnAuUDhK5mfTV",
};
testNetwork(done, params);
});
it('Allows selection of Insane', function(done) {
var params = {
selectText: "INSN - Insane",
firstAddress: "iMPqEJMiXWuxC9U2NVinCCMr4t72h58EWx",
};
testNetwork(done, params);
});
it('Allows selection of Iop', function(done) {
var params = {
selectText: "IOP - Iop",
firstAddress: "pGKQmcaPf95Ur5o6oHK4qdiZ52p1yaTvq1",
};
testNetwork(done, params);
});
it('Allows selection of Ixcoin', function(done) {
var params = {
selectText: "IXC - Ixcoin",
firstAddress: "xgE9bTZ6YypT3E6ByzkTt31Hq68E9BqywH",
};
testNetwork(done, params);
});
it('Allows selection of Landcoin', function(done) {
var params = {
selectText: "LDCN - Landcoin",
firstAddress: "LLvLwNjG1aJcn1RS4W4GJUbv8fNaRATG7c",
};
testNetwork(done, params);
});
it('Allows selection of Library Credits', function(done) {
var params = {
selectText: "LBC - Library Credits",
firstAddress: "bQJEQrHDJyHdqycB32uysh1SWn8Ln8LMdg",
};
testNetwork(done, params);
});
it('Allows selection of Linx', function(done) {
var params = {
selectText: "LINX - Linx",
firstAddress: "XGWQ3cb3LGUB3VnHmj6xYSMgnokNbf6dyk",
};
testNetwork(done, params);
});
it('Allows selection of Litecoincash', function(done) {
var params = {
selectText: "LCC - Litecoincash",
firstAddress: "Ce5n7fjUuQPLutJ4W5nCCfQLKdKLE1mv9A",
};
testNetwork(done, params);
});
it('Allows selection of Lynx', function(done) {
var params = {
selectText: "LYNX - Lynx",
firstAddress: "KUeY3ZdZkg96p4W98pj1JjygCFU1XqWdw3",
};
testNetwork(done, params);
});
it('Allows selection of Minexcoin', function(done) {
var params = {
selectText: "MNX - Minexcoin",
firstAddress: "XC1VnyJVfiMDwWgFtAHDp41cgY3AHk3dJT",
};
testNetwork(done, params);
});
it('Allows selection of Navcoin', function(done) {
var params = {
selectText: "NAV - Navcoin",
firstAddress: "NTQVTPK3NWSQLKoffkiQw99T8PifkF1Y2U",
};
testNetwork(done, params);
});
it('Allows selection of Neoscoin', function(done) {
var params = {
selectText: "NEOS - Neoscoin",
firstAddress: "NgATz6QbQNXvayHQ4CpZayugb9HeaPDdby",
};
testNetwork(done, params);
});
it('Allows selection of Neurocoin', function(done) {
var params = {
selectText: "NRO - Neurocoin",
firstAddress: "NVdYErQ3mFpDuF5DquW9WMiT7sLc8ufFTn",
};
testNetwork(done, params);
});
it('Allows selection of Newyorkc', function(done) {
var params = {
selectText: "NYC - Newyorkc",
firstAddress: "RSVMfyH1fKfy3puADJEhut2vfkRyon6imm",
};
testNetwork(done, params);
});
it('Allows selection of Novacoin', function(done) {
var params = {
selectText: "NVC - Novacoin",
firstAddress: "4JRvUmxcKCJmaMXZyvRoSS1cmG2XvnZfHN",
};
testNetwork(done, params);
});
it('Allows selection of Nushares', function(done) {
var params = {
selectText: "NSR - Nushares",
firstAddress: "SecjXzU3c7EecdT7EbC4vvmbdtBBokWh6J",
};
testNetwork(done, params);
});
it('Allows selection of Okcash', function(done) {
var params = {
selectText: "OK - Okcash",
firstAddress: "PV4Qp1TUYuGv4TqVtLZtqvrsWWRycfx1Yi",
};
testNetwork(done, params);
});
it('Allows selection of Omnicore', function(done) {
var params = {
selectText: "OMNI - Omnicore",
firstAddress: "1Q1t3gonjCT3rW38TsTsCvgSc3hh7zBGbi",
};
testNetwork(done, params);
});
it('Allows selection of Pesobit', function(done) {
var params = {
selectText: "PSB - Pesobit",
firstAddress: "PDePsF7ALyXP7JaywokdYiRTDtKa14MAr1",
};
testNetwork(done, params);
});
it('Allows selection of Pinkcoin', function(done) {
var params = {
selectText: "PINK - Pinkcoin",
firstAddress: "2TgjYQffjbzUHJghNaVbdsjHbRwruC3yzC",
};
testNetwork(done, params);
});
it('Allows selection of POSWcoin', function(done) {
var params = {
selectText: "POSW - POSWcoin",
firstAddress: "PNxewmZoPnGBvoEbH6hgQZCK1igDiBCdgC",
};
testNetwork(done, params);
});
it('Allows selection of Potcoin', function(done) {
var params = {
selectText: "POT - Potcoin",
firstAddress: "PEo7Vg2ctXgpP4vuLPeY9aGJtZotyrmiHc",
};
testNetwork(done, params);
});
it('Allows selection of Putincoin', function(done) {
var params = {
selectText: "PUT - Putincoin",
firstAddress: "PViWnfr2uFtovd6e7joM49C94CsGSnqJis",
};
testNetwork(done, params);
});
it('Allows selection of Reddcoin', function(done) {
var params = {
selectText: "RDD - Reddcoin",
firstAddress: "1M4druAcUfkXBaAcQ4cCgCLPHChiaib6kL",
};
testNetwork(done, params);
});
it('Allows selection of RevolutionVR', function(done) {
var params = {
selectText: "RVR - RevolutionVR",
firstAddress: "VXeeoP2jkzZnMFxtc66ZBZK1NHN5QJnnjL",
};
testNetwork(done, params);
});
it('Allows selection of Rubycoin', function(done) {
var params = {
selectText: "RBY - Rubycoin",
firstAddress: "RV76JDtjTs11JdMDRToYn6CHecMRPLnKS6",
};
testNetwork(done, params);
});
it('Allows selection of Smileycoin', function(done) {
var params = {
selectText: "SMLY - Smileycoin",
firstAddress: "BEZVnEBCAyFByrgKpwAgYgtvP4rKAd9Sj2",
};
testNetwork(done, params);
});
it('Allows selection of Solarcoin', function(done) {
var params = {
selectText: "SLR - Solarcoin",
firstAddress: "8LZ13HbnjtaMJWSvvVFNTLf71zFfDrhwLu",
};
testNetwork(done, params);
});
it('Allows selection of Stratis', function(done) {
var params = {
selectText: "STRAT - Stratis",
firstAddress: "ScfJnq3QDhKgDMEds6sqUE1ot6ShfhmXXq",
};
testNetwork(done, params);
});
it('Allows selection of Syscoin', function(done) {
var params = {
selectText: "SYS - Syscoin",
firstAddress: "SZwJi42Pst3VAMomyK5DG4157WM5ofRmSj",
};
testNetwork(done, params);
});
it('Allows selection of Toa', function(done) {
var params = {
selectText: "TOA - Toa",
firstAddress: "TSe1QAnUwQzUfbBusDzRJ9URttrRGKoNKF",
};
testNetwork(done, params);
});
it('Allows selection of Ultimatesecurecash', function(done) {
var params = {
selectText: "USC - Ultimatesecurecash",
firstAddress: "UPyLAZU2Che5fiy7Ed8xVJFmXAUhitA4ug",
};
testNetwork(done, params);
});
it('Allows selection of Unobtanium', function(done) {
var params = {
selectText: "UNO - Unobtanium",
firstAddress: "uUBMPVMXrR6qhqornJqKTWgr8L69vihSL9",
};
testNetwork(done, params);
});
it('Allows selection of Vcash', function(done) {
var params = {
selectText: "XVC - Vcash",
firstAddress: "VuL53MSY6KjvAjKSeRkh3NDnKykacDVeps",
};
testNetwork(done, params);
});
it('Allows selection of Verge', function(done) {
var params = {
selectText: "XVG - Verge",
firstAddress: "DCrVuGkMjLJpTGgwAgv9AcMdeb1nkWbjZA",
};
testNetwork(done, params);
});
it('Allows selection of Vertcoin', function(done) {
var params = {
selectText: "VTC - Vertcoin",
firstAddress: "Vf6koGuiWdXQfx8tNqxoNeEDxh4xh5cxsG",
};
testNetwork(done, params);
});
it('Allows selection of Vivo', function(done) {
var params = {
selectText: "VIVO - Vivo",
firstAddress: "VFmBwuXXGhJe7MarQG2GfzHMFebRHgfSpB",
};
testNetwork(done, params);
});
it('Allows selection of Vpncoin', function(done) {
var params = {
selectText: "VASH - Vpncoin",
firstAddress: "VoEmH1qXC4TsSgBAStR21QYetwnFqbqCx9",
};
testNetwork(done, params);
});
it('Allows selection of Whitecoin', function(done) {
var params = {
selectText: "XWC - Whitecoin",
firstAddress: "WcSwCAUqrSgeSYbsaS3SSWWhsx8KRYTFDR",
};
testNetwork(done, params);
});
it('Allows selection of Wincoin', function(done) {
var params = {
selectText: "WC - Wincoin",
firstAddress: "WaDVCESMGgyKgNESdn3u43NnwmGSkZED3Z",
};
testNetwork(done, params);
});
it('Allows selection of Zcoin', function(done) {
var params = {
selectText: "XZC - Zcoin",
firstAddress: "a6VcMdP4XgAA9Tr7xNszmPG5FZpfRf17Cq",
};
testNetwork(done, params);
});
// BIP39 seed is set from phrase
it('Sets the bip39 seed from the prhase', function(done) {
@@ -933,13 +1488,13 @@ it('Can generate more rows in the table', function(done) {
// A custom number of additional addresses can be generated
it('Can generate more rows in the table', function(done) {
driver.findElement(By.css('.rows-to-add'))
.clear();
driver.findElement(By.css('.rows-to-add'))
.sendKeys('1');
driver.findElement(By.css('.phrase'))
.sendKeys('abandon abandon ability');
driver.sleep(generateDelay).then(function() {
driver.findElement(By.css('.rows-to-add'))
.clear();
driver.findElement(By.css('.rows-to-add'))
.sendKeys('1');
driver.findElement(By.css('.more'))
.click();
driver.sleep(generateDelay).then(function() {
@@ -2159,10 +2714,11 @@ it('Can change details while old addresses are still being generated', function(
driver.findElement(By.css('.phrase'))
.sendKeys("abandon abandon ability");
driver.sleep(generateDelay).then(function() {
// generate more addresses
driver.findElement(By.css('.more'))
.click();
// change tabs which should cancel the previous generating
driver.findElement(By.css('.rows-to-add'))
.clear();
driver.findElement(By.css('.rows-to-add'))
.sendKeys('20');
driver.findElement(By.css('#bip32-tab a'))
.click()
driver.sleep(generateDelay).then(function() {
@@ -2175,7 +2731,7 @@ it('Can change details while old addresses are still being generated', function(
});
});
});
});
}, generateDelay + 5000);
// Github issue 49
// padding for binary should give length with multiple of 256
@@ -2850,4 +3406,160 @@ it('Can display the table as csv', function(done) {
});
});
it('LeftPads ethereum keys that are less than 32 bytes', function(done) {
// see https://github.com/iancoleman/bip39/issues/155
selectNetwork("ETH - Ethereum");
driver.findElement(By.css('#bip32-tab a'))
.click()
driver.findElement(By.css('#bip32-path'))
.clear();
driver.findElement(By.css('#bip32-path'))
.sendKeys("m/44'/60'/0'");
driver.findElement(By.css('.phrase'))
.sendKeys('scout sort custom elite radar rare vivid thing trophy gesture cover snake change narrow kite list nation sustain buffalo erode open balance system young');
driver.sleep(generateDelay).then(function() {
getFirstAddress(function(address) {
expect(address).toBe("0x8943E785B4a5714FC87a3aFAad1eB1FeB602B118");
done();
});
});
});
it('Can encrypt private keys using BIP38', function(done) {
// see https://github.com/iancoleman/bip39/issues/140
driver.executeScript(function() {
$(".use-bip38").prop("checked", true);
});
driver.findElement(By.css('.bip38-password'))
.sendKeys('bip38password');
driver.findElement(By.css('.rows-to-add'))
.clear();
driver.findElement(By.css('.rows-to-add'))
.sendKeys('1');
driver.findElement(By.css('.phrase'))
.sendKeys('abandon abandon ability');
driver.sleep(bip38delay).then(function() {
// address
getFirstRowValue(function(address) {
expect(address).toBe("1NCvSdumA3ngMM9c4aqU56AM6rqXddfuXB");
// pubkey
getFirstRowValue(function(pubkey) {
expect(pubkey).toBe("043f5aed5f6cfbafaf223188095b5980814897295f723815fea5d3f4b648d0d0b3884a74447ea901729b1e73a999b7520e7cb55b4120e6432c64153ccab8a848e1");
// privkey
getFirstRowValue(function(privkey) {
expect(privkey).toBe("6PRNRiFnj1RoR3sXhymdCvoZCgnUHQpfupNdKkFbWJkwWQEKesWt1EDMDM");
done();
}, ".privkey");
}, ".pubkey");
}, ".address");
});
}, bip38delay + 5000);
it('Shows the checksum for the entropy', function(done) {
driver.findElement(By.css('.use-entropy'))
.click();
driver.findElement(By.css('.entropy'))
.sendKeys("00000000000000000000000000000000");
driver.sleep(generateDelay).then(function() {
driver.findElement(By.css('.checksum'))
.getText()
.then(function(text) {
expect(text).toBe("1");
done();
});
});
});
it('Shows the checksum for the entropy with the correct groupings', function(done) {
driver.findElement(By.css('.use-entropy'))
.click();
// create a checksum of 20 bits, which spans multiple words
driver.findElement(By.css('.entropy'))
.sendKeys("F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
driver.sleep(generateDelay).then(function() {
driver.findElement(By.css('.checksum'))
.getText()
.then(function(text) {
// first group is 9 bits, second group is 11
expect(text).toBe("011010111 01110000110");
done();
});
});
});
it('Uses vprv for bitcoin testnet p2wpkh', function(done) {
selectNetwork("BTC - Bitcoin Testnet");
driver.findElement(By.css('#bip84-tab a'))
.click()
driver.findElement(By.css('.phrase'))
.sendKeys('abandon abandon ability');
driver.sleep(generateDelay).then(function() {
driver.findElement(By.css('.root-key'))
.getAttribute("value")
.then(function(path) {
expect(path).toBe("vprv9DMUxX4ShgxML9N2YV5CvWEebWrM9aJ5ULpbRRyzyWu6vs4BzTvbfFFrH41N5hVi7MYSfiugd765L3JmAfDM5po36Y8ouCKRDeYQwByCmS7");
done();
})
});
});
it('Shows a warning if generating weak mnemonics', function(done) {
driver.executeScript(function() {
$(".strength option[selected]").removeAttr("selected");
$(".strength option[value=6]").prop("selected", true);
$(".strength").trigger("change");
});
driver.findElement(By.css(".generate-container .warning"))
.getAttribute("class")
.then(function(classes) {
expect(classes).not.toContain("hidden");
done();
});
});
it('Does not show a warning if generating strong mnemonics', function(done) {
driver.executeScript(function() {
$(".strength option[selected]").removeAttr("selected");
$(".strength option[value=12]").prop("selected", true);
});
driver.findElement(By.css(".generate-container .warning"))
.getAttribute("class")
.then(function(classes) {
expect(classes).toContain("hidden");
done();
});
});
it('Shows a warning if overriding weak entropy with longer mnemonics', function(done) {
driver.findElement(By.css('.use-entropy'))
.click();
driver.findElement(By.css('.entropy'))
.sendKeys("0123456789abcdef"); // 6 words
driver.executeScript(function() {
$(".mnemonic-length").val("12").trigger("change");
});
driver.findElement(By.css(".weak-entropy-override-warning"))
.getAttribute("class")
.then(function(classes) {
expect(classes).not.toContain("hidden");
done();
});
});
it('Does not show a warning if entropy is stronger than mnemonic length', function(done) {
driver.findElement(By.css('.use-entropy'))
.click();
driver.findElement(By.css('.entropy'))
.sendKeys("0123456789abcdef0123456789abcdef0123456789abcdef"); // 18 words
driver.executeScript(function() {
$(".mnemonic-length").val("12").trigger("change");
});
driver.findElement(By.css(".weak-entropy-override-warning"))
.getAttribute("class")
.then(function(classes) {
expect(classes).toContain("hidden");
done();
});
});
});