]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - libs/combined/index.js
Add ZooBC address format
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / libs / combined / index.js
index 46f46811a5400d210ca67d7cced8544a4c4ef17d..d3bc7a59d034d3c68991aedc369d215569f06cab 100644 (file)
@@ -1,66 +1,80 @@
 /* base-x */
 
-let basex = require('base-x')
+module.exports.basex = require('base-x')
+
+/* base32 */
+
+module.exports.base32 = require('base32.js')
 
 /* bchaddrjs */
 
-let bchaddr = require('bchaddrjs')
+module.exports.bchaddr = require('bchaddrjs')
 
 /* bchaddrjs slp */
 
-let bchaddrSlp = require('bchaddrjs-slp')
+module.exports.bchaddrSlp = require('bchaddrjs-slp')
 
 /* biginteger */
 
-let BigInteger = require('javascript-biginteger')
+module.exports.BigInteger = require('javascript-biginteger')
 
 /* bitcoinjs-bip38 */
 
-let bip38 = require('bip38')
+module.exports.bip38 = require('bip38')
+
+/* bip85 */
+
+module.exports.bip85 = require('bip85')
 
 /* bitcoinjs-lib */
 
-let bitcoin = require('bitcoinjs-lib')
+module.exports.bitcoin = require('bitcoinjs-lib')
 
 /* buffer */
 
-let buffer = require('buffer');
+module.exports.buffer = require('buffer');
 
 /* elastos */
 // See https://github.com/iancoleman/bip39/pull/368
 // and https://github.com/johnnynanjiang/Elastos.SDK.Keypair.Javascript/tree/iancoleman-bip39
 
-let elastosjs = require('elastos-wallet-js')
+module.exports.elastosjs = require('elastos-wallet-js')
 
 /* ethereum-util */
 
-let ethUtil = require('ethereumjs-util')
+module.exports.ethUtil = require('ethereumjs-util')
 
 /* fast-levenshtein */
 
-let levenshtein = require('fast-levenshtein')
+module.exports.levenshtein = require('fast-levenshtein')
 
 /* groestlcoin */
 
-let groestlcoinjs = require('groestlcoinjs-lib')
+module.exports.groestlcoinjs = require('groestlcoinjs-lib')
 
 /* groestlcoin bip38 */
 
-let groestlcoinjsBip38 = require('bip38grs')
+module.exports.groestlcoinjsBip38 = require('bip38grs')
 
 /* kjua qr codes */
 
-let kjua = require('kjua')
+module.exports.kjua = require('kjua')
 
 /* nebulas */
 
-let nebulas = require('nebulas')
+try {
+module.exports.nebulas = require('nebulas')
+}
+catch (e) {
+    console.warn("Error loading nebulas library");
+    console.warn(e);
+};
 
 /* stellar-util */
 
 let StellarBase = require('stellar-base');
 let edHd = require('ed25519-hd-key');
-let stellarUtil = {
+module.exports.stellarUtil = {
     getKeypair: function (path, seed) {
         const result = edHd.derivePath(path, seed);
         return StellarBase.Keypair.fromRawEd25519Seed(result.key);
@@ -74,32 +88,78 @@ let stellarUtil = {
     },
 }
 
+/* zoobc-util */
+
+let base32 = require('base32.js');
+let nbl = require('nebulas');
+module.exports.zoobcUtil = {
+    getKeypair: function (path, seed) {
+        const { key, chainCode}  = edHd.derivePath(path, seed);
+        const pubKey = edHd.getPublicKey(key);
+        return {key,chainCode, pubKey};
+    },
+    getZBCAddress(publicKey, prefix = "ZBC") {
+        const prefixDefault = ["ZBC", "ZNK", "ZBL", "ZTX"];
+        const valid = prefixDefault.indexOf(prefix) > -1;
+        if (valid) {
+          var bytes = new Uint8Array(35);
+          for (let i = 0; i < 32; i++) bytes[i] = publicKey[i];
+          for (let i = 0; i < 3; i++) bytes[i + 32] = prefix.charCodeAt(i);
+          const checksum = nbl.CryptoUtils.sha3(bytes);
+          for (let i = 0; i < 3; i++) bytes[i + 32] = Number(checksum[i]);
+          var segs = [prefix];
+          var b32 = base32.encode(bytes);
+          for (let i = 0; i < 7; i++) segs.push(b32.substr(i * 8, 8));
+          return segs.join("_");
+        } else {
+          throw new Error("The Prefix not available!");
+        }
+      }
+}
+
+/* nano-util */
+
+let NanoBase = require('nanocurrency-web');
+module.exports.nanoUtil = {
+    getKeypair: function (index, seed) {
+        const accounts = NanoBase.wallet.accounts(seed, index, index)
+        return {privKey: accounts[0].privateKey, pubKey: accounts[0].publicKey, address: accounts[0].address};
+    },
+    dummyNetwork: {
+        bip32: {public: 0, private: 0},
+        messagePrefix: '',
+        pubKeyHash: 0,
+        scriptHash: 0,
+        wif: 0,
+    },
+}
+
 /* unorm */
 
-let unorm = require('unorm')
+module.exports.unorm = require('unorm')
 
 /* zxcvbn */
 
-let zxcvbn = require('zxcvbn')
-
-/* exports */
-
-module.exports = {
-  basex,
-  bchaddr,
-  bchaddrSlp,
-  buffer,
-  BigInteger,
-  bip38,
-  bitcoin,
-  elastosjs,
-  ethUtil,
-  groestlcoinjs,
-  groestlcoinjsBip38,
-  kjua,
-  levenshtein,
-  nebulas,
-  stellarUtil,
-  unorm,
-  zxcvbn
+module.exports.zxcvbn = require('zxcvbn')
+
+/* handshake */
+module.exports.handshake = require('handshake-util')
+
+/* bs58 */
+try {
+    module.exports.bs58 = require('bs58')
+}
+catch (e) {
+    console.warn("Error loading bs58 library");
+    console.warn(e);
+};
+
+/* create-hash */
+try {
+    module.exports.createHash = require('create-hash')
 }
+catch (e) {
+    console.warn("Error loading create-hash library");
+    console.warn(e);
+};
+