The sasl package

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Example programs

SCRAM-SHA-1 Client sample

scramSha1sv.txt

 r=00DEADBEEF007658cddf-0e44-4de2-87df-4132bce97f4,s=cGVwcGVy,i=4492
 v=q0+IZgUtQTHYItaurlNyET1imLI=
 success

examples/clientS.hs

extensions

 import "monads-tf" Control.Monad.State
 import Data.Pipe
 import Data.Pipe.ByteString
 import System.IO
 import Network.Sasl
 import Network.Sasl.ScramSha1.Client

 import qualified Data.ByteString as BS

 data St = St [(BS.ByteString, BS.ByteString)] deriving Show

 instance SaslState St where
 	getSaslState (St s) = s
 	putSaslState s _ = St s

 serverFile :: String
 serverFile = "examples/scramSha1sv.txt"

 main :: IO ()
 main = do
 	let	(_, (_, p)) = sasl
 	r <- runPipe (fromFileLn serverFile =$= input =$= p =$= toHandleLn stdout)
 		`runStateT` St [
 			("username", "yoshikuni"),
 			("password", "password"),
 			("cnonce", "00DEADBEEF00") ]
 	print r

 input :: Pipe BS.ByteString (Either Success BS.ByteString) (StateT St IO) ()
 input = await >>= \mbs -> case mbs of
 	Just "success" -> yield . Left $ Success Nothing
 	Just ch -> yield (Right ch) >> input
 	_ -> return ()

SCRAM-SHA-1 Server sample

scramSha1cl.txt

 n,,n=yoshikuni,r=00DEADBEEF00
 c=biws,r=00DEADBEEF007658cddf-0e44-4de2-87df-4132bce97f4,p=zup7ghwpAW43cP4Xu3YZTNnHo0g=

examples/serverS.hs

extensions

 import "monads-tf" Control.Monad.State
 import Data.Pipe
 import Data.Pipe.ByteString
 import System.IO
 import Network.Sasl
 import Network.Sasl.ScramSha1.Server

 import qualified Data.ByteString as BS

 data St = St [(BS.ByteString, BS.ByteString)] deriving Show

 instance SaslState St where
 	getSaslState (St s) = s
 	putSaslState s _ = St s

 clientFile :: String
 clientFile = "examples/scramSha1cl.txt"

 main :: IO ()
 main = do
 	let	slt = "pepper"
 		i = 4492
 		(stk, svk) = salt "password" slt i
 		(_, (_, p)) = sasl $ \"yoshikuni" -> return (slt, stk, svk, i)
 	r <- runPipe (fromFileLn clientFile =$= p =$= output =$= toHandleLn stdout)
 		`runStateT` St [("snonce", "7658cddf-0e44-4de2-87df-4132bce97f4")]
 	print r

 output :: Pipe (Either Success BS.ByteString) BS.ByteString (StateT St IO) ()
 output = await >>= \mch -> case mch of
 	Just (Left (Success Nothing)) -> yield "success"
 	Just (Left (Success (Just bs))) -> yield bs
 	Just (Right bs) -> yield bs >> output
 	_ -> return ()

See examples directory for more examples.

Properties

Versions0.0.0.0, 0.0.0.0, 0.0.0.1, 0.0.0.2
Change logNone available
Dependenciesbase (==4.*), base64-bytestring (==1.0.*), bytestring (==0.10.*), cryptohash (==0.11.*), monads-tf (==0.1.*), papillon (==0.1.*), simple-pipe (==0.0.0.*) [details]
LicenseBSD3
AuthorYoshikuni Jujo <PAF01143@nifty.ne.jp>
MaintainerYoshikuni Jujo <PAF01143@nifty.ne.jp>
CategoryNetwork
Home pagehttps://github.com/YoshikuniJujo/sasl/wiki
Source repositoryhead: git clone git://github.com/YoshikuniJujo/sasl.git
this: git clone git://github.com/YoshikuniJujo/sasl.git(tag sasl-0.0.0.0)
UploadedFri Aug 15 06:43:41 UTC 2014 by YoshikuniJujo

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees