Ejemplo n.º 1
0
    def test_method_has_keys(self):
        """Case when a dictionary data in a keystore file have all of keys correctly. """
        target_data = {
            'address': 'hxfd7e4560ba363f5aabd32caac7317feeee70ea57',
            'crypto': {
                'cipher': 'aes-128-ctr',
                'cipherparams': {
                    'iv': '952dc6c2e7d4ed5df45f4ddeac817dfb'
                },
                'ciphertext': 'c5482f14fcdae4848b74be65593452efe11c106fac2fe82801cb7735d5fa9b55',
                'kdf': 'pbkdf2',
                'kdfparams': {
                    'c': 262144,
                    'dklen': 32,
                    'prf': 'hmac-sha256',
                    'salt': '65fa9a3d6e8991a01f883990b0b0ca91'
                },
                'mac': '380e8daf36daff0e02949e4a40c0c8263890978071f0794581025b8e41e589a4'
            },
            'id': 'dd9fd4f9-3279-42d1-96f1-9ef637ddb6e6',
            'version': 3,
            'coinType': 'icx'
        }

        root_keys = ["version", "id", "address", "crypto", "coinType"]
        crypto_keys = ["ciphertext", "cipherparams", "cipher", "kdf", "kdfparams", "mac"]
        crypto_cipherparams_keys = ["iv"]
        crypto_kdfparams_keys = ["dklen", "salt", "c", "prf"]

        self.assertTrue(has_keys(target_data, root_keys))
        self.assertTrue(has_keys(target_data["crypto"], crypto_keys))
        self.assertTrue(has_keys(target_data["crypto"]["cipherparams"], crypto_cipherparams_keys))
        self.assertTrue(has_keys(target_data["crypto"]["kdfparams"], crypto_kdfparams_keys))
Ejemplo n.º 2
0
 def _is_message_transaction(self, params: dict) -> bool:
     """Checks `MessageTransaction` in dict has right format."""
     inner_key_of_params = ['data_type', 'data']
     return self._is_basic_transaction(params) \
            and has_keys(params, inner_key_of_params) \
            and isinstance(params["data"], str) \
            and is_0x_prefixed(params["data"]) \
            and params["data_type"] == "message"
Ejemplo n.º 3
0
    def _is_deploy_transaction(self, params: dict) -> bool:
        """Checks `DeployTransaction` in dict has right format."""
        inner_key_of_params = [
            'params', 'content_type', 'content', 'data_type'
        ]

        return self._is_basic_transaction(params) \
               and has_keys(params, inner_key_of_params) \
               and params['data_type'] == 'deploy' \
               and isinstance(params['content'], bytes) \
               and not params['value']
Ejemplo n.º 4
0
 def _is_basic_transaction(self, params: dict) -> bool:
     """
     Checks `Transaction` in dict has right format.
     Every types of `Transaction` like icx transaction, deploy transaction, call transaction and message transaction
     is checked by this method.
     """
     inner_key_of_params = [
         'version', 'from_', 'to', 'step_limit', 'timestamp', 'nid',
         'nonce', 'value'
     ]
     return has_keys(params, inner_key_of_params)
Ejemplo n.º 5
0
 def _is_deposit_transaction(self, params: dict) -> bool:
     """Checks `DepositTransaction` in dict has right format."""
     inner_key_of_params = ['action']
     try:
         if params['action'] == 'withdraw':
             inner_key_of_params.append('id')
         return self._is_basic_transaction(params) \
                and has_keys(params, inner_key_of_params) \
                and params["action"] in ('add', 'withdraw') \
                and params['data_type'] == "deposit"
     except KeyError:
         return False
Ejemplo n.º 6
0
 def _is_call_transaction(self, params: dict) -> bool:
     """Checks `CallTransaction` in dict has right format."""
     inner_key_of_params = ['data_type', 'params', 'method']
     return self._is_basic_transaction(params) \
            and has_keys(params, inner_key_of_params) \
            and params["data_type"] == "call"