]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/commitdiff
Merge pull request #422 from cryply/master
authoriancoleman <1281387+iancoleman@users.noreply.github.com>
Sun, 10 May 2020 23:16:11 +0000 (09:16 +1000)
committerGitHub <noreply@github.com>
Sun, 10 May 2020 23:16:11 +0000 (09:16 +1000)
adding CRP support

1  2 
src/js/bitcoinjs-extensions.js
src/js/index.js

index e67996c2496f823c77d4be243f988d816dd4a5d7,37678c292635723dce5f64431c1441c6b22c2cd6..7cd480cde745387d597d9cb9536898a533fc065f
@@@ -581,6 -581,17 +581,17 @@@ libs.bitcoin.networks.cannacoin = 
    wif: 0x9c,
  };
  
+ libs.bitcoin.networks.cranepay = {
+   messagePrefix: '\x18Bitcoin Signed Message:\n',
+   bip32: {
+     public: 0x0488b21e,
+     private: 0x0488ade4
+   },
+   pubKeyHash: 28,
+   scriptHash: 10,
+   wif: 123,
+ };
  libs.bitcoin.networks.cryptoescudo = {
    messagePrefix: '\x18Cryptoescudo Signed Message:\n',
    bip32: {
@@@ -1175,31 -1186,6 +1186,31 @@@ libs.bitcoin.networks.revolutionvr = 
    wif: 0xc6,
  };
  
 +libs.bitcoin.networks.rsk = {
 +  messagePrefix: '\x18RSK Signed Message:\n',
 +  bip32: {
 +    public: 0x0488b21e,
 +    private: 0x0488ade4
 +  },
 +  // TODO defaulting to Bitcoin value, check this
 +  pubKeyHash: 0x00,
 +  // TODO defaulting to Bitcoin value, check this
 +  scriptHash: 0x05,
 +  // TODO defaulting to Bitcoin value, check this
 +  wif: 0x80
 +};
 +
 +libs.bitcoin.networks.rsktestnet = {
 +  messagePrefix: '\x18RSK Testnet Signed Message:\n',
 +  bip32: {
 +    public: 0x043587cf,
 +    private: 0x04358394
 +  },
 +  pubKeyHash: 0x6f,
 +  scriptHash: 0xc4,
 +  wif: 0xef
 +};
 +
  libs.bitcoin.networks.rubycoin = {
    messagePrefix: '\x18Rubycoin Signed Message:\n',
    bip32: {
diff --combined src/js/index.js
index 43c69552d24336e6a906f1bb19382de6bfac1da4,009a32036d94d0ec259d4aa7be78554d45b0772b..3dde602e3858e393943874a20ff40591d036d0dd
                      }
                  }
  
 +                // RSK values are different
 +                if (networkIsRsk()) {
 +                    var pubkeyBuffer = keyPair.getPublicKeyBuffer();
 +                    var ethPubkey = libs.ethUtil.importPublic(pubkeyBuffer);
 +                    var addressBuffer = libs.ethUtil.publicToAddress(ethPubkey);
 +                    var hexAddress = addressBuffer.toString('hex');
 +                    // Use chainId based on selected network
 +                    // Ref: https://developers.rsk.co/rsk/architecture/account-based/#chainid
 +                    var chainId;
 +                    var rskNetworkName = networks[DOM.network.val()].name;
 +                    switch (rskNetworkName) {
 +                        case "R-BTC - RSK":
 +                            chainId = 30;
 +                            break;
 +                        case "tR-BTC - RSK Testnet":
 +                            chainId = 31;
 +                            break;
 +                        default:
 +                            chainId = null;
 +                    }
 +                    var checksumAddress = toChecksumAddressForRsk(hexAddress, chainId);
 +                    address = libs.ethUtil.addHexPrefix(checksumAddress);
 +                    pubkey = libs.ethUtil.addHexPrefix(pubkey);
 +                    if (hasPrivkey) {
 +                        privkey = libs.ethUtil.bufferToHex(keyPair.d.toBuffer());
 +                    }
 +                }
 +
 +                // Handshake values are different
 +                if (networks[DOM.network.val()].name == "HNS - Handshake") {
 +                    var ring = libs.handshake.KeyRing.fromPublic(keyPair.getPublicKeyBuffer())
 +                    address = ring.getAddress().toString();
 +                }
 +
                  // Stellar is different
                  if (networks[DOM.network.val()].name == "XLM - Stellar") {
                      var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
                      privkey = eosUtil.bufferToPrivate(keyPair.d.toBuffer(32));
                  }
  
 +                if (networks[DOM.network.val()].name == "FIO - Foundation for Interwallet Operability") {
 +                    address = ""
 +                    pubkey = FIObufferToPublic(keyPair.getPublicKeyBuffer());
 +                    privkey = FIObufferToPrivate(keyPair.d.toBuffer(32));
 +                }
 +
                  //Groestlcoin Addresses are different
                  if(isGRS()) {
  
                      || (name == "ERE - EtherCore")
      }
  
 +    function networkIsRsk() {
 +        var name = networks[DOM.network.val()].name;
 +        return (name == "R-BTC - RSK")
 +            || (name == "tR-BTC - RSK Testnet");
 +    }
 +
      function networkHasSegwit() {
          var n = network;
          if ("baseNetwork" in network) {
                  setHdCoin(186);
              },
          },
+         {
+             name: "CRP - CranePay",
+             onSelect: function() {
+                 network = libs.bitcoin.networks.cranepay;
+                 setHdCoin(2304);
+             },
+         },
          {
              name: "CRW - Crown (Legacy)",
              onSelect: function() {
                  setHdCoin(40);
              },
          },
 +        {
 +            name: "FIO - Foundation for Interwallet Operability",
 +            onSelect: function() {
 +                network = libs.bitcoin.networks.bitcoin;
 +                setHdCoin(235);
 +            },
 +        },  
          {
              name: "FIX - FIX",
              onSelect: function() {
                  setHdCoin(1);
              },
          },
 +        {
 +            name: "HNS - Handshake",
 +            onSelect: function() {
 +                setHdCoin(5353);
 +            },
 +        },
          {
              name: "HNC - Helleniccoin",
              onSelect: function() {
              },
          },
          {
 -            name: "RBTC - RSK",
 +            name: "R-BTC - RSK",
              onSelect: function() {
 -                network = libs.bitcoin.networks.rubycoin;
 +                network = libs.bitcoin.networks.rsk;
                  setHdCoin(137);
              },
          },
          {
 -            name: "tRBTC - RSK Testnet",
 +            name: "tR-BTC - RSK Testnet",
              onSelect: function() {
 -                network = libs.bitcoin.networks.rubycoin;
 +                network = libs.bitcoin.networks.rsktestnet;
                  setHdCoin(37310);
              },
          },
          }
      ]
  
 +    // RSK - RSK functions - begin
 +    function stripHexPrefix(address) {
 +        if (typeof address !== "string") {
 +            throw new Error("address parameter should be a string.");
 +        }
 +
 +        var hasPrefix = (address.substring(0, 2) === "0x" ||
 +            address.substring(0, 2) === "0X");
 +
 +        return hasPrefix ? address.slice(2) : address;
 +    };
 +
 +    function toChecksumAddressForRsk(address, chainId = null) {
 +        if (typeof address !== "string") {
 +            throw new Error("address parameter should be a string.");
 +        }
 +
 +        if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {
 +            throw new Error("Given address is not a valid RSK address: " + address);
 +        }
 +
 +        var stripAddress = stripHexPrefix(address).toLowerCase();
 +        var prefix = chainId != null ? chainId.toString() + "0x" : "";
 +        var keccakHash = libs.ethUtil.keccak256(prefix + stripAddress)
 +            .toString("hex")
 +            .replace(/^0x/i, "");
 +        var checksumAddress = "0x";
 +
 +        for (var i = 0; i < stripAddress.length; i++) {
 +            checksumAddress +=
 +                parseInt(keccakHash[i], 16) >= 8 ?
 +                stripAddress[i].toUpperCase() :
 +                stripAddress[i];
 +        }
 +
 +        return checksumAddress;
 +    }
 +
 +    // RSK - RSK functions - end
 +
      // ELA - Elastos functions - begin
      function displayBip44InfoForELA() {
          if (!isELA()) {