diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fc8b4fe..be08ff47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ page. See [DEVELOPMENT_CYCLE.md](DEVELOPMENT_CYCLE.md) for more details. ## [Unreleased] - Fixed `create_tx --send_all` to reject multiple recipients instead of silently using only the first one + - Replaced `bdk_bip322` with `bdk_message_signer` v0.2.0 and renamed the `bdk_bip322` feature to `bdk_message_signer` ## [3.0.0] diff --git a/Cargo.toml b/Cargo.toml index e97625ca..8ef4811b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,7 @@ dns_payment = ["bitcoin-payment-instructions"] # Internal features _payjoin-dependencies = ["payjoin", "reqwest", "url", "sqlite"] -bip322 = ["bdk_message_signer"] +message_signer = ["bdk_message_signer"] # Use this to consensus verify transactions at sync time verify = [] diff --git a/src/commands.rs b/src/commands.rs index 613a4f6b..975f33be 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -13,7 +13,7 @@ //! All subcommands are defined in the below enums. #![allow(clippy::large_enum_variant)] -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] use crate::handlers::offline::{SignMessageCommand, VerifyMessageCommand}; use crate::handlers::{ config::{ListWalletsCommand, SaveConfigCommand}, @@ -362,10 +362,10 @@ pub enum OfflineWalletSubCommand { /// Combines multiple PSBTs into one. CombinePsbt(CombinePsbtCommand), /// Sign a message using BIP322 - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] SignMessage(SignMessageCommand), /// Verify a BIP322 signature - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] VerifyMessage(VerifyMessageCommand), /// Lock UTXO(s) so they're excluded from coin selection. LockUtxo(LockUtxoCommand), diff --git a/src/error.rs b/src/error.rs index dfd9f336..bee8f191 100644 --- a/src/error.rs +++ b/src/error.rs @@ -155,9 +155,10 @@ pub enum BDKCliError { #[cfg(feature = "payjoin")] #[error("Payjoin database error: {0}")] PayjoinDb(#[from] crate::handlers::payjoin::db::Error), - #[cfg(feature = "bip322")] + + #[cfg(feature = "message_signer")] #[error("BIP-322 error: {0}")] - Bip322Error(#[from] bdk_message_signer::error::Error), + MessageSignerError(#[from] bdk_message_signer::error::Error), } impl From for BDKCliError { diff --git a/src/handlers/offline.rs b/src/handlers/offline.rs index 725b29ca..fe4097e4 100644 --- a/src/handlers/offline.rs +++ b/src/handlers/offline.rs @@ -28,7 +28,7 @@ use { bdk_wallet::keys::{DescriptorPublicKey, DescriptorSecretKey, SinglePubKey}, std::collections::HashMap, }; -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] use { crate::utils::parse_signature_format, crate::utils::types::MessageResult, @@ -73,11 +73,11 @@ impl OfflineWalletSubCommand { Self::CombinePsbt(combine_psbt_command) => combine_psbt_command .execute(ctx)? .write_out(std::io::stdout()), - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] Self::SignMessage(sign_message_command) => sign_message_command .execute(ctx)? .write_out(std::io::stdout()), - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] Self::VerifyMessage(verify_message_command) => verify_message_command .execute(ctx)? .write_out(std::io::stdout()), @@ -773,7 +773,7 @@ impl AppCommand>> for CombinePsbtCommand { } } -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] #[derive(Debug, Parser, Clone, PartialEq)] pub struct SignMessageCommand { /// The message to sign @@ -793,7 +793,7 @@ pub struct SignMessageCommand { pub utxos: Option>, } -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] impl AppCommand>> for SignMessageCommand { type Output = MessageResult; @@ -823,7 +823,7 @@ impl AppCommand>> for SignMessageCommand { } } -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] #[derive(Debug, Parser, Clone, PartialEq)] pub struct VerifyMessageCommand { /// The signature proof to verify @@ -839,7 +839,7 @@ pub struct VerifyMessageCommand { pub address: String, } -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] impl AppCommand>> for VerifyMessageCommand { type Output = MessageResult; diff --git a/src/utils/common.rs b/src/utils/common.rs index a5f8c15a..136c9873 100644 --- a/src/utils/common.rs +++ b/src/utils/common.rs @@ -1,7 +1,7 @@ use crate::{commands::WalletOpts, config::WalletConfig, error::BDKCliError as Error}; #[cfg(feature = "cbf")] use bdk_kyoto::{Info, Receiver, UnboundedReceiver, Warning}; -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] use bdk_message_signer::SignatureFormat; #[cfg(feature = "silent-payments")] use bdk_sp::encoding::SilentPaymentCode; @@ -198,7 +198,7 @@ pub(crate) fn parse_sp_code_value_pairs(s: &str) -> Result<(SilentPaymentCode, u } /// Function to parse the signature format from a string -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] pub(crate) fn parse_signature_format(format_str: &str) -> Result { match format_str.to_lowercase().as_str() { "legacy" => Ok(SignatureFormat::Legacy), @@ -232,10 +232,10 @@ pub fn command_requires_db(command: &OfflineWalletSubCommand) -> bool { | OfflineWalletSubCommand::FinalizePsbt(_) | OfflineWalletSubCommand::CombinePsbt(_) => false, - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] OfflineWalletSubCommand::SignMessage(_) => true, - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] OfflineWalletSubCommand::VerifyMessage(_) => true, #[cfg(feature = "silent-payments")] OfflineWalletSubCommand::CreateSpTx(_) => true, diff --git a/src/utils/types.rs b/src/utils/types.rs index 8a10d03f..f6bd4cfd 100644 --- a/src/utils/types.rs +++ b/src/utils/types.rs @@ -110,7 +110,7 @@ pub struct KeychainPair { pub internal: T, } -#[cfg(feature = "bip322")] +#[cfg(feature = "message_signer")] #[derive(Serialize, Debug, Default)] pub struct MessageResult { #[serde(skip_serializing_if = "Option::is_none")] diff --git a/tests/integration/offline.rs b/tests/integration/offline.rs index f19f623c..780761a0 100644 --- a/tests/integration/offline.rs +++ b/tests/integration/offline.rs @@ -151,7 +151,7 @@ mod test_offline { .stderr(predicate::str::contains("Invalid")); } - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] #[test] fn test_sign_message_and_verify_message() { let (cli, mut cmd_init) = setup_wallet_config(); @@ -216,7 +216,7 @@ mod test_offline { .stdout(predicate::str::contains("\"valid\": true")); } - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] #[test] fn test_verify_message_rejects_tampered_message() { let (cli, mut cmd_init) = setup_wallet_config(); diff --git a/tests/integration/online.rs b/tests/integration/online.rs index e6d7108f..2e63e216 100644 --- a/tests/integration/online.rs +++ b/tests/integration/online.rs @@ -814,7 +814,7 @@ mod test_online { } } - #[cfg(feature = "bip322")] + #[cfg(feature = "message_signer")] #[test] fn test_verify_message_proof_of_funds_uses_persisted_utxos() { let env = TestEnv::new().expect("Failed to start bdk_testenv");