Skip to main content

PolicyCompiler

Struct PolicyCompiler 

Source
pub struct PolicyCompiler<'a> { /* private fields */ }
Expand description

Compose layers in system → application → tenant order. Every ordinary layer intersects the previous snapshot; only authorize_replacement can relax it.

Implementations§

Source§

impl<'a> PolicyCompiler<'a>

Source

pub fn new( profile: PolicyProfile, provider: &'a dyn CryptoProvider, authorization: Option<PolicyValidity>, ) -> Result<Self, PolicyViolation>

Construct a named profile using this engine’s advertised capabilities. LegacyVerify requires a valid authorization even before compilation.

Source

pub fn restrict(self, layer: &PolicySet) -> Result<Self, PolicyViolation>

Intersect another complete layer without granting any new permission. None operation fields mean disabled, not unspecified inheritance.

Source

pub fn authorize_replacement( self, replacement: PolicySet, authorization: PolicyValidity, ) -> Result<Self, PolicyViolation>

Explicit relaxation path: replace the effective policy and retain the authenticated grant on every enabled operation. Earlier authorization lifetimes are intersected, so replacement cannot extend an existing grant.

Source

pub fn compile( self, context: &PolicyCompileContext, ) -> Result<CompiledPolicies, PolicyViolation>

Compile contradictions before parsing, resolver calls or cryptography.

Source

pub fn policies(&self) -> &PolicySet

Inspect a layer input for customization before restrictive composition.

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for PolicyCompiler<'a>

§

impl<'a> !UnwindSafe for PolicyCompiler<'a>

§

impl<'a> Freeze for PolicyCompiler<'a>

§

impl<'a> Send for PolicyCompiler<'a>

§

impl<'a> Sync for PolicyCompiler<'a>

§

impl<'a> Unpin for PolicyCompiler<'a>

§

impl<'a> UnsafeUnpin for PolicyCompiler<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.