on master help sign in
tls 1.0
392d5a7Michael Snoyman
warp-tls/Network/Wai/Handler/WarpTLS.hs+24
@@ -1,5 +1,6 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE RankNTypes #-}
2{-# LANGUAGE RankNTypes #-}
3+{-# LANGUAGE CPP #-}
3module Network.Wai.Handler.WarpTLS
4module Network.Wai.Handler.WarpTLS
4 ( TLSSettings (..)
5 ( TLSSettings (..)
5 , runTLS
6 , runTLS
@@ -38,12 +39,23 @@ runTLSSocket :: TLSSettings -> Settings -> Socket -> Application -> IO ()
38runTLSSocket tset set sock app = do
39runTLSSocket tset set sock app = do
39 certs <- readCertificates $ certFile tset
40 certs <- readCertificates $ certFile tset
40 pk <- readPrivateKey $ keyFile tset
41 pk <- readPrivateKey $ keyFile tset
42+#if MIN_VERSION_tls(1, 0, 0)
43+ let params =
44+ TLS.updateServerParams
45+ (\sp -> sp { TLS.serverWantClientCert = False }) $
46+ TLS.defaultParamsServer
47+ { TLS.pAllowedVersions = [TLS.SSL3,TLS.TLS10,TLS.TLS11,TLS.TLS12]
48+ , TLS.pCiphers = ciphers
49+ , TLS.pCertificates = zip certs $ (Just pk):repeat Nothing
50+ }
51+#else
41 let params = TLS.defaultParams
52 let params = TLS.defaultParams
42 { TLS.pWantClientCert = False
53 { TLS.pWantClientCert = False
43 , TLS.pAllowedVersions = [TLS.SSL3,TLS.TLS10,TLS.TLS11,TLS.TLS12]
54 , TLS.pAllowedVersions = [TLS.SSL3,TLS.TLS10,TLS.TLS11,TLS.TLS12]
44 , TLS.pCiphers = ciphers
55 , TLS.pCiphers = ciphers
45 , TLS.pCertificates = zip certs $ (Just pk):repeat Nothing
56 , TLS.pCertificates = zip certs $ (Just pk):repeat Nothing
46 }
57 }
58+#endif
47 runSettingsConnection set (getter params sock) app
59 runSettingsConnection set (getter params sock) app
48 where
60 where
49 retry :: Socket -> TLS.TLSParams -> Socket -> SomeException -> IO (Connection, SockAddr)
61 retry :: Socket -> TLS.TLSParams -> Socket -> SomeException -> IO (Connection, SockAddr)
@@ -63,6 +75,17 @@ runTLSSocket tset set sock app = do
63 if maybe False ((== 0x16) . fst) (firstBS >>= B.uncons)
75 if maybe False ((== 0x16) . fst) (firstBS >>= B.uncons)
64 then do
76 then do
65 gen <- newGenIO
77 gen <- newGenIO
78+#if MIN_VERSION_tls(1, 0, 0)
79+ ctx <- TLS.contextNew
80+ TLS.Backend
81+ { TLS.backendFlush = return ()
82+ , TLS.backendClose = return ()
83+ , TLS.backendSend = \bs -> C.yield bs C.$$ toClient
84+ , TLS.backendRecv = getNext . takeMost
85+ }
86+ params
87+ (gen :: SystemRandom)
88+#else
66 ctx <- TLS.serverWith
89 ctx <- TLS.serverWith
67 params
90 params
68 (gen :: SystemRandom)
91 (gen :: SystemRandom)
@@ -70,6 +93,7 @@ runTLSSocket tset set sock app = do
70 (return ()) -- flush
93 (return ()) -- flush
71 (\bs -> C.yield bs C.$$ toClient)
94 (\bs -> C.yield bs C.$$ toClient)
72 (getNext . takeMost)
95 (getNext . takeMost)
96+#endif
73 TLS.handshake ctx
97 TLS.handshake ctx
74 let conn = Connection
98 let conn = Connection
75 { connSendMany = TLS.sendData ctx . L.fromChunks
99 { connSendMany = TLS.sendData ctx . L.fromChunks
warp-tls/warp-tls.cabal+4−4
@@ -1,5 +1,5 @@
1Name: warp-tls
1Name: warp-tls
2−Version: 1.3.2
2+Version: 1.3.3
3Synopsis: SSL support for Warp via the TLS package
3Synopsis: SSL support for Warp via the TLS package
4License: MIT
4License: MIT
5License-file: LICENSE
5License-file: LICENSE
@@ -20,11 +20,11 @@ Library
20 , transformers >= 0.2 && < 0.4
20 , transformers >= 0.2 && < 0.4
21 , conduit >= 0.5 && < 0.6
21 , conduit >= 0.5 && < 0.6
22 , network-conduit >= 0.5 && < 0.7
22 , network-conduit >= 0.5 && < 0.7
23− , certificate >= 1.2 && < 1.3
23+ , certificate >= 1.2 && < 1.4
24 , pem >= 0.1 && < 0.2
24 , pem >= 0.1 && < 0.2
25 , cryptocipher >= 0.3 && < 0.4
25 , cryptocipher >= 0.3 && < 0.4
26− , tls-extra >= 0.4.5 && < 0.5
26+ , tls-extra >= 0.4.5 && < 0.6
27− , tls >= 0.9.6 && < 0.10
27+ , tls >= 0.9.6 && < 1.1
28 , crypto-api >= 0.8 && < 0.11
28 , crypto-api >= 0.8 && < 0.11
29 , network >= 2.2.1
29 , network >= 2.2.1
30 Exposed-modules: Network.Wai.Handler.WarpTLS
30 Exposed-modules: Network.Wai.Handler.WarpTLS