pam-0.2.0.0: src/System/Posix/PAM/Types.hs
module System.Posix.PAM.Types where
import Foreign.C
import Foreign.Ptr
data PamMessage = PamMessage { pmString :: String
, pmStyle :: PamStyle
}
deriving (Show, Eq)
data PamStyle = PamPromptEchoOff
| PamPromptEchoOn
| PamErrorMsg
| PamTextInfo
deriving (Show, Eq)
{- | http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/adg-interface-of-app-expected.html#adg-pam_conv
- resp_code member in C sturct is unused and should be set to zero, that's why there is no code field in the haskell data type
-}
data PamResponse = PamResponse String
deriving (Show, Eq)
data PamRetCode = PamSuccess
| PamRetCode Int
deriving (Show, Eq)
data PamFlag = PamSilent
| PamDisallowNullAuthTok
| PamEstablishCred
| PamDeleteCred
| PamReinitializeCred
| PamRefreshCred
| PamChangeExpiredAuthTok
| PamNone
deriving (Show, Eq, Enum)
type PamConv = Ptr () -> [PamMessage] -> IO [PamResponse]
data PamHandle = PamHandle { cPamHandle :: Ptr ()
, cPamCallback :: FunPtr (CInt -> Ptr (Ptr ()) -> Ptr (Ptr ()) -> Ptr () -> IO CInt)
}
deriving (Show, Eq)