use crate::status_list::StatusList;
use super::types::DppAccessCredential;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RevocationOutcome {
NotRevoked,
Revoked,
Indeterminate,
}
pub fn check_revocation(
credential: &DppAccessCredential,
status_list: &StatusList,
) -> RevocationOutcome {
let Some(status) = credential.credential_status.as_ref() else {
return RevocationOutcome::NotRevoked;
};
let Some(index) = status
.status_list_index
.as_ref()
.and_then(|s| s.parse::<usize>().ok())
else {
return RevocationOutcome::Indeterminate;
};
match status_list.get(index) {
Some(true) => RevocationOutcome::Revoked,
Some(false) => RevocationOutcome::NotRevoked,
None => RevocationOutcome::Indeterminate,
}
}