Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- headerVersion :: (Integer, Integer, Integer)
- libraryVersion :: IO (Integer, Integer, Integer)
- checkVersion :: IO Bool
- data SASL a
- runSASL :: SASL a -> IO a
- setCallback :: (Property -> Session Progress) -> SASL ()
- runCallback :: Property -> Session Progress
- newtype Mechanism = Mechanism ByteString
- clientMechanisms :: SASL [Mechanism]
- clientSupports :: Mechanism -> SASL Bool
- clientSuggestMechanism :: [Mechanism] -> SASL (Maybe Mechanism)
- serverMechanisms :: SASL [Mechanism]
- serverSupports :: Mechanism -> SASL Bool
- data Session a
- runClient :: Mechanism -> Session a -> SASL (Either Error a)
- runServer :: Mechanism -> Session a -> SASL (Either Error a)
- mechanismName :: Session Mechanism
- data Property
- = PropertyAuthID
- | PropertyAuthzID
- | PropertyPassword
- | PropertyAnonymousToken
- | PropertyService
- | PropertyHostname
- | PropertyGSSAPIDisplayName
- | PropertyPasscode
- | PropertySuggestedPIN
- | PropertyPIN
- | PropertyRealm
- | PropertyDigestMD5HashedPassword
- | PropertyQOPS
- | PropertyQOP
- | PropertyScramIter
- | PropertyScramSalt
- | PropertyScramSaltedPassword
- | ValidateSimple
- | ValidateExternal
- | ValidateAnonymous
- | ValidateGSSAPI
- | ValidateSecurID
- setProperty :: Property -> ByteString -> Session ()
- getProperty :: Property -> Session (Maybe ByteString)
- getPropertyFast :: Property -> Session (Maybe ByteString)
- data Progress
- step :: ByteString -> Session (ByteString, Progress)
- step64 :: ByteString -> Session (ByteString, Progress)
- encode :: ByteString -> Session ByteString
- decode :: ByteString -> Session ByteString
- data Error
- = UnknownMechanism
- | MechanismCalledTooManyTimes
- | MallocError
- | Base64Error
- | CryptoError
- | SASLPrepError
- | MechanismParseError
- | AuthenticationError
- | IntegrityError
- | NoClientCode
- | NoServerCode
- | NoCallback
- | NoAnonymousToken
- | NoAuthID
- | NoAuthzID
- | NoPassword
- | NoPasscode
- | NoPIN
- | NoService
- | NoHostname
- | GSSAPI_ReleaseBufferError
- | GSSAPI_ImportNameError
- | GSSAPI_InitSecContextError
- | GSSAPI_AcceptSecContextError
- | GSSAPI_UnwrapError
- | GSSAPI_WrapError
- | GSSAPI_AquireCredError
- | GSSAPI_DisplayNameError
- | GSSAPI_UnsupportedProtectionError
- | GSSAPI_EncapsulateTokenError
- | GSSAPI_DecapsulateTokenError
- | GSSAPI_InquireMechForSASLNameError
- | GSSAPI_TestOIDSetMemberError
- | GSSAPI_ReleaseOIDSetError
- | KerberosV5_InitError
- | KerberosV5_InternalError
- | SecurID_ServerNeedAdditionalPasscode
- | SecurID_ServerNeedNewPIN
- catch :: Session a -> (Error -> Session a) -> Session a
- handle :: (Error -> Session a) -> Session a -> Session a
- try :: Session a -> Session (Either Error a)
- throw :: Error -> Session a
- toBase64 :: ByteString -> ByteString
- fromBase64 :: ByteString -> ByteString
- md5 :: ByteString -> ByteString
- sha1 :: ByteString -> ByteString
- hmacMD5 :: ByteString -> ByteString -> ByteString
- hmacSHA1 :: ByteString -> ByteString -> ByteString
- nonce :: Integer -> IO ByteString
- random :: Integer -> IO ByteString
Library Information
headerVersion :: (Integer, Integer, Integer) Source #
Which version of gsasl.h
this module was compiled against
libraryVersion :: IO (Integer, Integer, Integer) Source #
Which version of libgsasl.so
is loaded
checkVersion :: IO Bool Source #
Whether the header and library versions are compatible
SASL Contexts
setCallback :: (Property -> Session Progress) -> SASL () Source #
Set the current SASL callback. The callback will be used by mechanisms to discover various parameters, such as usernames and passwords.
runCallback :: Property -> Session Progress Source #
Run the current callback; the property indicates what action the callback is expected to perform.
Mechanisms
Mechanism ByteString |
clientSupports :: Mechanism -> SASL Bool Source #
Whether there is client-side support for a specified Mechanism
.
serverSupports :: Mechanism -> SASL Bool Source #
Whether there is server-side support for a specified Mechanism
.
SASL Sessions
runClient :: Mechanism -> Session a -> SASL (Either Error a) Source #
Run a session using the libgsasl
client.
runServer :: Mechanism -> Session a -> SASL (Either Error a) Source #
Run a session using the libgsasl
server.
mechanismName :: Session Mechanism Source #
The name of the session's SASL mechanism.
Session Properties
setProperty :: Property -> ByteString -> Session () Source #
Store some data in the session for the given property. The data must
be NULL
-terminated.
getProperty :: Property -> Session (Maybe ByteString) Source #
Retrieve the data stored in the session for the given property, possibly invoking the current callback to get the value.
getPropertyFast :: Property -> Session (Maybe ByteString) Source #
Retrieve the data stored in the session for the given property, without invoking the current callback.
Session IO
step :: ByteString -> Session (ByteString, Progress) Source #
Perform one step of SASL authentication. This reads data from the other end, processes it (potentially running the callback), and returns data to be sent back.
Also returns NeedsMore
if authentication is not yet complete.
step64 :: ByteString -> Session (ByteString, Progress) Source #
A simple wrapper around step
which uses base64 to decode the input
and encode the output.
encode :: ByteString -> Session ByteString Source #
Encode data according to the negotiated SASL mechanism. This might mean the data is integrity or privacy protected.
decode :: ByteString -> Session ByteString Source #
Decode data according to the negotiated SASL mechanism. This might mean the data is integrity or privacy protected.
Error handling
Bundled codecs
fromBase64 :: ByteString -> ByteString Source #