peyotls 0.0.0.10 → 0.0.0.11
raw patch · 6 files changed
+31/−26 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- peyotls.cabal +2/−2
- src/Network/PeyoTLS/Extension.hs +6/−6
- src/Network/PeyoTLS/HandshakeBase.hs +3/−3
- src/Network/PeyoTLS/HandshakeType.hs +2/−2
- src/Network/PeyoTLS/Hello.hs +2/−2
- src/Network/PeyoTLS/Server.hs +16/−11
peyotls.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8 name: peyotls-version: 0.0.0.10+version: 0.0.0.11 stability: Experimental author: Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -272,7 +272,7 @@ source-repository this type: git location: git://github.com/YoshikuniJujo/peyotls.git- tag: peyotls-0.0.0.10+ tag: peyotls-0.0.0.11 library hs-source-dirs: src
src/Network/PeyoTLS/Extension.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# OPTIONS_GHC -fno-warn-orphans #-} -module Network.PeyoTLS.Extension (Extension, SignAlg(..), HashAlg(..)) where+module Network.PeyoTLS.Extension (Extension(..), SignAlg(..), HashAlg(..)) where import Control.Applicative ((<$>), (<*>)) import Data.Bits (shiftL, (.|.))@@ -21,7 +21,7 @@ | ENextProtoNego BS.ByteString | ERenegoInfo BS.ByteString | ERaw EType BS.ByteString- deriving Show+ deriving (Show, Eq) instance B.Bytable Extension where encode = encodeE; decode = B.evalBytableM B.parse@@ -52,7 +52,7 @@ data EType = TSName | TECurve | TEcPFrt | TSsnTicketTls- | TNextProtoNego | TRenegoInfo | TRaw Word16 deriving Show+ | TNextProtoNego | TRenegoInfo | TRaw Word16 deriving (Show, Eq) instance B.Bytable EType where encode TSName = B.encode (0 :: Word16)@@ -75,7 +75,7 @@ _ -> Left "Extension: EType.decode" data ServerName = SNHostName BS.ByteString | SNRaw NameType BS.ByteString- deriving Show+ deriving (Show, Eq) instance B.Bytable ServerName where encode (SNHostName nm) = B.encode $ SNRaw NTHostName nm@@ -88,7 +88,7 @@ return $ case t of NTHostName -> SNHostName n; _ -> SNRaw t n -data NameType = NTHostName | NTRaw Word8 deriving Show+data NameType = NTHostName | NTRaw Word8 deriving (Show, Eq) instance B.Bytable NameType where encode NTHostName = BS.pack [0]@@ -162,7 +162,7 @@ NamedCurve <- B.parse B.parse -data EcPointFormat = EPFUncompressed | EPFRaw Word8 deriving Show+data EcPointFormat = EPFUncompressed | EPFRaw Word8 deriving (Show, Eq) instance B.Bytable EcPointFormat where encode EPFUncompressed = BS.pack [0]
src/Network/PeyoTLS/HandshakeBase.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE OverloadedStrings, TypeFamilies, PackageImports, TupleSections #-} -module Network.PeyoTLS.HandshakeBase (+module Network.PeyoTLS.HandshakeBase ( Extension(..), PeyotlsM, PeyotlsHandle, debug, generateKs, blindSign, CertSecretKey(..), HM.TlsM, HM.run, HM.HandshakeM, HM.execHandshakeM,@@ -51,7 +51,7 @@ import qualified Crypto.PubKey.ECC.Prim as ECC import qualified Crypto.Types.PubKey.ECDSA as ECDSA -import Network.PeyoTLS.HandshakeType (+import Network.PeyoTLS.HandshakeType ( Extension(..), Handshake, HandshakeItem(..), ClientHello(..), ServerHello(..), SessionId(..), CipherSuite(..), KeyExchange(..), BulkEncryption(..),@@ -81,7 +81,7 @@ debug :: (HandleLike h, Show a) => a -> HM.HandshakeM h g () debug x = do h <- gets $ HM.tlsHandle . fst- lift . lift . lift . hlDebug h "moderate" . BSC.pack . (++ "\n") $ show x+ lift . lift . lift . hlDebug h "critical" . BSC.pack . (++ "\n") $ show x readHandshake :: (HandleLike h, CPRG g, HandshakeItem hi) => HM.HandshakeM h g hi readHandshake = do
src/Network/PeyoTLS/HandshakeType.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-orphans #-} -module Network.PeyoTLS.HandshakeType (+module Network.PeyoTLS.HandshakeType ( Extension(..), Handshake, HandshakeItem(..), ClientHello(..), ServerHello(..), SessionId(..), CipherSuite(..), KeyExchange(..), BulkEncryption(..),@@ -22,7 +22,7 @@ import qualified Crypto.PubKey.DH as DH import qualified Crypto.Types.PubKey.ECC as ECC -import Network.PeyoTLS.Hello (+import Network.PeyoTLS.Hello ( Extension(..), ClientHello(..), ServerHello(..), SessionId(..), CipherSuite(..), KeyExchange(..), BulkEncryption(..), CompressionMethod(..), HashAlg(..), SignAlg(..) )
src/Network/PeyoTLS/Hello.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} -module Network.PeyoTLS.Hello (+module Network.PeyoTLS.Hello ( Extension(..), ClientHello(..), ServerHello(..), SessionId(..), CipherSuite(..), KeyExchange(..), BulkEncryption(..), CompressionMethod(..),@@ -13,7 +13,7 @@ import qualified Data.ByteString as BS import qualified Codec.Bytable.BigEndian as B -import Network.PeyoTLS.Extension (Extension, SignAlg(..), HashAlg(..))+import Network.PeyoTLS.Extension (Extension(..), SignAlg(..), HashAlg(..)) import Network.PeyoTLS.CipherSuite ( CipherSuite(..), KeyExchange(..), BulkEncryption(..))
src/Network/PeyoTLS/Server.hs view
@@ -30,7 +30,7 @@ import qualified Crypto.Types.PubKey.ECDSA as ECDSA import qualified Crypto.PubKey.ECC.ECDSA as ECDSA -import Network.PeyoTLS.HandshakeBase (+import Network.PeyoTLS.HandshakeBase ( debug, Extension(..), PeyotlsM, PeyotlsHandle, TlsM, run, HandshakeM, execHandshakeM, withRandom, randomByteString, TlsHandle, names,@@ -79,8 +79,8 @@ [(CertSecretKey, X509.CertificateChain)] -> Maybe X509.CertificateStore -> TlsM h g (TlsHandle h g) open h cssv crts mcs = execHandshakeM h $ do- (cs@(CipherSuite ke be), cr, cv) <- clientHello $ filterCS crts cssv- sr <- serverHello cs rcc ecc+ (cs@(CipherSuite ke be), cr, cv, rn) <- clientHello $ filterCS crts cssv+ sr <- serverHello cs rcc ecc rn setCipherSuite cs ha <- case be of AES_128_CBC_SHA -> return Sha1@@ -128,10 +128,13 @@ `ap` dhClientKeyExchange dp sv rs clientHello :: (HandleLike h, CPRG g) =>- [CipherSuite] -> HandshakeM h g (CipherSuite, BS.ByteString, Version)+ [CipherSuite] -> HandshakeM h g (CipherSuite, BS.ByteString, Version, Bool) clientHello cssv = do- ClientHello cv cr _sid cscl cms _ <- readHandshake- chk cv cscl cms >> return (merge cssv cscl, cr, cv)+ ClientHello cv cr _sid cscl cms e <- readHandshake+ debug e+ let rn = maybe False (ERenegoInfo "" `elem`) e+ debug rn+ chk cv cscl cms >> return (merge cssv cscl, cr, cv, rn) where merge sv cl = case find (`elem` cl) sv of Just cs -> cs; _ -> CipherSuite RSA AES_128_CBC_SHA@@ -150,15 +153,17 @@ where pmsg = "TlsServer.clientHello: " serverHello :: (HandleLike h, CPRG g) => CipherSuite ->- X509.CertificateChain -> X509.CertificateChain ->+ X509.CertificateChain -> X509.CertificateChain -> Bool -> HandshakeM h g BS.ByteString-serverHello cs@(CipherSuite ke _) rcc ecc = do+serverHello cs@(CipherSuite ke _) rcc ecc rn = do sr <- randomByteString 32- writeHandshake $ ServerHello- version sr (SessionId "") cs CompressionMethodNull Nothing+ writeHandshake . ServerHello+ version sr (SessionId "") cs CompressionMethodNull $ if rn+ then Just [ERenegoInfo ""]+ else Nothing writeHandshake $ case ke of ECDHE_ECDSA -> ecc; _ -> rcc return sr-serverHello _ _ _ = E.throwError "TlsServer.serverHello: never occur"+serverHello _ _ _ _ = E.throwError "TlsServer.serverHello: never occur" serverKeyExchange :: (HandleLike h, CPRG g, SecretKey sk, DhParam dp, B.Bytable dp, B.Bytable (Public dp)) =>