コード例 #1
0
ファイル: test_xmss.py プロジェクト: jack3343/xrd-core
    def test_hash_function(self):
        xmss_height = 4
        seed = bytearray([i for i in range(48)])
        xmss = XMSS(XmssFast(seed, xmss_height, SHAKE_128))
        self.assertEqual('shake128', xmss.hash_function)

        xmss = XMSS(XmssFast(seed, xmss_height, SHAKE_256))
        self.assertEqual('shake256', xmss.hash_function)

        xmss = XMSS(XmssFast(seed, xmss_height, SHA2_256))
        self.assertEqual('sha2_256', xmss.hash_function)
コード例 #2
0
ファイル: Transaction.py プロジェクト: jack3343/xrd-core
    def validate_or_raise(self, verify_signature=True) -> bool:
        """
        This method will validate a transaction and raise exception if problems are found
        :return: True if the exception is valid, exceptions otherwise
        :rtype: bool
        """
        if not self._validate_custom():
            raise ValueError("Custom validation failed")

        self._coinbase_filter()

        expected_transaction_hash = self.generate_txhash()
        if verify_signature and self.txhash != expected_transaction_hash:
            logger.warning('Invalid Transaction hash')
            logger.warning('Expected Transaction hash %s',
                           bin2hstr(expected_transaction_hash))
            logger.warning('Found Transaction hash %s', bin2hstr(self.txhash))
            raise ValueError("Invalid Transaction Hash")

        if verify_signature:
            # Temporarily disabled following new added lines.
            # TODO: Review Juan
            # if not XMSS.validate_signature(self.signature, self.PK):
            #     raise ValueError("Invalid xmss signature")

            if not XmssFast.verify(self.get_data_hash(), self.signature,
                                   self.PK):
                raise ValueError("Invalid xmss signature")

        return True
コード例 #3
0
ファイル: test_xmss.py プロジェクト: jack3343/xrd-core
    def test_sign_verify(self):
        message = "This is a test"
        message_bin = str2bin(message)

        xmss_height = 10
        seed = bytearray([i for i in range(48)])
        xmss = XMSS(XmssFast(seed, xmss_height))

        pk = xmss.pk

        xmss.set_ots_index(1)

        for i in range(10):
            self.assertTrue(xmss.ots_index == i + 1)
            signature = xmss.sign(message_bin)
            self.assertTrue(XmssFast.verify(message_bin, signature, pk))
コード例 #4
0
ファイル: test_xmss.py プロジェクト: jack3343/xrd-core
    def test_PK(self):
        xmss_height = 10
        seed = bytearray([i for i in range(48)])
        xmss = XMSS(XmssFast(seed, xmss_height))

        pk = xmss.pk
        self.assertEqual('010500ffc6e502e2a8244aed6a8cd67531e79f95baa638615ba789c194a1d15d7eb'
                         '77e4e3983bd564298c49ae2e7fa6e28d4b954d8cd59398f1225b08d6144854aee0e', bin2hstr(pk))
コード例 #5
0
ファイル: xmss.py プロジェクト: jack3343/xrd-core
    def from_extended_seed(extended_seed: bytes):
        if len(extended_seed) != 51:
            raise Exception('Extended seed should be 51 bytes long')

        descr = xrdDescriptor.fromBytes(extended_seed[0:3])
        if descr.getSignatureType() != pyxrdlib.XMSS:
            raise Exception('Signature type nor supported')

        height = descr.getHeight()
        hash_function = descr.getHashFunction()
        tmp = XmssFast(extended_seed[3:], height, hash_function)
        return XMSS(tmp)
コード例 #6
0
ファイル: helper.py プロジェクト: jack3343/xrd-core
def get_slave_xmss() -> XMSS:
    xmss_height = 6
    seed = bytes([i + 10 for i in range(48)])
    return XMSS(XmssFast(seed, xmss_height))
コード例 #7
0
ファイル: helper.py プロジェクト: jack3343/xrd-core
def get_bob_xmss(xmss_height=6) -> XMSS:
    seed = bytes([i + 5 for i in range(48)])
    return XMSS(XmssFast(seed, xmss_height))
コード例 #8
0
ファイル: helper.py プロジェクト: jack3343/xrd-core
def get_some_address(idx=0) -> bytes:
    seed = bytearray([i for i in range(48)])
    seed[0] = idx
    xmss = XMSS(XmssFast(seed, 4))
    return xmss.address
コード例 #9
0
ファイル: xmss.py プロジェクト: jack3343/xrd-core
    def from_height(tree_height: int, hash_function="shake128"):
        if hash_function not in hash_functions:
            raise Exception("XMSS does not support this hash function!")

        seed = getRandomSeed(48, '')
        return XMSS(XmssFast(seed, tree_height, hash_functions[hash_function]))
コード例 #10
0
ファイル: test_xmss.py プロジェクト: jack3343/xrd-core
 def test_signature_type(self):
     xmss_height = 4
     seed = bytearray([i for i in range(48)])
     xmss = XMSS(XmssFast(seed, xmss_height))
     self.assertEqual(0, xmss.signature_type)