diff --git a/client/src/client_sync/v17/mod.rs b/client/src/client_sync/v17/mod.rs index ce97a896..4d547d72 100644 --- a/client/src/client_sync/v17/mod.rs +++ b/client/src/client_sync/v17/mod.rs @@ -155,6 +155,7 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); /// Argument to the `Client::get_new_address_with_type` function. diff --git a/client/src/client_sync/v17/wallet.rs b/client/src/client_sync/v17/wallet.rs index 1695a415..51eecf27 100644 --- a/client/src/client_sync/v17/wallet.rs +++ b/client/src/client_sync/v17/wallet.rs @@ -666,6 +666,22 @@ macro_rules! impl_client_v17__unload_wallet { }; } +/// Implements Bitcoin Core JSON-RPC API method `walletpassphrase` +#[macro_export] +macro_rules! impl_client_v17__wallet_passphrase { + () => { + impl Client { + pub fn wallet_passphrase(&self, passphrase: &str, timeout: u64) -> Result<()> { + match self.call("walletpassphrase", &[passphrase.into(), timeout.into()]) { + Ok(serde_json::Value::Null) => Ok(()), + Ok(res) => Err(Error::Returned(res.to_string())), + Err(err) => Err(err.into()), + } + } + } + }; +} + /// Implements Bitcoin Core JSON-RPC API method `walletcreatefundedpsbt`. #[macro_export] macro_rules! impl_client_v17__wallet_create_funded_psbt { diff --git a/client/src/client_sync/v18/mod.rs b/client/src/client_sync/v18/mod.rs index 5f56ffe9..0a2fd61a 100644 --- a/client/src/client_sync/v18/mod.rs +++ b/client/src/client_sync/v18/mod.rs @@ -172,4 +172,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v19/mod.rs b/client/src/client_sync/v19/mod.rs index 73569003..40c4e1ce 100644 --- a/client/src/client_sync/v19/mod.rs +++ b/client/src/client_sync/v19/mod.rs @@ -169,4 +169,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v20/mod.rs b/client/src/client_sync/v20/mod.rs index 50ee2701..75fb86c8 100644 --- a/client/src/client_sync/v20/mod.rs +++ b/client/src/client_sync/v20/mod.rs @@ -169,4 +169,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v17__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v21/mod.rs b/client/src/client_sync/v21/mod.rs index 1b6b374d..76087785 100644 --- a/client/src/client_sync/v21/mod.rs +++ b/client/src/client_sync/v21/mod.rs @@ -169,4 +169,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v22/mod.rs b/client/src/client_sync/v22/mod.rs index 25b504cc..438bd66a 100644 --- a/client/src/client_sync/v22/mod.rs +++ b/client/src/client_sync/v22/mod.rs @@ -169,4 +169,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v23/mod.rs b/client/src/client_sync/v23/mod.rs index e6f11fbd..2d5a1a37 100644 --- a/client/src/client_sync/v23/mod.rs +++ b/client/src/client_sync/v23/mod.rs @@ -171,6 +171,7 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); /// Argument to the `Client::get_new_address_with_type` function. diff --git a/client/src/client_sync/v24/mod.rs b/client/src/client_sync/v24/mod.rs index a87ff2bf..42f893ce 100644 --- a/client/src/client_sync/v24/mod.rs +++ b/client/src/client_sync/v24/mod.rs @@ -168,4 +168,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v25/mod.rs b/client/src/client_sync/v25/mod.rs index 04869bc4..56e8b675 100644 --- a/client/src/client_sync/v25/mod.rs +++ b/client/src/client_sync/v25/mod.rs @@ -168,4 +168,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v26/mod.rs b/client/src/client_sync/v26/mod.rs index 87d6ee33..92cc956a 100644 --- a/client/src/client_sync/v26/mod.rs +++ b/client/src/client_sync/v26/mod.rs @@ -174,4 +174,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v27/mod.rs b/client/src/client_sync/v27/mod.rs index 75151c73..7bc5b403 100644 --- a/client/src/client_sync/v27/mod.rs +++ b/client/src/client_sync/v27/mod.rs @@ -170,4 +170,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v28/mod.rs b/client/src/client_sync/v28/mod.rs index 03af408a..46fa64e2 100644 --- a/client/src/client_sync/v28/mod.rs +++ b/client/src/client_sync/v28/mod.rs @@ -172,4 +172,5 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); diff --git a/client/src/client_sync/v29/mod.rs b/client/src/client_sync/v29/mod.rs index ae5b20ad..586f88b0 100644 --- a/client/src/client_sync/v29/mod.rs +++ b/client/src/client_sync/v29/mod.rs @@ -172,6 +172,7 @@ crate::impl_client_v17__sign_raw_transaction_with_wallet!(); crate::impl_client_v21__unload_wallet!(); crate::impl_client_v17__wallet_create_funded_psbt!(); crate::impl_client_v17__wallet_lock!(); +crate::impl_client_v17__wallet_passphrase!(); crate::impl_client_v17__wallet_process_psbt!(); /// Arg for the `getblocktemplate` method. (v29+). diff --git a/integration_test/tests/wallet.rs b/integration_test/tests/wallet.rs index 502847d6..6a761973 100644 --- a/integration_test/tests/wallet.rs +++ b/integration_test/tests/wallet.rs @@ -622,6 +622,17 @@ fn wallet__wallet_lock() { let _: () = node.client.wallet_lock().expect("walletlock"); } +#[test] +fn wallet__wallet_passphrase() { + let node = Node::with_wallet(Wallet::Default, &[]); + + node.client.create_wallet("wallet_name").expect("createwallet"); + node.client.encrypt_wallet("passphrase").expect("encryptwallet"); + + let timeout = 60u64; + let _: () = node.client.wallet_passphrase("passphrase", timeout).expect("walletpassphrase"); +} + fn create_load_unload_wallet() { let node = Node::with_wallet(Wallet::None, &[]);