use flcrypto::{
access::{BadgeLink, ConditionLink},
signer::{Verifier, VerifierTrait},
};
use serde::{Deserialize, Serialize};
use super::{flo::FloWrapper, realm::RealmID};
pub type FloVerifier = FloWrapper<Verifier>;
pub type FloBadge = FloWrapper<BadgeCond>;
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct BadgeCond(ConditionLink);
impl BadgeCond {
pub fn new(cond: ConditionLink) -> Self {
Self(cond)
}
pub fn cond(&self) -> &ConditionLink {
&self.0
}
}
impl FloBadge {
pub fn badge_link(&self) -> BadgeLink {
BadgeLink {
id: (*self.flo_id()).into(),
version: self.version(),
condition: self.cache().0.clone(),
}
}
}
impl FloVerifier {
pub fn new(rid: RealmID, verifier: Verifier) -> Self {
let force_id = *verifier.get_id();
FloVerifier::from_force_id(rid, verifier, force_id).unwrap()
}
}