]> git.immae.eu Git - github/fretlink/hmacaroons.git/blame - src/Crypto/Macaroon/Verifier.hs
Add quickcheck properties
[github/fretlink/hmacaroons.git] / src / Crypto / Macaroon / Verifier.hs
CommitLineData
b92e3c15
JT
1{-# LANGUAGE OverloadedStrings #-}
2{-|
3Module : Crypto.Macaroon.Verifier
4Copyright : (c) 2015 Julien Tanguy
5License : BSD3
6
7Maintainer : julien.tanguy@jhome.fr
8Stability : experimental
9Portability : portable
10
11
12
13-}
14module Crypto.Macaroon.Verifier where
15
16
17import Crypto.Hash
18import Data.Bool
19import qualified Data.ByteString as BS
20import Data.Byteable
21import Data.Foldable
22
23import Crypto.Macaroon.Internal
24
25
26-- | Opaque datatype for now. Might need more explicit errors
5d1b7d51 27data VResult = VSuccess | VFailure deriving (Show,Eq)
b92e3c15 28
5d1b7d51
JT
29verifySig :: Key -> Macaroon -> VResult
30verifySig k m = bool VFailure VSuccess $
b92e3c15
JT
31 signature m == foldl' hash (toBytes (hmac derivedKey (identifier m) :: HMAC SHA256)) (caveats m)
32 where
33 hash s c = toBytes (hmac s (vid c `BS.append` cid c) :: HMAC SHA256)
34 derivedKey = toBytes (hmac "macaroons-key-generator" k :: HMAC SHA256)