put server/client in core
This commit is contained in:
parent
f4cc8999db
commit
353783abdf
5 changed files with 17 additions and 21 deletions
|
@ -25,17 +25,12 @@ import Network.TLS.Cipher
|
|||
import Network.TLS.Compression
|
||||
import Network.TLS.Struct
|
||||
import Network.TLS.State
|
||||
import Network.TLS.SRandom
|
||||
import Network.TLS.Core
|
||||
import qualified Data.ByteString as B
|
||||
import qualified Data.ByteString.Lazy as L
|
||||
import System.IO (Handle, hFlush)
|
||||
import System.IO (hFlush)
|
||||
import Data.List (find)
|
||||
|
||||
client :: MonadIO m => TLSParams -> SRandomGen -> Handle -> m TLSCtx
|
||||
client params rng handle = liftIO $ newCtx handle params state
|
||||
where state = (newTLSState rng) { stClientContext = True }
|
||||
|
||||
processServerInfo :: MonadIO m => TLSCtx -> Packet -> m ()
|
||||
processServerInfo ctx (Handshake (ServerHello ver _ _ cipher _ _)) = do
|
||||
let ciphers = pCiphers $ getParams ctx
|
||||
|
|
|
@ -16,6 +16,8 @@ module Network.TLS.Core
|
|||
, whileStatus
|
||||
, sendPacket
|
||||
, recvPacket
|
||||
, client
|
||||
, server
|
||||
, bye
|
||||
, getParams
|
||||
, getHandle
|
||||
|
@ -36,7 +38,6 @@ import qualified Data.ByteString as B
|
|||
|
||||
import Control.Applicative ((<$>))
|
||||
import Control.Concurrent.MVar
|
||||
--import Control.Monad (when, unless)
|
||||
import Control.Monad.State
|
||||
import System.IO (Handle, hSetBuffering, BufferMode(..))
|
||||
|
||||
|
@ -127,6 +128,14 @@ sendPacket ctx pkt = do
|
|||
dataToSend <- usingState_ ctx $ writePacket pkt
|
||||
liftIO $ B.hPut (ctxHandle ctx) dataToSend
|
||||
|
||||
client :: MonadIO m => TLSParams -> SRandomGen -> Handle -> m TLSCtx
|
||||
client params rng handle = liftIO $ newCtx handle params state
|
||||
where state = (newTLSState rng) { stClientContext = True }
|
||||
|
||||
server :: MonadIO m => TLSParams -> SRandomGen -> Handle -> m TLSCtx
|
||||
server params rng handle = liftIO $ newCtx handle params state
|
||||
where state = (newTLSState rng) { stClientContext = False }
|
||||
|
||||
getParams :: TLSCtx -> TLSParams
|
||||
getParams = ctxParams
|
||||
|
||||
|
|
|
@ -11,9 +11,7 @@
|
|||
--
|
||||
|
||||
module Network.TLS.Server
|
||||
( server
|
||||
-- * API, warning probably subject to change
|
||||
, listen
|
||||
( listen
|
||||
, sendData
|
||||
, recvData
|
||||
) where
|
||||
|
@ -27,14 +25,9 @@ import Network.TLS.Core
|
|||
import Network.TLS.Cipher
|
||||
import Network.TLS.Struct
|
||||
import Network.TLS.State
|
||||
import Network.TLS.SRandom
|
||||
import qualified Data.ByteString as B
|
||||
import qualified Data.ByteString.Lazy as L
|
||||
import System.IO (Handle, hFlush)
|
||||
|
||||
server :: MonadIO m => TLSParams -> SRandomGen -> Handle -> m TLSCtx
|
||||
server params rng handle = liftIO $ newCtx handle params state
|
||||
where state = (newTLSState rng) { stClientContext = False }
|
||||
import System.IO (hFlush)
|
||||
|
||||
handleClientHello :: MonadIO m => TLSCtx -> Handshake -> m ()
|
||||
handleClientHello ctx (ClientHello ver _ _ ciphers compressionID _) = do
|
||||
|
|
|
@ -11,7 +11,6 @@ import qualified Data.ByteString.Lazy as L
|
|||
import Control.Concurrent (forkIO)
|
||||
import Control.Exception (finally, try, throw)
|
||||
import Control.Monad (when, forever)
|
||||
import Control.Monad.Trans (lift)
|
||||
|
||||
import Data.Char (isDigit)
|
||||
|
||||
|
@ -90,7 +89,7 @@ clientProcess certs handle dsthandle _ = do
|
|||
, pCertificates = certs
|
||||
, pWantClientCert = False
|
||||
}
|
||||
ctx <- S.server serverstate rng handle
|
||||
ctx <- server serverstate rng handle
|
||||
tlsserver ctx dsthandle
|
||||
--S.runTLSServer (tlsserver handle dsthandle) serverstate rng
|
||||
|
||||
|
@ -230,7 +229,7 @@ doClient pargs = do
|
|||
(StunnelSocket dst) <- connectAddressDescription dstaddr
|
||||
|
||||
dsth <- socketToHandle dst ReadWriteMode
|
||||
dstctx <- C.client clientstate rng dsth
|
||||
dstctx <- client clientstate rng dsth
|
||||
_ <- forkIO $ finally
|
||||
(tlsclient srch dstctx)
|
||||
(hClose srch >> hClose dsth)
|
||||
|
|
|
@ -135,8 +135,8 @@ setup (clientState, serverState) = do
|
|||
startQueue <- newChan
|
||||
resultQueue <- newChan
|
||||
|
||||
cCtx <- C.client clientState clientRNG cHandle
|
||||
sCtx <- S.server serverState serverRNG sHandle
|
||||
cCtx <- client clientState clientRNG cHandle
|
||||
sCtx <- server serverState serverRNG sHandle
|
||||
|
||||
return (cCtx, sCtx, startQueue, resultQueue)
|
||||
|
||||
|
|
Loading…
Reference in a new issue