def test_encrypt_save_reload(self): with set_xrd_dir("no_data"): wallet = Wallet() wallet.add_new_address(height=4) wallet.save() wallet_b = Wallet() self.assertEqual(1, len(wallet_b.address_items)) self.assertEqual(wallet.address_items[0], wallet_b.address_items[0]) TEST_KEY = 'mytestkey' wallet_b.encrypt(TEST_KEY) wallet_b.save() self.assertEqual(1, len(wallet_b.address_items)) self.assertNotEqual(wallet.address_items[0], wallet_b.address_items[0]) wallet_c = Wallet() self.assertEqual(1, len(wallet_c.address_items)) self.assertTrue(wallet_c.address_items[0].encrypted) wallet_c.decrypt(TEST_KEY) self.assertFalse(wallet_c.address_items[0].encrypted) self.assertEqual(wallet.address_items[0], wallet_c.address_items[0])
def test_create_load(self): with set_xrd_dir("no_data"): wallet = Wallet() wallet.add_new_address(height=4) wallet.save() wallet_b = Wallet() self.assertEqual(1, len(wallet_b.address_items)) self.assertEqual(wallet.address_items[0], wallet_b.address_items[0])
def test_encrypt_wallet(self): # 2 unencrypted addresses. This should work. with set_xrd_dir("no_data"): TEST_KEY = 'mytestkey' wallet = Wallet() wallet.add_new_address(height=4) wallet.add_new_address(height=4) wallet.encrypt(TEST_KEY) self.assertTrue(wallet.encrypted) self.assertFalse(wallet.encrypted_partially)
def test_decrypt_wallet(self): with set_xrd_dir("no_data"): wallet = Wallet() wallet.add_new_address(height=4) wallet.add_new_address(height=4) addresses = wallet.addresses TEST_KEY = 'mytestkey' wallet.encrypt(TEST_KEY) self.assertTrue(wallet.encrypted) wallet.decrypt(TEST_KEY) self.assertEqual(addresses, wallet.addresses) self.assertFalse(wallet.encrypted_partially)
def wallet_gen(ctx, height, hash_function, encrypt): """ Generates a new wallet with one address """ wallet = Wallet(wallet_path=ctx.obj.wallet_path) if len(wallet.address_items) > 0: click.echo("Wallet already exists") return wallet.add_new_address(height, hash_function) _print_addresses(ctx, wallet.address_items, ctx.obj.wallet_path) if encrypt: secret = click.prompt('Enter password to encrypt wallet with', hide_input=True, confirmation_prompt=True) wallet.encrypt(secret) wallet.save()
def wallet_add(ctx, height, hash_function): """ Adds an address or generates a new wallet (working directory) """ secret = None wallet = Wallet(wallet_path=ctx.obj.wallet_path) wallet_was_encrypted = wallet.encrypted if wallet.encrypted: secret = click.prompt('The wallet is encrypted. Enter password', hide_input=True) wallet.decrypt(secret) wallet.add_new_address(height, hash_function) _print_addresses(ctx, wallet.address_items, config.user.wallet_dir) if wallet_was_encrypted: wallet.encrypt(secret) wallet.save()
def test_create_custom_hash_function_load(self): with set_xrd_dir("no_data"): wallet = Wallet() xmss = wallet.add_new_address(height=4, hash_function="sha2_256") wallet.save() self.assertEqual("sha2_256", xmss.hash_function) wallet_reloaded = Wallet() self.assertEqual("sha2_256", wallet_reloaded.address_items[0].hashFunction)
def test_create(self): with set_xrd_dir("no_data"): wallet = Wallet() self.assertEqual(0, len(wallet.address_items)) xmss1 = wallet.add_new_address(4) self.assertEqual(1, len(wallet.address_items)) xmss2 = wallet.get_xmss_by_index(0) self.assertEqual(xmss1.address, xmss2.address) self.assertEqual(xmss1.mnemonic, xmss2.mnemonic)
def test_integrity_behaviour(self): with set_xrd_dir("no_data"): TEST_KEY = 'mytestkey' wallet = Wallet() wallet.add_new_address(4) wallet.add_new_address(4) wallet.encrypt(TEST_KEY) # An encrypted wallet is not editable. with self.assertRaises(WalletEncryptionError): wallet.add_new_address(4) # You may not re-encrypt it. with self.assertRaises(WalletEncryptionError): wallet.encrypt(TEST_KEY) # You can save it. wallet.save() wallet.decrypt_item(1, TEST_KEY) # A partially encrypted wallet is not editable. with self.assertRaises(WalletEncryptionError): wallet.add_new_address(4) # You may not re-encrypt it. with self.assertRaises(WalletEncryptionError): wallet.encrypt(TEST_KEY) # You may not re-decrypt it. with self.assertRaises(WalletEncryptionError): wallet.decrypt(TEST_KEY) # You can't even save it. with self.assertRaises(WalletEncryptionError): wallet.save() wallet.decrypt_item(0, TEST_KEY) # A fully decrypted wallet is editable. wallet.add_new_address(4) # You may not re-decrypt it. with self.assertRaises(WalletEncryptionError): wallet.decrypt(TEST_KEY) # You can save it. wallet.save()
def test_create_custom_hash_function(self): with set_xrd_dir("no_data"): wallet = Wallet() xmss = wallet.add_new_address(height=4, hash_function="sha2_256") self.assertEqual("sha2_256", xmss.hash_function)