use crate::certificate_issuance::{GrantValidationError, validate_grants};
use ic_auth_protocol_types::DelegatedRoleGrant;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ValidatedGrants(Vec<DelegatedRoleGrant>);
impl ValidatedGrants {
pub fn new(grants: Vec<DelegatedRoleGrant>) -> Result<Self, GrantValidationError> {
validate_grants(
&grants,
crate::limits::MAX_GRANTS,
crate::limits::MAX_SCOPES_PER_GRANT,
)?;
Ok(Self(grants))
}
pub fn as_slice(&self) -> &[DelegatedRoleGrant] {
&self.0
}
pub fn into_vec(self) -> Vec<DelegatedRoleGrant> {
self.0
}
}