コード例 #1
0
    def test_wallet_addr(self):
        addr = monero.encode_addr(
            monero.net_version(),
            binascii.unhexlify(
                b"3bec484c5d7f0246af520aab550452b5b6013733feabebd681c4a60d457b7fc1"
            ),
            binascii.unhexlify(
                b"2d5918e31d3c003da3c778592c07b398ad6f961a67082a75fd49394d51e69bbe"
            ),
        )
        self.assertEqual(
            addr,
            b"43tpGG9PKbwCpjRvNLn1jwXPpnacw2uVUcszAtgmDiVcZK4VgHwjJT9BJz1WGF9eMxSYASp8yNMkuLjeQfWqJn3CNWdWfzV",
        )

        w = monero.AccountCreds.new_wallet(
            crypto.b16_to_scalar(
                b"4ce88c168e0f5f8d6524f712d5f8d7d83233b1e7a2a60b5aba5206cc0ea2bc08"
            ),
            crypto.b16_to_scalar(
                b"f2644a3dd97d43e87887e74d1691d52baa0614206ad1b0c239ff4aa3b501750a"
            ),
            network_type=monero.NetworkTypes.TESTNET,
        )
        self.assertEqual(
            w.address,
            b"9vacMKaj8JJV6MnwDzh2oNVdwTLJfTDyNRiB6NzV9TT7fqvzLivH2dB8Tv7VYR3ncn8vCb3KdNMJzQWrPAF1otYJ9cPKpkr",
        )
コード例 #2
0
    async def open_account(self):
        """
        Handles account open / management
        :return:
        """
        self.update_intro()
        self.update_prompt()

        priv_spend_key = None
        priv_view_key = None

        if not self.args.account_file and not self.args.spend_key:
            logger.debug(
                "No account file nor spend key. Please generate new account")
            return

        acc_file_exists = False
        if self.args.account_file:
            acc_file_exists = os.path.exists(self.args.account_file)

            if acc_file_exists and self.args.spend_key:
                logger.error("Account file exists, spend key is ignored")
            if acc_file_exists and self.args.view_key:
                logger.error("Account file exists, view key is ignored")
            if acc_file_exists:
                with open(self.args.account_file) as fh:
                    self.account_data = json.load(fh)
                priv_spend_key = crypto.decodeint(
                    binascii.unhexlify(
                        self.account_data["spend_key"].encode("ascii")))
                priv_view_key = crypto.decodeint(
                    binascii.unhexlify(
                        self.account_data["view_key"].encode("ascii")))

        if not acc_file_exists and self.args.spend_key:
            priv_view = self.args.view_key.encode("utf8")
            priv_spend = self.args.spend_key.encode("utf8")
            priv_view_key = crypto.b16_to_scalar(priv_view)
            priv_spend_key = crypto.b16_to_scalar(priv_spend)

            self.account_data = {
                "spend_key": priv_spend_key,
                "view_key": priv_view_key
            }
            with open(self.args.account_file, "w") as fh:
                json.dump(
                    {
                        "spend_key": priv_spend.decode("ascii"),
                        "view_key": priv_view.decode("ascii"),
                    },
                    fh,
                    indent=2,
                )

        if priv_spend_key and priv_view_key:
            self.init_with_keys(priv_spend_key, priv_view_key)
コード例 #3
0
 def get_creds(self):
     """
     Wallet credentials
     :return:
     """
     return monero.AccountCreds.new_wallet(
         priv_view_key=crypto.b16_to_scalar(
             b"4ce88c168e0f5f8d6524f712d5f8d7d83233b1e7a2a60b5aba5206cc0ea2bc08"
         ),
         priv_spend_key=crypto.b16_to_scalar(
             b"f2644a3dd97d43e87887e74d1691d52baa0614206ad1b0c239ff4aa3b501750a"
         ),
     )
コード例 #4
0
 def get_creds_02(self):
     """
     Wallet 01 credentials
     :return:
     """
     return monero.AccountCreds.new_wallet(
         priv_view_key=crypto.b16_to_scalar(
             b"9e7aba8ae9ee134e5d5464d9145a4db26793d7411af7d06f20e755cb2a5ad50f"
         ),
         priv_spend_key=crypto.b16_to_scalar(
             b"283d8bab1aeaee8f8b5aed982fc894c67d3e03db9006e488321c053f5183310d"
         ),
         network_type=monero.NetworkTypes.TESTNET,
     )
コード例 #5
0
 def get_creds_01(self):
     """
     Wallet 02 credentials
     :return:
     """
     return monero.AccountCreds.new_wallet(
         priv_view_key=crypto.b16_to_scalar(
             b"42ba20adb337e5eca797565be11c9adb0a8bef8c830bccc2df712535d3b8f608"
         ),
         priv_spend_key=crypto.b16_to_scalar(
             b"b0ef6bd527b9b23b9ceef70dc8b4cd1ee83ca14541964e764ad23f5151204f0f"
         ),
         network_type=monero.NetworkTypes.TESTNET,
     )
コード例 #6
0
 def get_creds(self):
     """
     Wallet credentials
     :return:
     """
     return monero.AccountCreds.new_wallet(  # slip0010
         priv_view_key=crypto.b16_to_scalar(
             b"a6ccd4ac344a295d1387f8d18c81bdd394f1845de84188e204514ef9370fd403"
         ),
         priv_spend_key=crypto.b16_to_scalar(
             b"14821d0bc5659b24cafbc889dc4fc60785ee08b65d71c525f81eeaba4f3a570f"
         ),
         network_type=monero.NetworkTypes.TESTNET,
     )
コード例 #7
0
 def get_creds_old2(self):
     """
     Wallet credentials
     :return:
     """
     return monero.AccountCreds.new_wallet(
         priv_view_key=crypto.b16_to_scalar(
             b"6b8a47bdc2bd9923b1684abdbbed56a4e834b101011e4c28585ae1d01281030d"
         ),
         priv_spend_key=crypto.b16_to_scalar(
             b"85148a19717a505fe4fc84219a79c4b4fdc35772ecb03b71385dc6572845d809"
         ),
         network_type=monero.NetworkTypes.TESTNET,
     )
コード例 #8
0
 def test_get_subaddress_secret_key(self):
     a = crypto.b16_to_scalar(
         b"4ce88c168e0f5f8d6524f712d5f8d7d83233b1e7a2a60b5aba5206cc0ea2bc08"
     )
     m = monero.get_subaddress_secret_key(secret_key=a, major=0, minor=1)
     self.assertEqual(
         crypto.encodeint(m),
         binascii.unhexlify(
             b"b6ff4d689b95e3310efbf683850c075bcde46361923054e42ef30016b287ff0c"
         ),
     )
コード例 #9
0
ファイル: agent.py プロジェクト: tsusanka/monero-agent
 async def open_account_passed(self):
     """
     Loads passed credentials
     :return:
     """
     priv_view = self.args.view_key.encode("ascii")
     self.priv_view = crypto.b16_to_scalar(priv_view)
     self.address = self.args.address.encode("ascii")
     self.set_network_type(monero.NetworkTypes.TESTNET if self.args.
                           testnet else monero.NetworkTypes.MAINNET)
     self.wallet_file = self.args.watch_wallet
     self.monero_bin = self.args.monero_bin
     await self.open_with_keys(self.priv_view, self.address)
コード例 #10
0
 def test_get_subaddress_secret_key(self):
     a = crypto.b16_to_scalar(
         b"4ce88c168e0f5f8d6524f712d5f8d7d83233b1e7a2a60b5aba5206cc0ea2bc08"
     )
     m = monero.get_subaddress_secret_key(secret_key=a, major=0, minor=1)
     self.assertEqual(
         crypto.encodeint(m),
         bytes(
             [
                 0xb6,
                 0xff,
                 0x4d,
                 0x68,
                 0x9b,
                 0x95,
                 0xe3,
                 0x31,
                 0x0e,
                 0xfb,
                 0xf6,
                 0x83,
                 0x85,
                 0x0c,
                 0x07,
                 0x5b,
                 0xcd,
                 0xe4,
                 0x63,
                 0x61,
                 0x92,
                 0x30,
                 0x54,
                 0xe4,
                 0x2e,
                 0xf3,
                 0x00,
                 0x16,
                 0xb2,
                 0x87,
                 0xff,
                 0x0c,
             ]
         ),
     )
コード例 #11
0
ファイル: agent.py プロジェクト: tsusanka/monero-agent
    async def open_account_file(self, file):
        """
        Opens account file
        :param file:
        :return:
        """
        with open(file) as fh:
            js = json.load(fh)

        # Wallet key encryption
        self.wallet_password = await self.prompt_password()
        self.wallet_salt = common.defvalkey(js, "wallet_salt")
        if self.wallet_salt is None:
            self.wallet_salt = crypto.random_bytes(32)
        else:
            self.wallet_salt = binascii.unhexlify(self.wallet_salt)

        # Wallet view key dec.
        if "view_key" in js:
            self.priv_view = crypto.b16_to_scalar(
                js["view_key"].encode("utf8"))

        elif "view_key_enc" in js:
            wallet_enc_key = misc.wallet_enc_key(self.wallet_salt,
                                                 self.wallet_password)
            plain = chacha_poly.decrypt_pack(
                wallet_enc_key, binascii.unhexlify(js["view_key_enc"]))
            self.priv_view = crypto.decodeint(plain)

        self.address = js["address"].encode("utf8")
        self.wallet_file = js["wallet_file"]
        self.monero_bin = js["monero_bin"]
        self.set_network_type(js["network_type"])
        self.rpc_addr = js["rpc_addr"]

        await self.open_with_keys(self.priv_view, self.address)