tls 1.2.10 → 1.2.11
raw patch · 16 files changed
+85/−52 lines, 16 filesdep +hourglassdep +tastydep +tasty-quickcheckdep −test-frameworkdep −test-framework-quickcheck2dep −timedep ~QuickCheckdep ~mtlPVP ok
version bump matches the API change (PVP)
Dependencies added: hourglass, tasty, tasty-quickcheck, transformers
Dependencies removed: test-framework, test-framework-quickcheck2, time
Dependency ranges changed: QuickCheck, mtl
API changes (from Hackage documentation)
Files
- Network/TLS/ErrT.hs +28/−0
- Network/TLS/Handshake/Client.hs +1/−1
- Network/TLS/Handshake/Process.hs +3/−1
- Network/TLS/Receiving.hs +1/−1
- Network/TLS/Record/Disengage.hs +1/−1
- Network/TLS/Record/State.hs +1/−1
- Network/TLS/State.hs +3/−3
- Network/TLS/Struct.hs +4/−1
- Network/TLS/Wire.hs +1/−1
- Tests/Certificate.hs +27/−17
- Tests/Ciphers.hs +1/−1
- Tests/Connection.hs +1/−1
- Tests/Marshalling.hs +1/−10
- Tests/PubKey.hs +1/−1
- Tests/Tests.hs +3/−4
- tls.cabal +8/−8
+ Network/TLS/ErrT.hs view
@@ -0,0 +1,28 @@+-- |+-- Module : Network.TLS.ErrT+-- License : BSD-style+-- Maintainer : Vincent Hanquez <vincent@snarc.org>+-- Stability : experimental+-- Portability : unknown+--+-- a simple compat ErrorT and other error stuff+{-# LANGUAGE CPP #-}+module Network.TLS.ErrT+ ( runErrT+ , ErrT+ , Error(..)+ , MonadError(..)+ ) where++#if MIN_VERSION_mtl(2,2,1)+import Control.Monad.Except+import Control.Monad.Error.Class (Error(..))+runErrT :: ExceptT e m a -> m (Either e a)+runErrT = runExceptT+type ErrT = ExceptT+#else+import Control.Monad.Error+runErrT = runErrorT+type ErrT = ErrorT+#endif+
Network/TLS/Handshake/Client.hs view
@@ -18,6 +18,7 @@ import Network.TLS.Cipher import Network.TLS.Compression import Network.TLS.Packet+import Network.TLS.ErrT import Network.TLS.Extension import Network.TLS.IO import Network.TLS.State hiding (getNegotiatedProtocol)@@ -33,7 +34,6 @@ import Control.Applicative ((<$>), (<*>)) import Control.Monad.State-import Control.Monad.Error import Control.Exception (SomeException) import Network.TLS.Handshake.Common
Network/TLS/Handshake/Process.hs view
@@ -15,12 +15,14 @@ import Control.Applicative import Control.Concurrent.MVar-import Control.Monad.Error import Control.Monad.State (gets)+import Control.Monad+import Control.Monad.IO.Class (liftIO) import Network.TLS.Types (Role(..), invertRole) import Network.TLS.Util import Network.TLS.Packet+import Network.TLS.ErrT import Network.TLS.Struct import Network.TLS.State import Network.TLS.Context.Internal
Network/TLS/Receiving.hs view
@@ -15,11 +15,11 @@ ) where import Control.Monad.State-import Control.Monad.Error import Control.Concurrent.MVar import Network.TLS.Context.Internal import Network.TLS.Struct+import Network.TLS.ErrT import Network.TLS.Record import Network.TLS.Packet import Network.TLS.Wire
Network/TLS/Record/Disengage.hs view
@@ -15,9 +15,9 @@ ) where import Control.Monad.State-import Control.Monad.Error import Network.TLS.Struct+import Network.TLS.ErrT import Network.TLS.Cap import Network.TLS.Record.State import Network.TLS.Record.Types
Network/TLS/Record/State.hs view
@@ -25,9 +25,9 @@ import Data.Word import Control.Applicative import Control.Monad.State-import Control.Monad.Error import Network.TLS.Compression import Network.TLS.Cipher+import Network.TLS.ErrT import Network.TLS.Struct import Network.TLS.Wire
Network/TLS/State.hs view
@@ -54,7 +54,7 @@ import Network.TLS.Wire (GetContinuation) import qualified Data.ByteString as B import Control.Monad.State-import Control.Monad.Error+import Network.TLS.ErrT import Crypto.Random import Data.X509 (CertificateChain) @@ -74,7 +74,7 @@ , stClientContext :: Role } -newtype TLSSt a = TLSSt { runTLSSt :: ErrorT TLSError (State TLSState) a }+newtype TLSSt a = TLSSt { runTLSSt :: ErrT TLSError (State TLSState) a } deriving (Monad, MonadError TLSError, Functor, Applicative) instance MonadState TLSState TLSSt where@@ -85,7 +85,7 @@ #endif runTLSState :: TLSSt a -> TLSState -> (Either TLSError a, TLSState)-runTLSState f st = runState (runErrorT (runTLSSt f)) st+runTLSState f st = runState (runErrT (runTLSSt f)) st newTLSState :: CPRG g => g -> Role -> TLSState newTLSState rng clientContext = TLSState
Network/TLS/Struct.hs view
@@ -9,6 +9,7 @@ -- -- the Struct module contains all definitions and values of the TLS protocol --+{-# LANGUAGE CPP #-} module Network.TLS.Struct ( Bytes , Version(..)@@ -56,7 +57,6 @@ import Data.Word import Data.X509 (CertificateChain, DistinguishedName) import Data.Typeable-import Control.Monad.Error (Error(..)) import Control.Exception (Exception(..)) import Network.TLS.Types import Network.TLS.Crypto.DH@@ -129,9 +129,12 @@ | Error_Packet_Parsing String deriving (Eq, Show, Typeable) +#if MIN_VERSION_mtl(2,2,1)+#else instance Error TLSError where noMsg = Error_Misc "" strMsg = Error_Misc+#endif instance Exception TLSError
Network/TLS/Wire.hs view
@@ -50,7 +50,7 @@ import qualified Data.Serialize.Get as G import Data.Serialize.Put import Control.Applicative ((<$>))-import Control.Monad.Error+import Control.Monad import qualified Data.ByteString as B import Data.Word import Data.Bits
Tests/Certificate.hs view
@@ -6,10 +6,10 @@ , simpleX509 ) where -import Test.QuickCheck+import Control.Applicative+import Test.Tasty.QuickCheck import Data.X509-import Data.Time.Calendar (fromGregorian)-import Data.Time.Clock (secondsToDiffTime, UTCTime(..))+import Data.Hourglass import qualified Data.ByteString as B import PubKey@@ -18,24 +18,34 @@ arbitraryDN = return $ DistinguishedName [] -arbitraryTime = do- year <- choose (1951, 2050)- month <- choose (1, 12)- day <- choose (1, 30)- hour <- choose (0, 23)- minute <- choose (0, 59)- second <- choose (0, 59)- --z <- arbitrary- return $ UTCTime (fromGregorian year month day) (secondsToDiffTime (hour * 3600 + minute * 60 + second))+instance Arbitrary Date where+ arbitrary = do+ y <- choose (1951, 2050)+ m <- elements [ January .. December]+ d <- choose (1, 30)+ return $ normalizeDate $ Date y m d +normalizeDate :: Date -> Date+normalizeDate d = timeConvert (timeConvert d :: Elapsed)++instance Arbitrary TimeOfDay where+ arbitrary = do+ h <- choose (0, 23)+ mi <- choose (0, 59)+ se <- choose (0, 59)+ nsec <- return 0+ return $ TimeOfDay (Hours h) (Minutes mi) (Seconds se) nsec++instance Arbitrary DateTime where+ arbitrary = DateTime <$> arbitrary <*> arbitrary+ maxSerial = 16777216 arbitraryCertificate pubKey = do serial <- choose (0,maxSerial) issuerdn <- arbitraryDN subjectdn <- arbitraryDN- time1 <- arbitraryTime- time2 <- arbitraryTime+ validity <- (,) <$> arbitrary <*> arbitrary let sigalg = SignatureALG HashSHA1 (pubkeyToAlg pubKey) return $ Certificate { certVersion = 3@@ -43,7 +53,7 @@ , certSignatureAlg = sigalg , certIssuerDN = issuerdn , certSubjectDN = subjectdn- , certValidity = (time1, time2)+ , certValidity = validity , certPubKey = pubKey , certExtensions = Extensions $ Just [ testExtensionEncode True $ ExtKeyUsage [KeyUsage_digitalSignature,KeyUsage_keyEncipherment,KeyUsage_keyCertSign]@@ -63,8 +73,8 @@ [ testExtensionEncode True $ ExtKeyUsage [KeyUsage_digitalSignature,KeyUsage_keyEncipherment] ] }- where time1 = UTCTime (fromGregorian 1999 1 1) 0- time2 = UTCTime (fromGregorian 2901 1 1) 0+ where time1 = DateTime (Date 1999 January 1) (TimeOfDay 0 0 0 0)+ time2 = DateTime (Date 2049 January 1) (TimeOfDay 0 0 0 0) simpleDN = DistinguishedName [] simpleX509 pubKey = do
Tests/Ciphers.hs view
@@ -4,7 +4,7 @@ import Control.Applicative ((<$>), (<*>)) -import Test.QuickCheck+import Test.Tasty.QuickCheck import qualified Data.ByteString as B import Network.TLS.Cipher
Tests/Connection.hs view
@@ -8,7 +8,7 @@ , streamCipher ) where -import Test.QuickCheck+import Test.Tasty.QuickCheck import Certificate import PubKey import PipeChan
Tests/Marshalling.hs view
@@ -3,7 +3,7 @@ import Control.Monad import Control.Applicative-import Test.QuickCheck+import Test.Tasty.QuickCheck import Network.TLS.Internal import Network.TLS @@ -24,15 +24,6 @@ , ProtocolType_Alert , ProtocolType_Handshake , ProtocolType_AppData ]--#if MIN_VERSION_QuickCheck(2,3,0)-#else-instance Arbitrary Word8 where- arbitrary = fromIntegral <$> (choose (0,255) :: Gen Int)--instance Arbitrary Word16 where- arbitrary = fromIntegral <$> (choose (0,65535) :: Gen Int)-#endif instance Arbitrary Header where arbitrary = Header <$> arbitrary <*> arbitrary <*> arbitrary
Tests/PubKey.hs view
@@ -8,7 +8,7 @@ , rsaParams ) where -import Test.QuickCheck+import Test.Tasty.QuickCheck import qualified Crypto.PubKey.DH as DH import Crypto.Random (createTestEntropyPool)
Tests/Tests.hs view
@@ -1,9 +1,8 @@ {-# LANGUAGE CPP #-} -import Test.QuickCheck+import Test.Tasty+import Test.Tasty.QuickCheck import Test.QuickCheck.Monadic-import Test.Framework (defaultMain, testGroup)-import Test.Framework.Providers.QuickCheck2 (testProperty) import PipeChan import Connection@@ -159,7 +158,7 @@ assertEq expected got = unless (expected == got) $ error ("got " ++ show got ++ " but was expecting " ++ show expected) main :: IO ()-main = defaultMain+main = defaultMain $ testGroup "tls" [ tests_marshalling , tests_ciphers , tests_handshake
tls.cabal view
@@ -1,5 +1,5 @@ Name: tls-Version: 1.2.10+Version: 1.2.11 Description: Native Haskell TLS and SSL protocol implementation for server and client. .@@ -34,6 +34,7 @@ Library Build-Depends: base >= 3 && < 5 , mtl+ , transformers , cereal >= 0.4 , bytestring , byteable@@ -70,6 +71,7 @@ Network.TLS.Backend Network.TLS.Crypto Network.TLS.Crypto.DH+ Network.TLS.ErrT Network.TLS.Extension Network.TLS.Handshake Network.TLS.Handshake.Common@@ -103,8 +105,6 @@ Network.TLS.Wire Network.TLS.X509 ghc-options: -Wall -fwarn-tabs- if impl(ghc == 7.6.1)- ghc-options: -O0 if flag(compat) cpp-options: -DSSLV2_COMPATIBLE @@ -116,16 +116,16 @@ , mtl , cereal >= 0.3 , data-default-class- , QuickCheck >= 2- , test-framework- , test-framework-quickcheck2+ , tasty+ , tasty-quickcheck+ , QuickCheck , cprng-aes >= 0.5 , crypto-pubkey >= 0.2 , bytestring , x509 , x509-validation , tls- , time+ , hourglass , crypto-random , crypto-pubkey ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures -fwarn-tabs@@ -145,7 +145,7 @@ , mtl , bytestring , crypto-pubkey >= 0.2- , time+ , hourglass , QuickCheck >= 2 source-repository head