Network.Protocol.SASL.GNU
Contents
- 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
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 ProgressSource
Run the current callback; the property indicates what action the callback is expected to perform.
Mechanisms
Constructors
Mechanism ByteString |
clientMechanisms :: SASL [Mechanism]Source
A list of Mechanism
s supported by the libgsasl
client.
clientSupports :: Mechanism -> SASL BoolSource
Whether there is client-side support for a specified Mechanism
.
serverMechanisms :: SASL [Mechanism]Source
A list of Mechanism
s supported by the libgsasl
server.
serverSupports :: Mechanism -> SASL BoolSource
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 MechanismSource
The name of the session's SASL mechanism.
Session Properties
Constructors
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 ByteStringSource
Encode data according to the negotiated SASL mechanism. This might mean the data is integrity or privacy protected.
decode :: ByteString -> Session ByteStringSource
Decode data according to the negotiated SASL mechanism. This might mean the data is integrity or privacy protected.
Error handling
Constructors
Bundled codecs
md5 :: ByteString -> ByteStringSource
sha1 :: ByteString -> ByteStringSource
Arguments
:: ByteString | Key |
-> ByteString | Input data |
-> ByteString |
Arguments
:: ByteString | Key |
-> ByteString | Input data |
-> ByteString |
nonce :: Integer -> IO ByteStringSource
Returns unpredictable data of a given size
random :: Integer -> IO ByteStringSource
Returns cryptographically strong random data of a given size