pub struct MacaroonManager { /* private fields */ }Expand description
Macaroon minting and verification.
Implementations§
Source§impl MacaroonManager
impl MacaroonManager
Sourcepub fn new(root_key: &[u8]) -> Result<Self>
pub fn new(root_key: &[u8]) -> Result<Self>
Create a manager from a root key.
The root key should be at least 32 bytes of cryptographically random data.
Sourcepub fn create(&self, location: &str, identifier: &str) -> Macaroon
pub fn create(&self, location: &str, identifier: &str) -> Macaroon
Mint a new macaroon with the given identifier.
Sourcepub fn add_first_party_caveat(&self, macaroon: &mut Macaroon, predicate: &str)
pub fn add_first_party_caveat(&self, macaroon: &mut Macaroon, predicate: &str)
Add a first-party caveat, updating the signature chain.
Sourcepub fn add_third_party_caveat(
&self,
macaroon: &mut Macaroon,
location: &str,
caveat_id: &str,
caveat_key: &[u8],
)
pub fn add_third_party_caveat( &self, macaroon: &mut Macaroon, location: &str, caveat_id: &str, caveat_key: &[u8], )
Add a third-party caveat.
Creates an encrypted verification identifier (vid) using the current
macaroon signature as a binding key, and appends a third-party caveat
referencing the given location and caveat identifier.
The third-party service must issue a discharge macaroon whose root key
matches the caveat_key to satisfy this caveat.
Sourcepub fn verify_with_discharges<F>(
&self,
macaroon: &Macaroon,
verifier: F,
discharge_macaroons: &[Macaroon],
) -> Result<()>
pub fn verify_with_discharges<F>( &self, macaroon: &Macaroon, verifier: F, discharge_macaroons: &[Macaroon], ) -> Result<()>
Verify a macaroon by replaying the HMAC chain and checking caveats.
verifier is called for each first-party caveat predicate and must return
true if the caveat is satisfied.
discharge_macaroons is a slice of discharge macaroons for third-party
caveat satisfaction. Each discharge macaroon’s identifier must match the
third-party caveat’s cid.
Auto Trait Implementations§
impl Freeze for MacaroonManager
impl RefUnwindSafe for MacaroonManager
impl Send for MacaroonManager
impl Sync for MacaroonManager
impl Unpin for MacaroonManager
impl UnsafeUnpin for MacaroonManager
impl UnwindSafe for MacaroonManager
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more