blob: ef3481a002b6feff452f2b7782e307ebf0251c41 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# Copyright 2017 Canonical Ltd.
# Licensed under the LGPLv3, see LICENCE file for details.
import macaroonbakery.utils as utils
import macaroonbakery as bakery
def discharge(ctx, content, key, locator, checker):
'''Handles a discharge request as received by the /discharge
endpoint.
@param ctx The context passed to the checker {checkers.AuthContext}
@param content URL and form parameters {dict}
@param locator Locator used to add third party caveats returned by
the checker {macaroonbakery.ThirdPartyLocator}
@param checker Used to check third party caveats {macaroonbakery.ThirdPartyCaveatChecker}
@return The discharge macaroon {macaroonbakery.Macaroon}
'''
id = content.get('id')
if id is None:
id = content.get('id64')
if id is not None:
id = utils.b64decode(id)
caveat = content.get('caveat64')
if caveat is not None:
caveat = utils.b64decode(caveat)
return bakery.discharge(
ctx,
id=id,
caveat=caveat,
key=key,
checker=checker,
locator=locator,
)
|