The sasl package

[Tags: bsd3, library]

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.1, 0.0.0.2 (info)
Dependenciesbase (==4.*), base64-bytestring (==1.0.*), bytestring (==0.10.*), cryptohash (==0.11.*), monads-tf (==0.1.*), papillon (==0.1.*), simple-pipe (==0.0.0.*)
LicenseBSD3
AuthorYoshikuni Jujo <PAF01143@nifty.ne.jp>
MaintainerYoshikuni Jujo <PAF01143@nifty.ne.jp>
StabilityExperimental
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.1)
UploadedFri Aug 15 14:25:20 UTC 2014 by YoshikuniJujo
Downloads179 total (21 in last 30 days)
StatusDocs available [build log]
Successful builds reported [all 1 reports]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees