From 3251ddc7b6dfe48301421bb54ab572699cb90fa3 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone <exarkun@twistedmatrix.com> Date: Wed, 4 Sep 2019 14:59:59 -0400 Subject: [PATCH] a few more comments --- src/PaymentServer/Redemption.hs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/PaymentServer/Redemption.hs b/src/PaymentServer/Redemption.hs index 87e3ed0..1d0593c 100644 --- a/src/PaymentServer/Redemption.hs +++ b/src/PaymentServer/Redemption.hs @@ -81,9 +81,13 @@ data Result -- signatures returned to the caller. type BlindedToken = Text +-- | A complete redemption attempt which can be presented at the redemption +-- endpoint. data Redeem - = Redeem { redeemVoucher :: Voucher, redeemTokens :: [BlindedToken] } - deriving (Show, Eq, Generic) + = Redeem + { redeemVoucher :: Voucher -- ^ The voucher being redeemed. + , redeemTokens :: [BlindedToken] -- ^ Tokens to be signed as part of this redemption. + } deriving (Show, Eq, Generic) instance FromJSON Redeem @@ -120,6 +124,9 @@ jsonErr400 = err400 redemptionServer :: VoucherDatabase d => d -> Server RedemptionAPI redemptionServer = redeem +-- | Handler for redemption requests. Use the database to try to redeem the +-- voucher and return signatures. Return a failure if this is not possible +-- (eg because the voucher was already redeemed). redeem :: VoucherDatabase d => d -> Redeem -> Handler Result redeem database (Redeem voucher tokens) = do let fingerprint = fingerprintFromTokens tokens @@ -128,6 +135,8 @@ redeem database (Redeem voucher tokens) = do Left err -> throwError jsonErr400 Right () -> return $ Succeeded "" [] "" +-- | Compute a cryptographic hash (fingerprint) of a list of tokens which can +-- be used as an identifier for this exact sequence of tokens. fingerprintFromTokens :: [BlindedToken] -> Fingerprint fingerprintFromTokens = let -- GitLab