on master help sign in
tls 1.1
commit727a4dc87eb4c8ab5a306ab485021d5bd7c6d743 authorMichael Snoyman <michael@snoyman.com> dateMon 14 Jan 2013, 08:23 (14 years ago) parenteeafd84
2 files changed+14−34
warp-tls/Network/Wai/Handler/WarpTLS.hs+6−26 warp-tls/warp-tls.cabal+8−8
warp-tls/Network/Wai/Handler/WarpTLS.hs+6−26
@@ -1,6 +1,5 @@
11{-# LANGUAGE OverloadedStrings #-}
22{-# LANGUAGE RankNTypes #-}
3−{-# LANGUAGE CPP #-}
43module Network.Wai.Handler.WarpTLS
54 ( TLSSettings (..)
65 , runTLS
@@ -11,12 +10,11 @@ import qualified Network.TLS as TLS
1110import Network.Wai.Handler.Warp
1211import Network.Wai
1312import Network.Socket
14−import Crypto.Random
1513import qualified Data.ByteString.Lazy as L
1614import Data.Conduit.Binary (sourceFileRange)
1715import qualified Data.Conduit as C
1816import qualified Data.Conduit.List as CL
19−import Control.Exception (bracket, handle, SomeException)
17+import Control.Exception (bracket)
2018import qualified Network.TLS.Extra as TLSExtra
2119import qualified Data.Certificate.X509 as X509
2220import qualified Data.ByteString as B
@@ -29,6 +27,7 @@ import Data.Conduit.Network (sourceSocket, sinkSocket, acceptSafe)
2927import Data.Maybe (fromMaybe)
3028import qualified Data.IORef as I
3129import Control.Monad (unless)
30+import Crypto.Random.API (getSystemRandomGen)
3231
3332data TLSSettings = TLSSettings
3433 { certFile :: FilePath
@@ -39,7 +38,6 @@ runTLSSocket :: TLSSettings -> Settings -> Socket -> Application -> IO ()
3938runTLSSocket tset set sock app = do
4039 certs <- readCertificates $ certFile tset
4140 pk <- readPrivateKey $ keyFile tset
42−#if MIN_VERSION_tls(1, 0, 0)
4341 let params =
4442 TLS.updateServerParams
4543 (\sp -> sp { TLS.serverWantClientCert = False }) $
@@ -48,17 +46,9 @@ runTLSSocket tset set sock app = do
4846 , TLS.pCiphers = ciphers
4947 , TLS.pCertificates = zip certs $ (Just pk):repeat Nothing
5048 }
51−#else
52− let params = TLS.defaultParams
53− { TLS.pWantClientCert = False
54− , TLS.pAllowedVersions = [TLS.SSL3,TLS.TLS10,TLS.TLS11,TLS.TLS12]
55− , TLS.pCiphers = ciphers
56− , TLS.pCertificates = zip certs $ (Just pk):repeat Nothing
57− }
58−#endif
59− runSettingsConnectionMaker set (getter params sock) app
49+ runSettingsConnectionMaker set (getter params) app
6050 where
61− getter params sock = do
51+ getter params = do
6252 (s, sa) <- acceptSafe sock
6353 let mkConn = do
6454 (fromClient, firstBS) <- sourceSocket s C.$$+ CL.peek
@@ -71,8 +61,7 @@ runTLSSocket tset set sock app = do
7161 return bs
7262 if maybe False ((== 0x16) . fst) (firstBS >>= B.uncons)
7363 then do
74− gen <- newGenIO
75−#if MIN_VERSION_tls(1, 0, 0)
64+ gen <- getSystemRandomGen
7665 ctx <- TLS.contextNew
7766 TLS.Backend
7867 { TLS.backendFlush = return ()
@@ -81,16 +70,7 @@ runTLSSocket tset set sock app = do
8170 , TLS.backendRecv = getNext . takeMost
8271 }
8372 params
84− (gen :: SystemRandom)
85−#else
86− ctx <- TLS.serverWith
87− params
88− (gen :: SystemRandom)
89− s
90− (return ()) -- flush
91− (\bs -> C.yield bs C.$$ toClient)
92− (getNext . takeMost)
93−#endif
73+ gen
9474 TLS.handshake ctx
9575 let conn = Connection
9676 { connSendMany = TLS.sendData ctx . L.fromChunks
warp-tls/warp-tls.cabal+8−8
@@ -1,5 +1,5 @@
11Name: warp-tls
2−Version: 1.3.4
2+Version: 1.3.5
33Synopsis: SSL support for Warp via the TLS package
44License: MIT
55License-file: LICENSE
@@ -17,15 +17,15 @@ Library
1717 , bytestring >= 0.9
1818 , wai >= 1.3 && < 1.4
1919 , warp >= 1.3.5 && < 1.4
20− , transformers >= 0.2 && < 0.4
20+ , transformers >= 0.2
2121 , conduit >= 0.5 && < 0.6
2222 , network-conduit >= 0.6 && < 0.7
23− , certificate >= 1.2 && < 1.4
24− , pem >= 0.1 && < 0.2
25− , cryptocipher >= 0.3 && < 0.4
26− , tls-extra >= 0.4.5 && < 0.6
27− , tls >= 0.9.6 && < 1.1
28− , crypto-api >= 0.8 && < 0.11
23+ , certificate >= 1.2
24+ , pem >= 0.1
25+ , cryptocipher >= 0.3
26+ , tls-extra >= 0.6
27+ , tls >= 1.1
28+ , crypto-random-api >= 0.2
2929 , network >= 2.2.1
3030 Exposed-modules: Network.Wai.Handler.WarpTLS
3131 ghc-options: -Wall