commsec 0.3 → 0.3.1
raw patch · 2 files changed
+9/−6 lines, 2 files
Files
- Network/CommSec.hs +8/−5
- commsec.cabal +1/−1
Network/CommSec.hs view
@@ -43,6 +43,7 @@ = Conn { inCtx :: MVar InContext , outCtx :: MVar OutContext , socket :: Socket+ , socketAddr :: SockAddr -- ^ address of remote } pMVar :: MVar v -> v -> IO ()@@ -92,8 +93,10 @@ allocaBytes pktLen $ \pktPtr -> do let ctPtr = pktPtr `plusPtr` sizeTagLen pokeBE32 pktPtr (fromIntegral ctLen)- modifyMVar_ outCtx $ \oCtx -> encodePtr oCtx ptPtr ctPtr ptLen- sendBytesPtr socket pktPtr pktLen+ modifyMVar_ outCtx $ \oCtx -> do+ r <- encodePtr oCtx ptPtr ctPtr ptLen+ sendBytesPtr socket pktPtr pktLen+ return r -- |Blocks till it receives a valid message, placing the resulting plaintext -- in the provided buffer. If the incoming message is larger that the@@ -193,7 +196,7 @@ Net.setSocketOption sock Net.ReuseAddr 1 Net.bind sock sockaddr Net.listen sock 10- socket <- fst `fmap` Net.accept sock+ (socket,socketAddr) <- Net.accept sock Net.setSocketOption socket Net.NoDelay 1 Net.close sock inCtx <- create iCtx@@ -204,14 +207,14 @@ doConnect create s hn p | B.length s < 16 = error "Invalid input entropy" | otherwise = do- sockaddr <- resolve hn p+ socketAddr <- resolve hn p let ent = expandSecret s 64 k2 = B.take 32 ent k1 = B.drop 32 ent iCtx = newInContext k1 Sequential oCtx = newOutContext k2 socket <- Net.socket Net.AF_INET Net.Stream Net.defaultProtocol- Net.connect socket sockaddr+ Net.connect socket socketAddr Net.setSocketOption socket Net.NoDelay 1 Net.setSocketOption socket Net.ReuseAddr 1 inCtx <- create iCtx
commsec.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: commsec-version: 0.3+version: 0.3.1 synopsis: Provide communications security using symmetric ephemeral keys description: This package provides confidentiallity, integrity and replay detection. Users must