mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-21 12:18:13 +02:00
Merge bitcoin/bitcoin#28617: test: Add Wallet Unlock Context Manager
004903ebadtest: Add Wallet Unlock Context Manager (Brandon Odiwuor) Pull request description: Fixes #28601, see https://github.com/bitcoin/bitcoin/pull/28403#discussion_r1325426430 Add Context Manager to manage the locking and unlocking of locked wallets with a passphrase during testing. ACKs for top commit: kevkevinpal: lgtm ACK [004903e](004903ebad) maflcko: lgtm ACK004903ebadTree-SHA512: ab234c167e71531df0d974ff9a31d444f7ce2a1d05aba5ea868cc9452f139845eeb24ca058d88f058bc02482b762adf2d99e63a6640b872cc71a57a0068abfe8
This commit is contained in:
@@ -122,3 +122,22 @@ def generate_keypair(compressed=True, wif=False):
|
||||
if wif:
|
||||
privkey = bytes_to_wif(privkey.get_bytes(), compressed)
|
||||
return privkey, pubkey
|
||||
|
||||
class WalletUnlock():
|
||||
"""
|
||||
A context manager for unlocking a wallet with a passphrase and automatically locking it afterward.
|
||||
"""
|
||||
|
||||
MAXIMUM_TIMEOUT = 999000
|
||||
|
||||
def __init__(self, wallet, passphrase, timeout=MAXIMUM_TIMEOUT):
|
||||
self.wallet = wallet
|
||||
self.passphrase = passphrase
|
||||
self.timeout = timeout
|
||||
|
||||
def __enter__(self):
|
||||
self.wallet.walletpassphrase(self.passphrase, self.timeout)
|
||||
|
||||
def __exit__(self, *args):
|
||||
_ = args
|
||||
self.wallet.walletlock()
|
||||
|
||||
Reference in New Issue
Block a user