Skip to content

Commit 81a7b65

Browse files
authored
fix(primitives): revert changes to crypto.rs (#975)
1 parent 214959a commit 81a7b65

File tree

2 files changed

+15
-56
lines changed

2 files changed

+15
-56
lines changed

bin/alpen-cli/src/cmd/deposit.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ use std::{str::FromStr, time::Duration};
33
use alloy::{primitives::Address as AlpenAddress, providers::WalletProvider};
44
use argh::FromArgs;
55
use bdk_wallet::{
6-
bitcoin::{script::PushBytesBuf, secp256k1::SECP256K1, PrivateKey, XOnlyPublicKey},
6+
bitcoin::{
7+
key::Keypair,
8+
script::PushBytesBuf,
9+
secp256k1::{SecretKey, SECP256K1},
10+
PrivateKey, XOnlyPublicKey,
11+
},
712
chain::ChainOracle,
813
coin_selection::InsufficientFunds,
914
descriptor::IntoWalletDescriptor,
@@ -16,7 +21,7 @@ use indicatif::ProgressBar;
1621
use rand_core::OsRng;
1722
use shrex::encode;
1823
use strata_cli_common::errors::{DisplayableError, DisplayedError};
19-
use strata_primitives::crypto::even_kp;
24+
use strata_primitives::crypto::EvenSecretKey;
2025

2126
use crate::{
2227
alpen::AlpenWallet,
@@ -73,15 +78,19 @@ pub async fn deposit(
7378
alpen_address.to_string().cyan(),
7479
);
7580

76-
let (secret_key, recovery_public_key) = even_kp(SECP256K1.generate_keypair(&mut OsRng));
77-
let recovery_public_key = recovery_public_key.x_only_public_key().0;
81+
let secret_key: EvenSecretKey = {
82+
let keypair = Keypair::new(SECP256K1, &mut OsRng);
83+
SecretKey::from_keypair(&keypair).into()
84+
};
85+
86+
let recovery_public_key = secret_key.x_only_public_key(SECP256K1).0;
7887

7988
println!(
8089
"Recovery public key: {}",
8190
encode(&recovery_public_key.serialize()).yellow()
8291
);
8392

84-
let recovery_private_key = PrivateKey::new(secret_key.into(), settings.network);
93+
let recovery_private_key = PrivateKey::new(*secret_key, settings.network);
8594

8695
let bridge_in_desc = bridge_in_descriptor(
8796
settings.bridge_musig2_pubkey,

crates/primitives/src/crypto.rs

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
use std::ops::Deref;
33

44
use secp256k1::{
5-
schnorr::Signature, Keypair, Message, Parity, PublicKey, SecretKey, XOnlyPublicKey, SECP256K1,
5+
schnorr::Signature, Keypair, Message, Parity, SecretKey, XOnlyPublicKey, SECP256K1,
66
};
77

88
use crate::buf::{Buf32, Buf64};
@@ -79,56 +79,6 @@ impl From<SecretKey> for EvenSecretKey {
7979
}
8080
}
8181

82-
impl From<EvenSecretKey> for SecretKey {
83-
fn from(value: EvenSecretKey) -> Self {
84-
value.0
85-
}
86-
}
87-
88-
/// A public key with guaranteed even parity
89-
#[derive(Debug)]
90-
pub struct EvenPublicKey(PublicKey);
91-
92-
impl Deref for EvenPublicKey {
93-
type Target = PublicKey;
94-
95-
fn deref(&self) -> &Self::Target {
96-
&self.0
97-
}
98-
}
99-
100-
impl AsRef<PublicKey> for EvenPublicKey {
101-
fn as_ref(&self) -> &PublicKey {
102-
&self.0
103-
}
104-
}
105-
106-
impl From<PublicKey> for EvenPublicKey {
107-
fn from(value: PublicKey) -> Self {
108-
match value.x_only_public_key().1 == Parity::Odd {
109-
true => Self(value.negate(SECP256K1)),
110-
false => Self(value),
111-
}
112-
}
113-
}
114-
115-
impl From<EvenPublicKey> for PublicKey {
116-
fn from(value: EvenPublicKey) -> Self {
117-
value.0
118-
}
119-
}
120-
121-
/// Ensures a keypair is even by checking the public key's parity and negating if odd.
122-
pub fn even_kp((sk, pk): (SecretKey, PublicKey)) -> (EvenSecretKey, EvenPublicKey) {
123-
match (sk, pk) {
124-
(sk, pk) if pk.x_only_public_key().1 == Parity::Odd => (
125-
EvenSecretKey(sk.negate()),
126-
EvenPublicKey(pk.negate(SECP256K1)),
127-
),
128-
(sk, pk) => (EvenSecretKey(sk), EvenPublicKey(pk)),
129-
}
130-
}
131-
13282
#[cfg(test)]
13383
mod tests {
13484
use rand::{rngs::OsRng, Rng};

0 commit comments

Comments
 (0)