packages feed

biscuit-haskell 0.4.0.0 → 0.4.0.1

raw patch · 3 files changed

+18/−6 lines, 3 filesdep ~base16PVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base16

API changes (from Hackage documentation)

- Auth.Biscuit: [allFacts] :: AuthorizationSuccess -> FactGroup
- Auth.Biscuit: [limits] :: AuthorizationSuccess -> Limits
- Auth.Biscuit: [matchedAllowQuery] :: AuthorizationSuccess -> MatchedQuery
- Auth.Biscuit.Datalog.ScopedExecutor: [allFacts] :: AuthorizationSuccess -> FactGroup
- Auth.Biscuit.Datalog.ScopedExecutor: [limits] :: AuthorizationSuccess -> Limits
- Auth.Biscuit.Datalog.ScopedExecutor: [matchedAllowQuery] :: AuthorizationSuccess -> MatchedQuery
- Auth.Biscuit.Proto: [algorithm] :: PublicKey -> Required 1 (Enumeration Algorithm)
- Auth.Biscuit.Proto: [authority] :: Biscuit -> Required 2 (Message SignedBlock)
- Auth.Biscuit.Proto: [block] :: SignedBlock -> Required 1 (Value ByteString)
- Auth.Biscuit.Proto: [blocks] :: Biscuit -> Repeated 3 (Message SignedBlock)
- Auth.Biscuit.Proto: [body] :: RuleV2 -> Repeated 2 (Message PredicateV2)
- Auth.Biscuit.Proto: [checks_v2] :: Block -> Repeated 6 (Message CheckV2)
- Auth.Biscuit.Proto: [context] :: Block -> Optional 2 (Value Text)
- Auth.Biscuit.Proto: [expressions] :: RuleV2 -> Repeated 3 (Message ExpressionV2)
- Auth.Biscuit.Proto: [externalSig] :: ThirdPartyBlockContents -> Required 2 (Message ExternalSig)
- Auth.Biscuit.Proto: [facts_v2] :: Block -> Repeated 4 (Message FactV2)
- Auth.Biscuit.Proto: [head] :: RuleV2 -> Required 1 (Message PredicateV2)
- Auth.Biscuit.Proto: [key] :: PublicKey -> Required 2 (Value ByteString)
- Auth.Biscuit.Proto: [kind] :: OpTernary -> Required 1 (Enumeration TernaryKind)
- Auth.Biscuit.Proto: [name] :: PredicateV2 -> Required 1 (Value Int64)
- Auth.Biscuit.Proto: [nextKey] :: SignedBlock -> Required 2 (Message PublicKey)
- Auth.Biscuit.Proto: [ops] :: ExpressionV2 -> Repeated 1 (Message Op)
- Auth.Biscuit.Proto: [payload] :: ThirdPartyBlockContents -> Required 1 (Value ByteString)
- Auth.Biscuit.Proto: [pkTable] :: ThirdPartyBlockRequest -> Repeated 2 (Message PublicKey)
- Auth.Biscuit.Proto: [pksTable] :: Block -> Repeated 8 (Message PublicKey)
- Auth.Biscuit.Proto: [predicate] :: FactV2 -> Required 1 (Message PredicateV2)
- Auth.Biscuit.Proto: [previousPk] :: ThirdPartyBlockRequest -> Required 1 (Message PublicKey)
- Auth.Biscuit.Proto: [proof] :: Biscuit -> Required 4 (Message Proof)
- Auth.Biscuit.Proto: [publicKey] :: ExternalSig -> Required 2 (Message PublicKey)
- Auth.Biscuit.Proto: [queries] :: CheckV2 -> Repeated 1 (Message RuleV2)
- Auth.Biscuit.Proto: [rootKeyId] :: Biscuit -> Optional 1 (Value Int32)
- Auth.Biscuit.Proto: [rules_v2] :: Block -> Repeated 5 (Message RuleV2)
- Auth.Biscuit.Proto: [scope] :: RuleV2 -> Repeated 4 (Message Scope)
- Auth.Biscuit.Proto: [set] :: TermSet -> Repeated 1 (Message TermV2)
- Auth.Biscuit.Proto: [signature] :: ExternalSig -> Required 1 (Value ByteString)
- Auth.Biscuit.Proto: [symbols] :: Block -> Repeated 1 (Value Text)
- Auth.Biscuit.Proto: [terms] :: PredicateV2 -> Repeated 2 (Message TermV2)
- Auth.Biscuit.Proto: [version] :: Block -> Optional 3 (Value Int32)
+ Auth.Biscuit: [$sel:allFacts:AuthorizationSuccess] :: AuthorizationSuccess -> FactGroup
+ Auth.Biscuit: [$sel:limits:AuthorizationSuccess] :: AuthorizationSuccess -> Limits
+ Auth.Biscuit: [$sel:matchedAllowQuery:AuthorizationSuccess] :: AuthorizationSuccess -> MatchedQuery
+ Auth.Biscuit.Datalog.ScopedExecutor: [$sel:allFacts:AuthorizationSuccess] :: AuthorizationSuccess -> FactGroup
+ Auth.Biscuit.Datalog.ScopedExecutor: [$sel:limits:AuthorizationSuccess] :: AuthorizationSuccess -> Limits
+ Auth.Biscuit.Datalog.ScopedExecutor: [$sel:matchedAllowQuery:AuthorizationSuccess] :: AuthorizationSuccess -> MatchedQuery
+ Auth.Biscuit.Proto: [$sel:algorithm:PublicKey] :: PublicKey -> Required 1 (Enumeration Algorithm)
+ Auth.Biscuit.Proto: [$sel:authority:Biscuit] :: Biscuit -> Required 2 (Message SignedBlock)
+ Auth.Biscuit.Proto: [$sel:block:SignedBlock] :: SignedBlock -> Required 1 (Value ByteString)
+ Auth.Biscuit.Proto: [$sel:blocks:Biscuit] :: Biscuit -> Repeated 3 (Message SignedBlock)
+ Auth.Biscuit.Proto: [$sel:body:RuleV2] :: RuleV2 -> Repeated 2 (Message PredicateV2)
+ Auth.Biscuit.Proto: [$sel:checks_v2:Block] :: Block -> Repeated 6 (Message CheckV2)
+ Auth.Biscuit.Proto: [$sel:context:Block] :: Block -> Optional 2 (Value Text)
+ Auth.Biscuit.Proto: [$sel:expressions:RuleV2] :: RuleV2 -> Repeated 3 (Message ExpressionV2)
+ Auth.Biscuit.Proto: [$sel:externalSig:SignedBlock] :: SignedBlock -> Optional 4 (Message ExternalSig)
+ Auth.Biscuit.Proto: [$sel:externalSig:ThirdPartyBlockContents] :: ThirdPartyBlockContents -> Required 2 (Message ExternalSig)
+ Auth.Biscuit.Proto: [$sel:facts_v2:Block] :: Block -> Repeated 4 (Message FactV2)
+ Auth.Biscuit.Proto: [$sel:head:RuleV2] :: RuleV2 -> Required 1 (Message PredicateV2)
+ Auth.Biscuit.Proto: [$sel:key:PublicKey] :: PublicKey -> Required 2 (Value ByteString)
+ Auth.Biscuit.Proto: [$sel:kind:CheckV2] :: CheckV2 -> Optional 2 (Enumeration CheckKind)
+ Auth.Biscuit.Proto: [$sel:kind:OpBinary] :: OpBinary -> Required 1 (Enumeration BinaryKind)
+ Auth.Biscuit.Proto: [$sel:kind:OpTernary] :: OpTernary -> Required 1 (Enumeration TernaryKind)
+ Auth.Biscuit.Proto: [$sel:kind:OpUnary] :: OpUnary -> Required 1 (Enumeration UnaryKind)
+ Auth.Biscuit.Proto: [$sel:name:PredicateV2] :: PredicateV2 -> Required 1 (Value Int64)
+ Auth.Biscuit.Proto: [$sel:nextKey:SignedBlock] :: SignedBlock -> Required 2 (Message PublicKey)
+ Auth.Biscuit.Proto: [$sel:ops:ExpressionV2] :: ExpressionV2 -> Repeated 1 (Message Op)
+ Auth.Biscuit.Proto: [$sel:payload:ThirdPartyBlockContents] :: ThirdPartyBlockContents -> Required 1 (Value ByteString)
+ Auth.Biscuit.Proto: [$sel:pkTable:ThirdPartyBlockRequest] :: ThirdPartyBlockRequest -> Repeated 2 (Message PublicKey)
+ Auth.Biscuit.Proto: [$sel:pksTable:Block] :: Block -> Repeated 8 (Message PublicKey)
+ Auth.Biscuit.Proto: [$sel:predicate:FactV2] :: FactV2 -> Required 1 (Message PredicateV2)
+ Auth.Biscuit.Proto: [$sel:previousPk:ThirdPartyBlockRequest] :: ThirdPartyBlockRequest -> Required 1 (Message PublicKey)
+ Auth.Biscuit.Proto: [$sel:proof:Biscuit] :: Biscuit -> Required 4 (Message Proof)
+ Auth.Biscuit.Proto: [$sel:publicKey:ExternalSig] :: ExternalSig -> Required 2 (Message PublicKey)
+ Auth.Biscuit.Proto: [$sel:queries:CheckV2] :: CheckV2 -> Repeated 1 (Message RuleV2)
+ Auth.Biscuit.Proto: [$sel:rootKeyId:Biscuit] :: Biscuit -> Optional 1 (Value Int32)
+ Auth.Biscuit.Proto: [$sel:rules_v2:Block] :: Block -> Repeated 5 (Message RuleV2)
+ Auth.Biscuit.Proto: [$sel:scope:Block] :: Block -> Repeated 7 (Message Scope)
+ Auth.Biscuit.Proto: [$sel:scope:RuleV2] :: RuleV2 -> Repeated 4 (Message Scope)
+ Auth.Biscuit.Proto: [$sel:set:TermSet] :: TermSet -> Repeated 1 (Message TermV2)
+ Auth.Biscuit.Proto: [$sel:signature:ExternalSig] :: ExternalSig -> Required 1 (Value ByteString)
+ Auth.Biscuit.Proto: [$sel:signature:SignedBlock] :: SignedBlock -> Required 3 (Value ByteString)
+ Auth.Biscuit.Proto: [$sel:symbols:Block] :: Block -> Repeated 1 (Value Text)
+ Auth.Biscuit.Proto: [$sel:terms:PredicateV2] :: PredicateV2 -> Repeated 2 (Message TermV2)
+ Auth.Biscuit.Proto: [$sel:version:Block] :: Block -> Optional 3 (Value Int32)
- Auth.Biscuit: ParserConfig :: BiscuitEncoding -> (Set ByteString -> m Bool) -> (Maybe Int -> PublicKey) -> ParserConfig (m :: Type -> Type)
+ Auth.Biscuit: ParserConfig :: BiscuitEncoding -> (Set ByteString -> m Bool) -> (Maybe Int -> PublicKey) -> ParserConfig m
- Auth.Biscuit: [encoding] :: ParserConfig (m :: Type -> Type) -> BiscuitEncoding
+ Auth.Biscuit: [encoding] :: ParserConfig m -> BiscuitEncoding
- Auth.Biscuit: [getPublicKey] :: ParserConfig (m :: Type -> Type) -> Maybe Int -> PublicKey
+ Auth.Biscuit: [getPublicKey] :: ParserConfig m -> Maybe Int -> PublicKey
- Auth.Biscuit: [isRevoked] :: ParserConfig (m :: Type -> Type) -> Set ByteString -> m Bool
+ Auth.Biscuit: [isRevoked] :: ParserConfig m -> Set ByteString -> m Bool
- Auth.Biscuit: class ToTerm t (inSet :: IsWithinSet) (pof :: PredicateOrFact)
+ Auth.Biscuit: class ToTerm t inSet pof
- Auth.Biscuit: data ParserConfig (m :: Type -> Type)
+ Auth.Biscuit: data ParserConfig m
- Auth.Biscuit.Datalog.AST: AuthorizerPolicy :: Policy' evalCtx ctx -> AuthorizerElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: AuthorizerPolicy :: Policy' evalCtx ctx -> AuthorizerElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: BlockCheck :: Check' evalCtx ctx -> BlockElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: BlockCheck :: Check' evalCtx ctx -> BlockElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: BlockComment :: BlockElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: BlockComment :: BlockElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: BlockElement :: BlockElement' evalCtx ctx -> AuthorizerElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: BlockElement :: BlockElement' evalCtx ctx -> AuthorizerElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: BlockFact :: Predicate' 'InFact ctx -> BlockElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: BlockFact :: Predicate' 'InFact ctx -> BlockElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: BlockRule :: Rule' evalCtx ctx -> BlockElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: BlockRule :: Rule' evalCtx ctx -> BlockElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: Check :: Query' evalCtx ctx -> CheckKind -> Check' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: Check :: Query' evalCtx ctx -> CheckKind -> Check' evalCtx ctx
- Auth.Biscuit.Datalog.AST: QueryItem :: [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' evalCtx ctx) -> QueryItem' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: QueryItem :: [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' evalCtx ctx) -> QueryItem' evalCtx ctx
- Auth.Biscuit.Datalog.AST: Rule :: Predicate' 'InPredicate ctx -> [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' evalCtx ctx) -> Rule' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: Rule :: Predicate' 'InPredicate ctx -> [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' evalCtx ctx) -> Rule' evalCtx ctx
- Auth.Biscuit.Datalog.AST: [body] :: Rule' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> [Predicate' 'InPredicate ctx]
+ Auth.Biscuit.Datalog.AST: [body] :: Rule' evalCtx ctx -> [Predicate' 'InPredicate ctx]
- Auth.Biscuit.Datalog.AST: [cKind] :: Check' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> CheckKind
+ Auth.Biscuit.Datalog.AST: [cKind] :: Check' evalCtx ctx -> CheckKind
- Auth.Biscuit.Datalog.AST: [cQueries] :: Check' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> Query' evalCtx ctx
+ Auth.Biscuit.Datalog.AST: [cQueries] :: Check' evalCtx ctx -> Query' evalCtx ctx
- Auth.Biscuit.Datalog.AST: [expressions] :: Rule' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> [Expression' ctx]
+ Auth.Biscuit.Datalog.AST: [expressions] :: Rule' evalCtx ctx -> [Expression' ctx]
- Auth.Biscuit.Datalog.AST: [qBody] :: QueryItem' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> [Predicate' 'InPredicate ctx]
+ Auth.Biscuit.Datalog.AST: [qBody] :: QueryItem' evalCtx ctx -> [Predicate' 'InPredicate ctx]
- Auth.Biscuit.Datalog.AST: [qExpressions] :: QueryItem' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> [Expression' ctx]
+ Auth.Biscuit.Datalog.AST: [qExpressions] :: QueryItem' evalCtx ctx -> [Expression' ctx]
- Auth.Biscuit.Datalog.AST: [qScope] :: QueryItem' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> Set (RuleScope' evalCtx ctx)
+ Auth.Biscuit.Datalog.AST: [qScope] :: QueryItem' evalCtx ctx -> Set (RuleScope' evalCtx ctx)
- Auth.Biscuit.Datalog.AST: [rhead] :: Rule' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> Predicate' 'InPredicate ctx
+ Auth.Biscuit.Datalog.AST: [rhead] :: Rule' evalCtx ctx -> Predicate' 'InPredicate ctx
- Auth.Biscuit.Datalog.AST: [scope] :: Rule' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) -> Set (RuleScope' evalCtx ctx)
+ Auth.Biscuit.Datalog.AST: [scope] :: Rule' evalCtx ctx -> Set (RuleScope' evalCtx ctx)
- Auth.Biscuit.Datalog.AST: class ToEvaluation (elem :: EvaluationContext -> DatalogContext -> Type)
+ Auth.Biscuit.Datalog.AST: class ToEvaluation elem
- Auth.Biscuit.Datalog.AST: class ToTerm t (inSet :: IsWithinSet) (pof :: PredicateOrFact)
+ Auth.Biscuit.Datalog.AST: class ToTerm t inSet pof
- Auth.Biscuit.Datalog.AST: data AuthorizerElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: data AuthorizerElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: data BlockElement' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: data BlockElement' evalCtx ctx
- Auth.Biscuit.Datalog.AST: data Check' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: data Check' evalCtx ctx
- Auth.Biscuit.Datalog.AST: data QueryItem' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: data QueryItem' evalCtx ctx
- Auth.Biscuit.Datalog.AST: data Rule' (evalCtx :: EvaluationContext) (ctx :: DatalogContext)
+ Auth.Biscuit.Datalog.AST: data Rule' evalCtx ctx
- Auth.Biscuit.Datalog.AST: elementToAuthorizer :: forall (evalCtx :: EvaluationContext) (ctx :: DatalogContext). AuthorizerElement' evalCtx ctx -> Authorizer' evalCtx ctx
+ Auth.Biscuit.Datalog.AST: elementToAuthorizer :: AuthorizerElement' evalCtx ctx -> Authorizer' evalCtx ctx
- Auth.Biscuit.Datalog.AST: elementToBlock :: forall (evalCtx :: EvaluationContext) (ctx :: DatalogContext). BlockElement' evalCtx ctx -> Block' evalCtx ctx
+ Auth.Biscuit.Datalog.AST: elementToBlock :: BlockElement' evalCtx ctx -> Block' evalCtx ctx
- Auth.Biscuit.Datalog.AST: extractVariables :: forall (ctx :: DatalogContext). [Predicate' 'InPredicate ctx] -> Set Text
+ Auth.Biscuit.Datalog.AST: extractVariables :: [Predicate' 'InPredicate ctx] -> Set Text
- Auth.Biscuit.Datalog.AST: isCheckOne :: forall (evalCtx :: EvaluationContext) (ctx :: DatalogContext). Check' evalCtx ctx -> Bool
+ Auth.Biscuit.Datalog.AST: isCheckOne :: Check' evalCtx ctx -> Bool
- Auth.Biscuit.Datalog.AST: makeQueryItem :: forall (ctx :: DatalogContext). [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' 'Repr ctx) -> Validation (NonEmpty Text) (QueryItem' 'Repr ctx)
+ Auth.Biscuit.Datalog.AST: makeQueryItem :: [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' 'Repr ctx) -> Validation (NonEmpty Text) (QueryItem' 'Repr ctx)
- Auth.Biscuit.Datalog.AST: makeRule :: forall (ctx :: DatalogContext). Predicate' 'InPredicate ctx -> [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' 'Repr ctx) -> Validation (NonEmpty Text) (Rule' 'Repr ctx)
+ Auth.Biscuit.Datalog.AST: makeRule :: Predicate' 'InPredicate ctx -> [Predicate' 'InPredicate ctx] -> [Expression' ctx] -> Set (RuleScope' 'Repr ctx) -> Validation (NonEmpty Text) (Rule' 'Repr ctx)
- Auth.Biscuit.Datalog.AST: type Policy' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) = (PolicyType, Query' evalCtx ctx)
+ Auth.Biscuit.Datalog.AST: type Policy' evalCtx ctx = (PolicyType, Query' evalCtx ctx)
- Auth.Biscuit.Datalog.AST: type Query' (evalCtx :: EvaluationContext) (ctx :: DatalogContext) = [QueryItem' evalCtx ctx]
+ Auth.Biscuit.Datalog.AST: type Query' evalCtx ctx = [QueryItem' evalCtx ctx]
- Auth.Biscuit.Datalog.Parser: predicateParser' :: forall (pof :: PredicateOrFact). Parser (Term' 'NotWithinSet pof 'WithSlices) -> Parser (Predicate' pof 'WithSlices)
+ Auth.Biscuit.Datalog.Parser: predicateParser' :: Parser (Term' 'NotWithinSet pof 'WithSlices) -> Parser (Predicate' pof 'WithSlices)
- Auth.Biscuit.Datalog.Parser: termParser :: forall (inSet :: IsWithinSet) (pof :: PredicateOrFact). Parser (VariableType inSet pof) -> Parser (SetType inSet 'WithSlices) -> Parser (Term' inSet pof 'WithSlices)
+ Auth.Biscuit.Datalog.Parser: termParser :: Parser (VariableType inSet pof) -> Parser (SetType inSet 'WithSlices) -> Parser (Term' inSet pof 'WithSlices)
- Auth.Biscuit.Token: ParserConfig :: BiscuitEncoding -> (Set ByteString -> m Bool) -> (Maybe Int -> PublicKey) -> ParserConfig (m :: Type -> Type)
+ Auth.Biscuit.Token: ParserConfig :: BiscuitEncoding -> (Set ByteString -> m Bool) -> (Maybe Int -> PublicKey) -> ParserConfig m
- Auth.Biscuit.Token: [encoding] :: ParserConfig (m :: Type -> Type) -> BiscuitEncoding
+ Auth.Biscuit.Token: [encoding] :: ParserConfig m -> BiscuitEncoding
- Auth.Biscuit.Token: [getPublicKey] :: ParserConfig (m :: Type -> Type) -> Maybe Int -> PublicKey
+ Auth.Biscuit.Token: [getPublicKey] :: ParserConfig m -> Maybe Int -> PublicKey
- Auth.Biscuit.Token: [isRevoked] :: ParserConfig (m :: Type -> Type) -> Set ByteString -> m Bool
+ Auth.Biscuit.Token: [isRevoked] :: ParserConfig m -> Set ByteString -> m Bool
- Auth.Biscuit.Token: data ParserConfig (m :: Type -> Type)
+ Auth.Biscuit.Token: data ParserConfig m

Files

ChangeLog.md view
@@ -1,10 +1,14 @@ # Changelog for biscuit-haskell +## 0.4.0.1++- force datalog evaluation to WHNF when running the maxtime watchdog+ ## 0.4.0.0  - abort authorization on evaluation error as mandated by the spec - use utf8 byte count in `{string}.length()` as mandated by the spec-- fix security issue with third-party blocks public key interning+- fix security issue with third-party blocks public key interning, see [advisory](https://github.com/biscuit-auth/biscuit/security/advisories/GHSA-rgqv-mwc3-c78m)  ## 0.3.0.1 
biscuit-haskell.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.0  name:           biscuit-haskell-version:        0.4.0.0+version:        0.4.0.1 category:       Security synopsis:       Library support for the Biscuit security token description:    Please see the README on GitHub at <https://github.com/biscuit-auth/biscuit-haskell#readme>@@ -49,7 +49,7 @@   build-depends:     base                 >= 4.7 && <5,     async                ^>= 2.2,-    base16               >= 0.3 && <2.0,+    base16               >= 0.3 && <2,     bytestring           >= 0.10 && <0.12,     text                 >= 1.2 && <3,     containers           ^>= 0.6,@@ -82,6 +82,8 @@       Spec.ScopedExecutor       Spec.Verification       Paths_biscuit_haskell+  autogen-modules:+      Paths_biscuit_haskell   hs-source-dirs:       test   ghc-options: -threaded -rtsopts -with-rtsopts=-N@@ -89,7 +91,7 @@       async     , aeson     , base >=4.7 && <5-    , base16 >=0.3 && <2.0+    , base16 >=0.3 && <2     , base64     , biscuit-haskell     , bytestring
src/Auth/Biscuit/Datalog/ScopedExecutor.hs view
@@ -25,6 +25,7 @@   , collectWorld   ) where +import           Control.Exception             (evaluate) import           Control.Monad                 (unless, when) import           Control.Monad.State           (StateT (..), evalStateT, get,                                                 gets, lift, put)@@ -111,7 +112,7 @@                       -- ^ A authorizer                       -> IO (Either ExecutionError AuthorizationSuccess) runAuthorizerWithLimits l@Limits{..} authority blocks v = do-  resultOrTimeout <- timer maxTime $ pure $ runAuthorizerNoTimeout l authority blocks v+  resultOrTimeout <- timer maxTime $ evaluate $ runAuthorizerNoTimeout l authority blocks v   pure $ case resultOrTimeout of     Nothing -> Left Timeout     Just r  -> r@@ -160,7 +161,12 @@                        -> BlockWithRevocationId                        -> [BlockWithRevocationId]                        -> Authorizer-                       -> Either ExecutionError AuthorizationSuccess+                       -> -- NB: The return type here requires all checks and policies to be checked before+                          -- the value can be forced to WHNF (we can only decide between Left _ and Right _+                          -- based on the result of these checks). The implementation of the maxTime limit+                          -- depends on this property, if this type changes the property will need to be+                          -- preserved or the maxTime limit respected some other way+                          Either ExecutionError AuthorizationSuccess runAuthorizerNoTimeout limits authority blocks authorizer = do   let fst' (a,_,_) = a       trd' (_,_,c) = c