Add key_is_part_of_member to Member

This commit is contained in:
Sosthene 2024-10-04 09:24:23 +02:00 committed by Nicolas Cantu
parent 9a04bbad3e
commit 4726c59861

View File

@ -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<String> {
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! {