diff --git a/src/pcd.rs b/src/pcd.rs index 1cc64fa..ff93483 100644 --- a/src/pcd.rs +++ b/src/pcd.rs @@ -6,7 +6,7 @@ use log::debug; use rand::thread_rng; use serde::{Deserialize, Serialize}; use serde_json::{Map, Value}; -use sp_client::{bitcoin::{hashes::{sha256t_hash_newtype, Hash, HashEngine}, hex::{DisplayHex, FromHex}, Txid}, silentpayments::utils::SilentPaymentAddress}; +use sp_client::{bitcoin::{hashes::{sha256t_hash_newtype, Hash, HashEngine}, hex::{DisplayHex, FromHex}, XOnlyPublicKey}, silentpayments::utils::SilentPaymentAddress}; use tsify::Tsify; use crate::crypto::AAD; @@ -44,6 +44,13 @@ impl Member { pub fn get_addresses(&self) -> Vec { self.sp_addresses.clone() } + + pub fn key_is_part_of_member(&self, key: &XOnlyPublicKey) -> bool { + self.sp_addresses.iter().any(|a| { + let addr = SilentPaymentAddress::try_from(a.as_str()).unwrap(); + addr.get_spend_key().x_only_public_key().0 == *key + }) + } } sha256t_hash_newtype! {