tls 1.6.0 → 1.7.0
raw patch · 4 files changed
+218/−194 lines, 4 filesdep +cryptondep +crypton-x509dep +crypton-x509-storedep −cryptonitedep −x509dep −x509-storedep ~data-default-class
Dependencies added: crypton, crypton-x509, crypton-x509-store, crypton-x509-validation, unix-time
Dependencies removed: cryptonite, x509, x509-store, x509-validation
Dependency ranges changed: data-default-class
Files
- CHANGELOG.md +4/−0
- Network/TLS/Handshake/Common13.hs +12/−12
- Network/TLS/Types.hs +7/−0
- tls.cabal +195/−182
CHANGELOG.md view
@@ -1,3 +1,7 @@+## Version 1.7.0++* Major version up because "crypton" is used instead of "cryptonite"+ ## Version 1.6.0 - Major version up because of disabling SSL3
Network/TLS/Handshake/Common13.hs view
@@ -47,31 +47,31 @@ import qualified Data.ByteArray as BA import qualified Data.ByteString as B-import Data.Hourglass+import Data.UnixTime+import Foreign.C.Types (CTime(..))+import Network.TLS.Cipher import Network.TLS.Compression import Network.TLS.Context.Internal-import Network.TLS.Cipher import Network.TLS.Crypto import qualified Network.TLS.Crypto.IES as IES import Network.TLS.Extension import Network.TLS.Handshake.Certificate (extractCAname)-import Network.TLS.Handshake.Process (processHandshake13) import Network.TLS.Handshake.Common (unexpected) import Network.TLS.Handshake.Key+import Network.TLS.Handshake.Process (processHandshake13)+import Network.TLS.Handshake.Signature import Network.TLS.Handshake.State import Network.TLS.Handshake.State13-import Network.TLS.Handshake.Signature+import Network.TLS.IO import Network.TLS.Imports import Network.TLS.KeySchedule import Network.TLS.MAC import Network.TLS.Parameters-import Network.TLS.IO import Network.TLS.State import Network.TLS.Struct import Network.TLS.Struct13 import Network.TLS.Types import Network.TLS.Wire-import Time.System import Control.Concurrent.MVar import Control.Monad.State.Strict@@ -302,14 +302,14 @@ isAlive = isAgeValid age tinfo getCurrentTimeFromBase :: IO Millisecond-getCurrentTimeFromBase = millisecondsFromBase <$> timeCurrentP+getCurrentTimeFromBase = millisecondsFromBase <$> getUnixTime -millisecondsFromBase :: ElapsedP -> Millisecond-millisecondsFromBase d = fromIntegral ms+millisecondsFromBase :: UnixTime -> Millisecond+millisecondsFromBase (UnixTime (CTime s) us) =+ fromIntegral ((s - base) * 1000) + fromIntegral (us `div` 1000) where- ElapsedP (Elapsed (Seconds s)) (NanoSeconds ns) = d - timeConvert base- ms = s * 1000 + ns `div` 1000000- base = Date 2017 January 1+ base = 1483228800+ -- UnixTime (CTime base) _= parseUnixTimeGMT webDateFormat "Sun, 01 Jan 2017 00:00:00 GMT" ----------------------------------------------------------------
Network/TLS/Types.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE EmptyDataDecls #-} -- | -- Module : Network.TLS.Types@@ -35,10 +36,16 @@ , MasterSecret(..) ) where +#ifdef INCLUDE_NETWORK+import Network.Socket (HostName)+#endif+ import Network.TLS.Imports import Network.TLS.Crypto.Types (Group) +#ifndef INCLUDE_NETWORK type HostName = String+#endif type Second = Word32 type Millisecond = Word64
tls.cabal view
@@ -1,189 +1,202 @@-Name: tls-Version: 1.6.0-Description:- Native Haskell TLS and SSL protocol implementation for server and client.- .- This provides a high-level implementation of a sensitive security protocol,- eliminating a common set of security issues through the use of the advanced- type system, high level constructions and common Haskell features.- .- Currently implement the TLS1.0, TLS1.1, TLS1.2 and TLS 1.3 protocol,- and support RSA and Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges,- and many extensions.- .- Some debug tools linked with tls, are available through the- <http://hackage.haskell.org/package/tls-debug/>.-License: BSD3-License-file: LICENSE-Copyright: Vincent Hanquez <vincent@snarc.org>-Author: Vincent Hanquez <vincent@snarc.org>-Maintainer: Kazu Yamamoto <kazu@iij.ad.jp>-Synopsis: TLS/SSL protocol native implementation (Server and Client)-Build-Type: Simple-Category: Network-stability: experimental-Cabal-Version: >=1.10-Homepage: http://github.com/vincenthz/hs-tls-extra-source-files: Tests/*.hs- CHANGELOG.md+cabal-version: >=1.10+name: tls+version: 1.7.0+license: BSD3+license-file: LICENSE+copyright: Vincent Hanquez <vincent@snarc.org>+maintainer: Kazu Yamamoto <kazu@iij.ad.jp>+author: Vincent Hanquez <vincent@snarc.org>+stability: experimental+homepage: http://github.com/vincenthz/hs-tls+synopsis: TLS/SSL protocol native implementation (Server and Client)+description:+ Native Haskell TLS and SSL protocol implementation for server and client.+ .+ This provides a high-level implementation of a sensitive security protocol,+ eliminating a common set of security issues through the use of the advanced+ type system, high level constructions and common Haskell features.+ .+ Currently implement the TLS1.0, TLS1.1, TLS1.2 and TLS 1.3 protocol,+ and support RSA and Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges,+ and many extensions.+ .+ Some debug tools linked with tls, are available through the+ <http://hackage.haskell.org/package/tls-debug/>. -Flag compat- Description: Accept SSLv2 client hello for beginning SSLv3 / TLS handshake- Default: True+category: Network+build-type: Simple+extra-source-files:+ Tests/*.hs+ CHANGELOG.md -Flag network- Description: Use the base network library- Default: True+source-repository head+ type: git+ location: https://github.com/vincenthz/hs-tls+ subdir: core -Flag hans- Description: Use the Haskell Network Stack (HaNS)- Default: False+flag compat+ description:+ Accept SSLv2 client hello for beginning SSLv3 / TLS handshake -Library- Default-Language: Haskell2010- Build-Depends: base >= 4.9 && < 5- , mtl >= 2.2.1- , transformers- , cereal >= 0.5.3- , bytestring- , data-default-class- -- crypto related- , memory >= 0.14.6- , cryptonite >= 0.27- -- certificate related- , asn1-types >= 0.2.0- , asn1-encoding- , x509 >= 1.7.5- , x509-store >= 1.6- , x509-validation >= 1.6.5- , async >= 2.0- , hourglass- if flag(network)- Build-Depends: network >= 2.4.0.0- cpp-options: -DINCLUDE_NETWORK- if flag(hans)- Build-Depends: hans- cpp-options: -DINCLUDE_HANS- Exposed-modules: Network.TLS- Network.TLS.Cipher- Network.TLS.Compression- Network.TLS.Internal- Network.TLS.Extra- Network.TLS.Extra.Cipher- Network.TLS.Extra.FFDHE- Network.TLS.QUIC- other-modules: Network.TLS.Cap- Network.TLS.Struct- Network.TLS.Struct13- Network.TLS.Core- Network.TLS.Context- Network.TLS.Context.Internal- Network.TLS.Credentials- Network.TLS.Backend- Network.TLS.Crypto- Network.TLS.Crypto.DH- Network.TLS.Crypto.IES- Network.TLS.Crypto.Types- Network.TLS.ErrT- Network.TLS.Extension- Network.TLS.Handshake- Network.TLS.Handshake.Certificate- Network.TLS.Handshake.Client- Network.TLS.Handshake.Common- Network.TLS.Handshake.Common13- Network.TLS.Handshake.Control- Network.TLS.Handshake.Key- Network.TLS.Handshake.Process- Network.TLS.Handshake.Random- Network.TLS.Handshake.Server- Network.TLS.Handshake.Signature- Network.TLS.Handshake.State- Network.TLS.Handshake.State13- Network.TLS.Hooks- Network.TLS.IO- Network.TLS.Imports- Network.TLS.KeySchedule- Network.TLS.MAC- Network.TLS.Measurement- Network.TLS.Packet- Network.TLS.Packet13- Network.TLS.Parameters- Network.TLS.PostHandshake- Network.TLS.Record- Network.TLS.Record.Disengage- Network.TLS.Record.Engage- Network.TLS.Record.Layer- Network.TLS.Record.Reading- Network.TLS.Record.Writing- Network.TLS.Record.State- Network.TLS.Record.Types- Network.TLS.RNG- Network.TLS.State- Network.TLS.Session- Network.TLS.Sending- Network.TLS.Receiving- Network.TLS.Util- Network.TLS.Util.ASN1- Network.TLS.Util.Serialization- Network.TLS.Types- Network.TLS.Wire- Network.TLS.X509- ghc-options: -Wall- if flag(compat)- cpp-options: -DSSLV2_COMPATIBLE+flag network+ description: Use the base network library -Test-Suite test-tls- Default-Language: Haskell2010- type: exitcode-stdio-1.0- hs-source-dirs: Tests- Main-is: Tests.hs- other-modules: Certificate- Ciphers- Connection- Marshalling- PipeChan- PubKey- Build-Depends: base >= 3 && < 5- , async >= 2.0- , data-default-class- , tasty- , tasty-quickcheck- , tls- , QuickCheck- , cryptonite- , bytestring- , asn1-types- , x509- , x509-validation- , hourglass- ghc-options: -Wall -fno-warn-unused-imports+flag hans+ description: Use the Haskell Network Stack (HaNS)+ default: False -Benchmark bench-tls- Default-Language: Haskell2010- hs-source-dirs: Benchmarks Tests- Main-Is: Benchmarks.hs- type: exitcode-stdio-1.0- other-modules: Certificate- Connection- PipeChan- PubKey- Build-depends: base >= 4 && < 5- , tls- , x509- , x509-validation- , data-default-class- , cryptonite- , gauge- , bytestring- , asn1-types- , async >= 2.0- , hourglass- , QuickCheck >= 2- , tasty-quickcheck- , tls- ghc-options: -Wall -fno-warn-unused-imports+library+ exposed-modules:+ Network.TLS+ Network.TLS.Cipher+ Network.TLS.Compression+ Network.TLS.Internal+ Network.TLS.Extra+ Network.TLS.Extra.Cipher+ Network.TLS.Extra.FFDHE+ Network.TLS.QUIC -source-repository head- type: git- location: https://github.com/vincenthz/hs-tls- subdir: core+ other-modules:+ Network.TLS.Cap+ Network.TLS.Struct+ Network.TLS.Struct13+ Network.TLS.Core+ Network.TLS.Context+ Network.TLS.Context.Internal+ Network.TLS.Credentials+ Network.TLS.Backend+ Network.TLS.Crypto+ Network.TLS.Crypto.DH+ Network.TLS.Crypto.IES+ Network.TLS.Crypto.Types+ Network.TLS.ErrT+ Network.TLS.Extension+ Network.TLS.Handshake+ Network.TLS.Handshake.Certificate+ Network.TLS.Handshake.Client+ Network.TLS.Handshake.Common+ Network.TLS.Handshake.Common13+ Network.TLS.Handshake.Control+ Network.TLS.Handshake.Key+ Network.TLS.Handshake.Process+ Network.TLS.Handshake.Random+ Network.TLS.Handshake.Server+ Network.TLS.Handshake.Signature+ Network.TLS.Handshake.State+ Network.TLS.Handshake.State13+ Network.TLS.Hooks+ Network.TLS.IO+ Network.TLS.Imports+ Network.TLS.KeySchedule+ Network.TLS.MAC+ Network.TLS.Measurement+ Network.TLS.Packet+ Network.TLS.Packet13+ Network.TLS.Parameters+ Network.TLS.PostHandshake+ Network.TLS.Record+ Network.TLS.Record.Disengage+ Network.TLS.Record.Engage+ Network.TLS.Record.Layer+ Network.TLS.Record.Reading+ Network.TLS.Record.Writing+ Network.TLS.Record.State+ Network.TLS.Record.Types+ Network.TLS.RNG+ Network.TLS.State+ Network.TLS.Session+ Network.TLS.Sending+ Network.TLS.Receiving+ Network.TLS.Util+ Network.TLS.Util.ASN1+ Network.TLS.Util.Serialization+ Network.TLS.Types+ Network.TLS.Wire+ Network.TLS.X509++ default-language: Haskell2010+ ghc-options: -Wall+ build-depends:+ base >=4.9 && <5,+ mtl >=2.2.1,+ transformers,+ cereal >=0.5.3,+ bytestring,+ data-default-class,+ memory >=0.14.6,+ crypton,+ asn1-types >=0.2.0,+ asn1-encoding,+ crypton-x509 >=1.7.5,+ crypton-x509-store >=1.6,+ crypton-x509-validation >=1.6.5,+ async >=2.0,+ unix-time++ if flag(network)+ cpp-options: -DINCLUDE_NETWORK+ build-depends: network >=2.4.0.0++ if flag(hans)+ cpp-options: -DINCLUDE_HANS+ build-depends: hans++ if flag(compat)+ cpp-options: -DSSLV2_COMPATIBLE++test-suite test-tls+ type: exitcode-stdio-1.0+ main-is: Tests.hs+ hs-source-dirs: Tests+ other-modules:+ Certificate+ Ciphers+ Connection+ Marshalling+ PipeChan+ PubKey++ default-language: Haskell2010+ ghc-options: -Wall -fno-warn-unused-imports+ build-depends:+ base >=3 && <5,+ async >=2.0,+ data-default-class,+ tasty,+ tasty-quickcheck,+ tls,+ QuickCheck,+ crypton,+ bytestring,+ asn1-types,+ crypton-x509,+ crypton-x509-validation,+ hourglass++benchmark bench-tls+ type: exitcode-stdio-1.0+ main-is: Benchmarks.hs+ hs-source-dirs: Benchmarks Tests+ other-modules:+ Certificate+ Connection+ PipeChan+ PubKey++ default-language: Haskell2010+ ghc-options: -Wall -fno-warn-unused-imports+ build-depends:+ base >=4 && <5,+ tls,+ crypton-x509,+ crypton-x509-validation,+ data-default-class,+ crypton,+ gauge,+ bytestring,+ asn1-types,+ async >=2.0,+ hourglass,+ QuickCheck >=2,+ tasty-quickcheck,+ tls