コード例 #1
0
 def test_bad_encode_size(self):
     """Test that bad sized hashes fail to encode."""
     for bits_size in self.valid_sizes:
         size = bits_size // 8
         # Make size invalid
         size += 1
         # Convert to a valid number of bytes for a hash
         hashbytes = bytes(random.randint(0, 255) for i in range(size))
         with self.assertRaises(ValueError):
             cashaddr.encode_full(BCH_PREFIX, cashaddr.PUBKEY_TYPE,
                                  hashbytes)
コード例 #2
0
 def test_encode_bad_inputs(self):
     with self.assertRaises(TypeError):
         cashaddr.encode_full(2, cashaddr.PUBKEY_TYPE, bytes(20))
     with self.assertRaises(TypeError):
         cashaddr.encode_full(BCH_PREFIX, cashaddr.PUBKEY_TYPE, '0' * 40)
     with self.assertRaises(ValueError):
         cashaddr.encode_full(BCH_PREFIX, 15, bytes(20))
コード例 #3
0
 def test_encode_decode(self):
     """Test whether valid addresses encode and decode properly, for all
     valid hash sizes.
     """
     for prefix in (BCH_PREFIX, BCH_TESTNET_PREFIX):
         for bits_size in self.valid_sizes:
             size = bits_size // 8
             # Convert to a valid number of bytes for a hash
             hashbytes = bytes(random.randint(0, 255) for i in range(size))
             addr = cashaddr.encode_full(prefix, cashaddr.PUBKEY_TYPE,
                                         hashbytes)
             rprefix, kind, addr_hash = cashaddr.decode(addr)
             self.assertEqual(rprefix, prefix)
             self.assertEqual(kind, cashaddr.PUBKEY_TYPE)
             self.assertEqual(addr_hash, hashbytes)
コード例 #4
0
    def test_bad_decode_checksum(self):
        """Test whether addresses with invalid checksums fail to decode."""
        for bits_size in self.valid_sizes:
            size = bits_size // 8
            # Convert to a valid number of bytes for a hash
            hashbytes = bytes(random.randint(0, 255) for i in range(size))
            addr = cashaddr.encode_full(BCH_PREFIX, cashaddr.PUBKEY_TYPE,
                                        hashbytes)
            addrlist = list(addr)
            # Inject an error
            values = list(cashaddr._CHARSET)
            while True:
                pos = random.randint(0, len(addr) - 1)
                choice = random.choice(values)
                if choice != addrlist[pos] and addrlist[pos] in values:
                    addrlist[pos] = choice
                    break

            mangled_addr = ''.join(addrlist)
            with self.assertRaises(ValueError) as e:
                cashaddr.decode(mangled_addr)
            self.assertTrue('invalid checksum' in e.exception.args[0])