def setUp(self):
        super(PrepareMultisigTransferCommandTestCase, self).setUp()

        self.adapter = MockAdapter()
        self.command = PrepareMultisigTransferCommand(self.adapter)

        # Define some tryte sequences that we can reuse between tests.
        self.digest_1 =\
          Digest(
            trytes =
              b'FWNEPVJNGUKTSHSBDO9AORBCVWWLVXC9KAMKYYNKPYNJDKSAUURI9ELKOEEYPKVTYP'
              b'CKOCJQESYFEMINIFKX9PDDGRBEEHYYXCJW9LHGWFZGHKCPVDBGMGQKIPCNKNITGMZT'
              b'DIWVUB9PCHCOPHMIWKSUKRHZOJPMAY',

            key_index = 0,
          )

        self.digest_2 =\
          Digest(
            trytes =
              b'PAIRLDJQY9XAUSKIGCTHRJHZVARBEY9NNHYJ9UI9HWWZXFSDWEZEGDCWNVVYSYDV9O'
              b'HTR9NGGZURISWTNECFTCMEWQQFJ9VKLFPDTYJYXC99OLGRH9OSFJLMEOGHFDHZYEAF'
              b'IMIZTJRBQUVCR9U9ZWTMUXTUEOUBLC',

            key_index = 0,
          )

        self.trytes_1 = (b'TESTVALUE9DONTUSEINPRODUCTION99999IIPEM9'
                         b'LA9FLHEGHDACSA9DOBQHQCX9BBHCFDIIMACARHA9B')

        self.trytes_2 = (b'TESTVALUE9DONTUSEINPRODUCTION99999BGUDVE'
                         b'DGH9WFQDEDVETCOGEGCDI9RFHGFGXBI99EJICHNEM')

        self.trytes_3 = (b'TESTVALUE9DONTUSEINPRODUCTION99999XBGEUC'
                         b'LF9EIFXHM9KHQANBLBHFVGTEGBWHNAKFDGZHYGCHI')
Example #2
0
    def setUp(self):
        super(MultisigAddressBuilderTestCase, self).setUp()

        # Define some tryte sequences that we can reuse between tests.
        self.digest_1 =\
          Digest(
            trytes =
              b'FWNEPVJNGUKTSHSBDO9AORBCVWWLVXC9KAMKYYNKPYNJDKSAUURI9ELKOEEYPKVTYP'
              b'CKOCJQESYFEMINIFKX9PDDGRBEEHYYXCJW9LHGWFZGHKCPVDBGMGQKIPCNKNITGMZT'
              b'DIWVUB9PCHCOPHMIWKSUKRHZOJPMAY',

            key_index = 0,
          )

        self.digest_2 =\
          Digest(
            trytes =
              b'PAIRLDJQY9XAUSKIGCTHRJHZVARBEY9NNHYJ9UI9HWWZXFSDWEZEGDCWNVVYSYDV9O'
              b'HTR9NGGZURISWTNECFTCMEWQQFJ9VKLFPDTYJYXC99OLGRH9OSFJLMEOGHFDHZYEAF'
              b'IMIZTJRBQUVCR9U9ZWTMUXTUEOUBLC',

            key_index = 0,
          )

        self.digest_3 =\
          Digest(
            trytes =
              b'KBNYOFY9HJSPBDBFSTIEMYJAAMNOXLVXBDUKJRBUGAPIIZNDARXEWDZRBCIYFQCBID'
              b'HXIQFIDFPNGIFN9DDXQUGYZGDML9ZIELDSVICFUOPWEPCUWEDUFKXKSOZKTSHIMEIR'
              b'HOXKPJFRWWCNYPXR9RI9SMBFSDQFWM',

            key_index = 0,
          )
  def setUp(self):
    super(CreateMultisigAddressCommandTestCase, self).setUp()

    self.adapter = MockAdapter()
    self.command = CreateMultisigAddressCommand(self.adapter)

    # Define some tryte sequences that we can reuse between tests.
    self.digest_1 =\
      Digest(
        trytes =
          b'FWNEPVJNGUKTSHSBDO9AORBCVWWLVXC9KAMKYYNKPYNJDKSAUURI9ELKOEEYPKVTYP'
          b'CKOCJQESYFEMINIFKX9PDDGRBEEHYYXCJW9LHGWFZGHKCPVDBGMGQKIPCNKNITGMZT'
          b'DIWVUB9PCHCOPHMIWKSUKRHZOJPMAY',

        key_index = 0,
      )

    self.digest_2 =\
      Digest(
        trytes =
          b'PAIRLDJQY9XAUSKIGCTHRJHZVARBEY9NNHYJ9UI9HWWZXFSDWEZEGDCWNVVYSYDV9O'
          b'HTR9NGGZURISWTNECFTCMEWQQFJ9VKLFPDTYJYXC99OLGRH9OSFJLMEOGHFDHZYEAF'
          b'IMIZTJRBQUVCR9U9ZWTMUXTUEOUBLC',

        key_index = 0,
      )
Example #4
0
    def test_init_error_too_short(self):
        """
    A digest's length must be a multiple of :py:attr:`Hash.LEN` trytes.
    """
        with self.assertRaises(ValueError):
            Digest(b'9' * (Hash.LEN - 1))

        with self.assertRaises(ValueError):
            Digest(b'9' * (2 * Hash.LEN - 1))
Example #5
0
    def setUp(self):
        super(GetDigestsCommandTestCase, self).setUp()

        self.adapter = MockAdapter()
        self.command = GetDigestsCommand(self.adapter)

        # Define some tryte sequences that we can reuse between tests.
        self.key1 = PrivateKey(TryteString(b'KEYONE', pad=FRAGMENT_LENGTH), 0)
        self.key2 = PrivateKey(TryteString(b'KEYTWO', pad=FRAGMENT_LENGTH), 1)

        self.digest1 = Digest(TryteString(b'DIGESTONE', pad=Hash.LEN), 0)
        self.digest2 = Digest(TryteString(b'DIGESTTWO', pad=Hash.LEN), 1)
Example #6
0
    def _mock_get_digest(key_iterator):
        # type: (KeyIterator) -> Digest
        """
    Mocks the behavior of :py:class:`KeyGenerator`, to speed up unit
    tests.

    Note that :py:class:`KeyGenerator` has its own test case, so we're
    not impacting the stability of the codebase by doing this.
    """
        # noinspection SpellCheckingInspection
        digests = [
            b'KDWISSPKPF9DZNKMYEVPPYI9CXMFZRAAKCQNMFJI'
            b'JIQLT9IPMEVVNYBTIBTN9CBCJMYTUMSRJAEMUUMIA',
            b'XUWRYOZQYEVM9CRZZPZQRTAHBMLM9EYMZZIYRFV9'
            b'GZST9XGK9LWUDGIXCCRFLWHUJPYQ9MMYDZEMAJZOI',
            b'SEJHPHEF9NXPPZQUOVGZNUZSP9DQOBRVSAGADUAD'
            b'EPRDFQJPXTOJGFPEXUPRQUYTTSD9GVPXTWWZQSGXA',
            b'LNXDEKQCP9OXMBNDUJCZIMVRVGJLKFVMMRPHROSH'
            b'XCWW9M9QGYVUMPXCR9ANPEPVGBI9WOERTFDAGKCVZ',
        ]

        key_index = key_iterator.current

        # Simulate generating the key.
        key_iterator.current += key_iterator.step

        # This should still behave like the real thing, so that we can
        # verify that :py:class`AddressGenerator` is invoking the key
        # generator correctly.
        return Digest(digests[key_index], key_index)
Example #7
0
    def setUp(self):
        super(ProposedMultisigBundleTestCase, self).setUp()

        self.bundle = ProposedMultisigBundle()
        print_var_type_n_val(var001=self.bundle,
                             pointer="#234fcvredfrZER")  #234fcvredfrZER
        # Value:
        # # <iota.multisig.transaction.ProposedMultisigBundle object at 0x0000027BCD717FD0>

        # Type: iota.multisig.transaction.ProposedMultisigBundle
        # Define some tryte sequences that we can reuse between tests.
        self.digest_1 =\
          Digest(
            trytes =
              b'FWNEPVJNGUKTSHSBDO9AORBCVWWLVXC9KAMKYYNKPYNJDKSAUURI9ELKOEEYPKVTYP'
              b'CKOCJQESYFEMINIFKX9PDDGRBEEHYYXCJW9LHGWFZGHKCPVDBGMGQKIPCNKNITGMZT'
              b'DIWVUB9PCHCOPHMIWKSUKRHZOJPMAY',

            key_index = 0,
          )

        self.digest_2 =\
          Digest(
            trytes =
              b'PAIRLDJQY9XAUSKIGCTHRJHZVARBEY9NNHYJ9UI9HWWZXFSDWEZEGDCWNVVYSYDV9O'
              b'HTR9NGGZURISWTNECFTCMEWQQFJ9VKLFPDTYJYXC99OLGRH9OSFJLMEOGHFDHZYEAF'
              b'IMIZTJRBQUVCR9U9ZWTMUXTUEOUBLC',

            key_index = 0,
          )

        self.trytes_1 = (b'TESTVALUE9DONTUSEINPRODUCTION99999IIPEM9'
                         b'LA9FLHEGHDACSA9DOBQHQCX9BBHCFDIIMACARHA9B')

        print_var_type_n_val(var001=self.trytes_1,
                             pointer="#Z456gXCVBjtrTY844")  #Z456gXCVBjtrTY844
        # Value: b'TESTVALUE9DONTUSEINPRODUCTION99999IIPEM9LA9FLHEGHDACSA9DOBQHQCX9BBHCFDIIMACARHA9B'
        # Type: <class 'bytes'>

        self.trytes_2 = (b'TESTVALUE9DONTUSEINPRODUCTION99999BGUDVE'
                         b'DGH9WFQDEDVETCOGEGCDI9RFHGFGXBI99EJICHNEM')

        self.trytes_3 = (b'TESTVALUE9DONTUSEINPRODUCTION99999XBGEUC'
                         b'LF9EIFXHM9KHQANBLBHFVGTEGBWHNAKFDGZHYGCHI')
Example #8
0
    def address_from_digest(digest: Digest) -> Address:
        """
        Generates an address from a private key digest.
        """
        address_trits: List[int] = [0] * (Address.LEN * TRITS_PER_TRYTE)

        sponge = Kerl()
        sponge.absorb(digest.as_trits())
        sponge.squeeze(address_trits)

        return Address.from_trits(
            trits=address_trits,
            key_index=digest.key_index,
            security_level=digest.security_level,
        )
Example #9
0
    def test_address_from_digest(self):
        """
    Generating an address from a private key digest.
    """
        digest =\
          Digest(
            trytes =
              b'ABQXVJNER9MPMXMBPNMFBMDGTXRWSYHNZKGAGUOI'
              b'JKOJGZVGHCUXXGFZEMMGDSGWDCKJXO9ILLFAKGGZE',

            key_index = 0,
          )

        self.assertEqual(
            AddressGenerator.address_from_digest(digest),
            Address(b'QLOEDSBXXOLLUJYLEGKEPYDRIJJTPIMEPKMFHUVJ'
                    b'MPMLYYCLPQPANEVDSERQWPVNHCAXYRLAYMBHJLWWR'),
        )
Example #10
0
    def add_digest(self, digest: Digest) -> None:
        """
        Absorbs a digest into the sponge.

        .. important::
            Keep track of the order that digests are added!

            To spend inputs from a multisig address, you must provide
            the private keys in the same order!

        References:

        - https://github.com/iotaledger/wiki/blob/master/multisigs.md#spending-inputs
        """
        if self._address:
            raise ValueError(
                'Cannot add digests once an address is extracted.')

        self._sponge.absorb(digest.as_trits())
        self._digests.append(digest)
Example #11
0
 def test_random(self):
     """
 Generating a random Digest should fail.
 """
     with self.assertRaises(TypeError):
         random_digest = Digest.random()