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