Exemple #1
0
    def test_keypairs(self):
        keypairs = load_ts_fixtures(path_join("keypairs.fixtures.ts"))
        for pair in keypairs:
            key_from_private = crypto.ZilKey(str_private=pair["private"])
            key_from_public = crypto.ZilKey(str_public=pair["public"])

            assert key_from_private.pub_key == key_from_public.pub_key
Exemple #2
0
    def test_zil_mykey(self):
        key = crypto.ZilKey.load_mykey_txt(path_join("mykey.txt"))
        assert key.address == "967e40168af66f441b73c0146e26069bfc3accc7"

        with pytest.raises(AssertionError):
            crypto.ZilKey(
                "02A349FA10F0E6A614A38D6033588A422357F2C60AF2EEBAE15D06498DF8AF0B05",
                "75889EA1AF5D402B69E61C654C74D8B569E363D2E271E1E6E2B63FDB9B635173"
            )

        new_key = crypto.ZilKey(
            "02A349FA10F0E6A614A38D6033588A422357F2C60AF2EEBAE15D06498DF8AF0B05",
            "75889EA1AF5D402B69E61C654C74D8B569E363D2E271E1E6E2B63FDB9B635174")

        assert key == new_key
        assert key != crypto.ZilKey.generate_key_pair()

        pub_key = "0x03949D29723DA4B2628224D3EC8E74C518ACA98C6630B00527F86B8349E982CB57"
        private_key = "05C3CF3387F31202CD0798B7AA882327A1BD365331F90954A58C18F61BD08FFC"
        wallet_address = "95B27EC211F86748DD985E1424B4058E94AA5814"

        new_key = crypto.ZilKey(str_public=pub_key)
        assert new_key.address == wallet_address.lower()

        new_key = crypto.ZilKey(str_private=private_key)
        assert crypto.hex_str_to_int(
            new_key.keypair_str.public) == crypto.hex_str_to_int(pub_key)

        assert new_key.address == wallet_address.lower()
def valid_pub_key(pub_key: str):
    # noinspection PyBroadException
    try:
        key = crypto.ZilKey(str_public=pub_key)
    except:
        return None
    return "0x" + key.keypair_str.public
Exemple #4
0
    def load_keys(file_path):
        keys = []

        if not os.path.isfile(file_path):
            print(f"keys file not found, pls run 'keys gen' first")
            exit(1)

        with open(file_path, "r") as f:
            for line in f.readlines():
                line = line.strip()
                if len(line) <= 0:
                    continue
                parts = line.split(" ")
                if len(parts) < 1:
                    print(f"Invalid Key in {line}")
                    continue
                public = parts[0]
                private = None

                key = crypto.ZilKey(str_public=public, str_private=private)
                keys.append(key)

        print("add nodes")
        for key in keys:
            pub_key, pow_fee, authorized = key.keypair_str.public, 0.0, True
            if not pub_key.startswith("0x"):
                pub_key = "0x" + pub_key
            node = zilnode.ZilNode(pub_key=pub_key,
                                   email="",
                                   pow_fee=pow_fee,
                                   authorized=authorized)
            node = node.save()
            print(f"create node: {node}")
Exemple #5
0
    def verify_signature(pub_key, signature, *parameters):
        if zil_config["verify_sign"] is False:
            return True

        key = crypto.ZilKey(str_public=pub_key)

        msg_to_verify = b""
        for param in parameters:
            if isinstance(param, bytes):
                b_param = param
            elif isinstance(param, str):
                b_param = crypto.hex_str_to_bytes(param)
            elif isinstance(param, bool):
                b_param = b"\x01" if param else b"\x00"
            elif isinstance(param, int):
                b_param = crypto.int_to_bytes(param, n_bytes=8)
            else:
                logging.warning(f"wrong data type")
                return False

            msg_to_verify += b_param

        return key.verify(signature, msg_to_verify)