def test___init___invalid_argument(self): # noinspection SpellCheckingInspection test_cases_type = [None, '', '1234567890abcd', 'NonHexaString_!?', 0, 123, [b'']] for test in test_cases_type: with self.assertRaises(TypeError): # noinspection PyTypeChecker Seed(test) # type: ignore test_cases_value = [b'', b'tooShort', b'63bytesLongSoExactlyOneByteShortOfBeingValidSoCloseYetSoFarSAD!', b'soLongItHurtsHurDurBlaBlaButAnywayThisShouldFail123456789101112131415', unhexlify(TREZOR_TEST_VECTORS['english'][0][2]) + b'almost_ok'] for test in test_cases_value: with self.assertRaises(ValueError): Seed(test)
def test__ne__(self): s1 = Seed(self.seed_bytes_a1) self.assertFalse(s1 != s1) self.assertFalse(Seed(self.seed_bytes_a1) != Seed(self.seed_bytes_a1)) self.assertFalse(Seed(self.seed_bytes_a1) != Seed(self.seed_bytes_a2)) self.assertTrue(Seed(self.seed_bytes_a1) != Seed(self.seed_bytes_b)) self.assertTrue(s1 != [1, 2, 3])
def test___eq__(self): s1 = Seed(self.seed_bytes_a1) self.assertTrue(s1 == s1) self.assertTrue(Seed(self.seed_bytes_a1) == Seed(self.seed_bytes_a1)) self.assertTrue(Seed(self.seed_bytes_a1) == Seed(self.seed_bytes_a2)) self.assertFalse(Seed(self.seed_bytes_a1) == Seed(self.seed_bytes_b)) self.assertFalse(s1 == [1, 2, 3])
def test_verify(self): for i in range(self.SUBTEST_COUNT): password = get_random_valid_password() mnemonic_phrase = get_random_valid_mnemonic_phrase() seed_trezor = self.trezor.to_seed(mnemonic_phrase, password) with self.subTest(i=i, mnemonic_phrase=mnemonic_phrase, seed=seed_trezor, password=password): self.assertTrue( verify(Mnemonic(mnemonic_phrase), Seed(seed_trezor), password))
def test___init__(self): for test_vector in TREZOR_TEST_VECTORS['english']: Seed(unhexlify(test_vector[2]))
def test_to_seed(self): for test_vector in TREZOR_TEST_VECTORS['english']: with self.subTest(mnemonic=test_vector[1]): mnemonic = Mnemonic(test_vector[1]) seed_expected = Seed(unhexlify(test_vector[2])) self.assertEqual(seed_expected, mnemonic.to_seed(TREZOR_PASSWORD))
def test_verify(self): for test_vector in TREZOR_TEST_VECTORS['english']: self.assertTrue(verify(Mnemonic(test_vector[1]), Seed(unhexlify(test_vector[2])), TREZOR_PASSWORD))
def test_recover(self): for test_vector in TREZOR_TEST_VECTORS['english']: entropy, seed = recover(Mnemonic(test_vector[1]), TREZOR_PASSWORD) self.assertEqual(Entropy(unhexlify(test_vector[0])), entropy) self.assertEqual(Seed(unhexlify(test_vector[2])), seed)
def test_generate(self): for test_vector in TREZOR_TEST_VECTORS['english']: mnemonic, seed = generate(Entropy(unhexlify(test_vector[0])), TREZOR_PASSWORD) self.assertEqual(Mnemonic(test_vector[1]), mnemonic) self.assertEqual(Seed(unhexlify(test_vector[2])), seed)
"7b4a10be9d98e6cba265566db7f136718e1398c71cb581e1b2f464cac1ceedf4f3e274dc270003c670ad8d02c4558b2f8e39edea2775c9e232c7cb798b069e88", # nopep8 "xprv9s21ZrQH143K4aERa2bq7559eMCCEs2QmmqVjUuzfy5eAeDX4mqZffkYwpzGQRE2YEEeLVRoH4CSHxianrFaVnMN2RYaPUZJhJx8S5j6puX" # nopep8 ], [ "f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f", # nopep8 "void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold", # nopep8 "01f5bced59dec48e362f2c45b5de68b9fd6c92c6634f44d6d40aab69056506f0e35524a518034ddc1192e1dacd32c1ed3eaa3c3b131c88ed8e7e54c49a5d0998", # nopep8 "xprv9s21ZrQH143K39rnQJknpH1WEPFJrzmAqqasiDcVrNuk926oizzJDDQkdiTvNPr2FYDYzWgiMiC63YmfPAa2oPyNB23r2g7d1yiK6WpqaQS" # nopep8 ] ] } VALID_MNEMONIC_PHRASE_TREZOR = TREZOR_TEST_VECTORS['english'][0][1] VALID_MNEMONIC_TREZOR = Mnemonic(TREZOR_TEST_VECTORS['english'][0][1]) VALID_ENTROPY_TREZOR = Entropy(unhexlify(TREZOR_TEST_VECTORS['english'][0][0])) VALID_SEED_TREZOR = Seed(unhexlify(TREZOR_TEST_VECTORS['english'][0][2])) VALID_SEED_HEX_TREZOR = TREZOR_TEST_VECTORS['english'][0][2] VALID_PASSWORD_TREZOR = TREZOR_PASSWORD INVALID_MNEMONIC_PHRASE_INVALID_UTF8 = "mn3\n\udcd6 " * 12 INVALID_PASSWORD_INVALID_UTF8 = "icpa\u202e\U000e0ec1\udcaassword1" def get_random_valid_mnemonic_phrase(): return str(Entropy(get_random_valid_entropy_bytes()).to_mnemonic()) def get_random_valid_entropy_bytes(): return bytes(getrandbits(8) for _ in range(choice(Entropy.VALID_ENTROPY_BYTE_LENGTHS))) def get_random_valid_password():