2 # Copyright (c) 2016 The Bitcoin Core developers
3 # Distributed under the MIT software license, see the accompanying
4 # file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 """Test Wallet encryption"""
9 from test_framework
.test_framework
import BitcoinTestFramework
10 from test_framework
.util
import (
12 assert_raises_rpc_error
,
15 class WalletEncryptionTest(BitcoinTestFramework
):
16 def set_test_params(self
):
17 self
.setup_clean_chain
= True
21 passphrase
= "WalletPassphrase"
22 passphrase2
= "SecondWalletPassphrase"
24 # Make sure the wallet isn't encrypted first
25 address
= self
.nodes
[0].getnewaddress()
26 privkey
= self
.nodes
[0].dumpprivkey(address
)
27 assert_equal(privkey
[:1], "c")
28 assert_equal(len(privkey
), 52)
31 self
.nodes
[0].node_encrypt_wallet(passphrase
)
34 # Test that the wallet is encrypted
35 assert_raises_rpc_error(-13, "Please enter the wallet passphrase with walletpassphrase first", self
.nodes
[0].dumpprivkey
, address
)
37 # Check that walletpassphrase works
38 self
.nodes
[0].walletpassphrase(passphrase
, 2)
39 assert_equal(privkey
, self
.nodes
[0].dumpprivkey(address
))
41 # Check that the timeout is right
43 assert_raises_rpc_error(-13, "Please enter the wallet passphrase with walletpassphrase first", self
.nodes
[0].dumpprivkey
, address
)
45 # Test wrong passphrase
46 assert_raises_rpc_error(-14, "wallet passphrase entered was incorrect", self
.nodes
[0].walletpassphrase
, passphrase
+ "wrong", 10)
49 self
.nodes
[0].walletpassphrase(passphrase
, 84600)
50 assert_equal(privkey
, self
.nodes
[0].dumpprivkey(address
))
51 self
.nodes
[0].walletlock()
52 assert_raises_rpc_error(-13, "Please enter the wallet passphrase with walletpassphrase first", self
.nodes
[0].dumpprivkey
, address
)
54 # Test passphrase changes
55 self
.nodes
[0].walletpassphrasechange(passphrase
, passphrase2
)
56 assert_raises_rpc_error(-14, "wallet passphrase entered was incorrect", self
.nodes
[0].walletpassphrase
, passphrase
, 10)
57 self
.nodes
[0].walletpassphrase(passphrase2
, 10)
58 assert_equal(privkey
, self
.nodes
[0].dumpprivkey(address
))
60 if __name__
== '__main__':
61 WalletEncryptionTest().main()