This module implements Disjunction Category labels.
It is designed to be used by untrustworthy code.
Technically, the module exports the same interface as
DCLabel.Trustworthy except for the function
createPriv
.
- class Ord a => Lattice a where
- data Label a
- data Principal
- principal :: String -> Principal
- isPrincipal :: Principal -> Label Principal -> Bool
- labelToList :: Label Principal -> [[Principal]]
- class DisjunctionOf a b c | a b -> c where
- (.\/.) :: a -> b -> c
- class ConjunctionOf a b c | a b -> c where
- (./\.) :: a -> b -> c
- (<>) :: Label a
- singleton :: Singleton a b => a -> Label b
- data DCLabel a
- integrityDC :: DCLabel Principal -> Label Principal
- secrecyDC :: DCLabel Principal -> Label Principal
- newDC :: Label a -> Label a -> DCLabel a
- data Priv a
- canflowto_p :: Lattice (DCLabel a) => Priv a -> DCLabel a -> DCLabel a -> Bool
- own :: Ord a => Priv a -> DCLabel a -> Bool
- privToLabel :: Priv a -> DCLabel a
Documentation
Data type to represent labels, i.e. conjunctions of disjunctions.
ConjunctionOf String String (Label Principal) | Instances usng strings and not principals |
ConjunctionOf Principal Principal (Label Principal) | |
DisjunctionOf String String (Label Principal) | |
DisjunctionOf Principal Principal (Label Principal) | |
ConjunctionOf String (Label Principal) (Label Principal) | |
ConjunctionOf Principal (Label Principal) (Label Principal) | |
DisjunctionOf String (Label Principal) (Label Principal) | |
DisjunctionOf Principal (Label Principal) (Label Principal) | |
(Ord a, Eq a) => Eq (Label a) | |
Ord a => Ord (Label a) | |
Show a => Show (Label a) | |
Arbitrary a => Arbitrary (Label a) | |
ConjunctionOf (Label Principal) String (Label Principal) | |
ConjunctionOf (Label Principal) Principal (Label Principal) | |
DisjunctionOf (Label Principal) String (Label Principal) | |
DisjunctionOf (Label Principal) Principal (Label Principal) | |
ConjunctionOf (Label Principal) (Label Principal) (Label Principal) | |
DisjunctionOf (Label Principal) (Label Principal) (Label Principal) |
It represents principals in the labels.
Eq Principal | |
Ord Principal | |
Read Principal | |
Show Principal | |
Arbitrary Principal | |
Singleton String Principal | |
Singleton Principal Principal | |
ConjunctionOf String String (Label Principal) | Instances usng strings and not principals |
ConjunctionOf Principal Principal (Label Principal) | |
DisjunctionOf String String (Label Principal) | |
DisjunctionOf Principal Principal (Label Principal) | |
ConjunctionOf String (Label Principal) (Label Principal) | |
ConjunctionOf Principal (Label Principal) (Label Principal) | |
DisjunctionOf String (Label Principal) (Label Principal) | |
DisjunctionOf Principal (Label Principal) (Label Principal) | |
ConjunctionOf (Label Principal) String (Label Principal) | |
ConjunctionOf (Label Principal) Principal (Label Principal) | |
DisjunctionOf (Label Principal) String (Label Principal) | |
DisjunctionOf (Label Principal) Principal (Label Principal) | |
ConjunctionOf (Label Principal) (Label Principal) (Label Principal) | |
DisjunctionOf (Label Principal) (Label Principal) (Label Principal) |
isPrincipal :: Principal -> Label Principal -> BoolSource
It checks that a principal appears in a label.
labelToList :: Label Principal -> [[Principal]]Source
It converts a label into a list.
class DisjunctionOf a b c | a b -> c whereSource
Class used to create disjunctions
class ConjunctionOf a b c | a b -> c whereSource
Class used to create conjunctions
ConjunctionOf String String (Label Principal) | Instances usng strings and not principals |
ConjunctionOf Principal Principal (Label Principal) | |
ConjunctionOf String (Label Principal) (Label Principal) | |
ConjunctionOf Principal (Label Principal) (Label Principal) | |
ConjunctionOf (Label Principal) String (Label Principal) | |
ConjunctionOf (Label Principal) Principal (Label Principal) | |
ConjunctionOf (Label Principal) (Label Principal) (Label Principal) |
singleton :: Singleton a b => a -> Label bSource
It creates a singleton label, i.e. a label with only one principal.
It represents disjunction category labels
integrityDC :: DCLabel Principal -> Label PrincipalSource
It extracts the label corresponding to the integrity component of a DCLabel
secrecyDC :: DCLabel Principal -> Label PrincipalSource
It extracts the label corresponding to the secrecy component of a DCLabel
own :: Ord a => Priv a -> DCLabel a -> BoolSource
It creates a DCLabel
based on two labels.
It checks if a privilege is owned
privToLabel :: Priv a -> DCLabel aSource
It returns the privilege in the form of a label.