Safe Haskell | Safe-Inferred |
---|
- type Label = String
- data Faceted a
- makePrivate :: Label -> a -> Faceted a
- makeFaceted :: Label -> Faceted a -> Faceted a -> Faceted a
- makePublic :: a -> Faceted a
- bottom :: Faceted a
- data FIORef a
- newFIORef :: Faceted a -> FIO (FIORef a)
- readFIORef :: FIORef a -> FIO (Faceted a)
- writeFIORef :: FIORef a -> Faceted a -> FIO ()
- type View = [Label]
- data FHandle
- openFileF :: View -> FilePath -> IOMode -> FIO FHandle
- hPutCharF :: FHandle -> Faceted Char -> FIO ()
- hGetCharF :: FHandle -> FIO (Faceted Char)
Documentation
A security label is any string. Labels need not be secrets; they may be readable strings. Information flow security is ensured by a combination of the type system and dynamic checks.
Type 'Faceted a' represents (possibly) faceted values.
? x : y ====> Faceted k x y
Monad Faceted | Monad: Like applicative, but even more powerful. |
Functor Faceted | Functor: For when the function is pure but the argument has facets. |
Typeable1 Faceted | |
Applicative Faceted | Applicative: For when the function and argument both have facets. |
Eq a => Eq (Faceted a) | |
Show a => Show (Faceted a) |
makePrivate :: Label -> a -> Faceted aSource
? x : bottom ====> makePrivate k x
makePublic :: a -> Faceted aSource
x ==> Raw x ===> makePublic x
readFIORef :: FIORef a -> FIO (Faceted a)Source
Read an FIORef
writeFIORef :: FIORef a -> Faceted a -> FIO ()Source
Write an FIORef
A _view_ is any set of labels. In enforcing information flow security Each view may see a different value.