use super::{verify_signed, Signed};
use secured_linked_list::SecuredLinkedList;
use serde::Serialize;
use sn_messaging::node::SectionSigned;
pub trait SectionSignedUtils<T: Serialize> {
fn new(value: T, signed: Signed) -> Self;
fn verify(&self, section_chain: &SecuredLinkedList) -> bool;
fn self_verify(&self) -> bool;
}
impl<T: Serialize> SectionSignedUtils<T> for SectionSigned<T> {
fn new(value: T, signed: Signed) -> Self {
Self { value, signed }
}
fn verify(&self, section_chain: &SecuredLinkedList) -> bool {
section_chain.has_key(&self.signed.public_key) && self.self_verify()
}
fn self_verify(&self) -> bool {
verify_signed(&self.signed, &self.value)
}
}