peyotls 0.0.0.14 → 0.0.0.15
raw patch · 7 files changed
+64/−6 lines, 7 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- peyotls.cabal +2/−2
- src/Network/PeyoTLS/HandshakeBase.hs +4/−0
- src/Network/PeyoTLS/HandshakeMonad.hs +10/−0
- src/Network/PeyoTLS/Server.hs +4/−2
- src/Network/PeyoTLS/State.hs +23/−2
- src/Network/PeyoTLS/TlsHandle.hs +11/−0
- src/Network/PeyoTLS/TlsMonad.hs +10/−0
peyotls.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8 name: peyotls-version: 0.0.0.14+version: 0.0.0.15 stability: Experimental author: Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>@@ -281,7 +281,7 @@ source-repository this type: git location: git://github.com/YoshikuniJujo/peyotls.git- tag: peyotls-0.0.0.14+ tag: peyotls-0.0.0.15 library hs-source-dirs: src
src/Network/PeyoTLS/HandshakeBase.hs view
@@ -34,6 +34,8 @@ HM.tGetContent_, HM.tlsGet_, HM.tGetLine_,++ HM.getInitSet, HM.setInitSet, ) where import Control.Applicative@@ -91,6 +93,8 @@ getClientFinished, setClientFinished, getServerFinished, setServerFinished, resetSequenceNumber,++ getInitSet, setInitSet, ) import Network.PeyoTLS.Ecdsa (blindSign, generateKs)
src/Network/PeyoTLS/HandshakeMonad.hs view
@@ -19,6 +19,8 @@ getServerFinished, setServerFinished, resetSequenceNumber,++ getInitSet, setInitSet, ) where import Prelude hiding (read)@@ -57,6 +59,8 @@ getServerFinishedT, setServerFinishedT, resetSequenceNumber,++ getInitSetT, setInitSetT, InitialSettings, ) resetSequenceNumber :: HandleLike h => TH.RW -> HandshakeM h g ()@@ -211,3 +215,9 @@ HandleLike h => BS.ByteString -> HandshakeM h g () setClientFinished cf = gets fst >>= lift . flip TH.setClientFinishedT cf setServerFinished cf = gets fst >>= lift . flip TH.setServerFinishedT cf++getInitSet :: HandleLike h => HandshakeM h g TH.InitialSettings+getInitSet = gets fst >>= lift . TH.getInitSetT++setInitSet :: HandleLike h => TH.InitialSettings -> HandshakeM h g ()+setInitSet is = gets fst >>= lift . flip TH.setInitSetT is
src/Network/PeyoTLS/Server.hs view
@@ -107,6 +107,7 @@ [(CertSecretKey, X509.CertificateChain)] -> Maybe X509.CertificateStore -> TlsM h g (TlsHandleS h g) open h cssv crts mcs = (TlsHandleS `liftM`) . execHandshakeM h $ do+ HB.setInitSet (cssv, crts, mcs) (cs, cr, cv, rn) <- clientHello $ filterCS crts cssv succeed cs cr cv crts mcs rn @@ -362,13 +363,14 @@ handshake :: (ValidateHandle h, CPRG g) => [CipherSuite] -> [(CertSecretKey, X509.CertificateChain)] -> Maybe X509.CertificateStore -> HandshakeM h g ()-handshake cssv crts mcs = do+handshake _cssv _crts _mcs = do+ (cssv, crts, mcs) <- HB.getInitSet (cs, cr, cv, rn) <- clientHello $ filterCS crts cssv succeed cs cr cv crts mcs rn rehandshake :: (ValidateHandle h, CPRG g) => TlsHandle h g -> TlsM h g () rehandshake t = do- oldHandshakeM t "" $ handshake cipherSuites certificateSets Nothing+ oldHandshakeM t "" $ handshake undefined undefined undefined return () renegotiation ::
src/Network/PeyoTLS/State.hs view
@@ -9,8 +9,11 @@ getReadSN, getWriteSN, succReadSN, succWriteSN, resetReadSN, resetWriteSN, getCipherSuite, setCipherSuite, flushCipherSuiteRead, flushCipherSuiteWrite, getKeys, setKeys,+ getInitSet, setInitSet, getClientFinished, setClientFinished, getServerFinished, setServerFinished,++ InitialSettings, ) where import "monads-tf" Control.Monad.Error.Class (Error(strMsg))@@ -21,6 +24,10 @@ import qualified Data.ByteString as BS import qualified Codec.Bytable.BigEndian as B +import Network.PeyoTLS.CertSecretKey+import qualified Data.X509 as X509+import qualified Data.X509.CertificateStore as X509+ import Network.PeyoTLS.CipherSuite ( CipherSuite(..), KeyExchange(..), BulkEncryption(..)) @@ -43,10 +50,15 @@ sKeys = nullKeys, rBuffer = (CTNull, ""), wBuffer = (CTNull, ""), readSN = 0, writeSN = 0,- rnClientFinished = "", rnServerFinished = ""+ rnClientFinished = "", rnServerFinished = "",+ initialSettings = ([], [], Nothing) } sos = states s +type InitialSettings = (+ [CipherSuite], [(CertSecretKey, X509.CertificateChain)],+ Maybe X509.CertificateStore)+ data StateOne g = StateOne { sKeys :: Keys, rBuffer :: (ContentType, BS.ByteString),@@ -54,7 +66,10 @@ readSN :: Word64, writeSN :: Word64, rnClientFinished :: BS.ByteString,- rnServerFinished :: BS.ByteString+ rnServerFinished :: BS.ByteString,+ initialSettings :: (+ [CipherSuite], [(CertSecretKey, X509.CertificateChain)],+ Maybe X509.CertificateStore) } getState :: PartnerId -> HandshakeState h g -> StateOne g@@ -147,6 +162,12 @@ setKeys :: PartnerId -> Keys -> Modify (HandshakeState h g) setKeys i = modifyState i . \k st -> st { sKeys = k }++getInitSet :: PartnerId -> HandshakeState h g -> InitialSettings+getInitSet i = initialSettings . fromJust' "getInitSet" . lookup i . states++setInitSet :: PartnerId -> InitialSettings -> Modify (HandshakeState h g)+setInitSet i = modifyState i . \is st -> st { initialSettings = is } getClientFinished, getServerFinished :: PartnerId -> HandshakeState h g -> BS.ByteString
src/Network/PeyoTLS/TlsHandle.hs view
@@ -13,6 +13,9 @@ getClientFinishedT, setClientFinishedT, getServerFinishedT, setServerFinishedT, + getInitSetT, setInitSetT,+ InitialSettings,+ resetSequenceNumber, ) where @@ -44,6 +47,8 @@ PartnerId, newPartnerId, Keys(..), getClientFinished, setClientFinished, getServerFinished, setServerFinished,+ InitialSettings,+ getInitSet, setInitSet, ) import qualified Network.PeyoTLS.CryptoTools as CT ( makeKeys, encrypt, decrypt, hashSha1, hashSha256, finishedHash )@@ -309,3 +314,9 @@ HandleLike h => TlsHandle h g -> BS.ByteString -> TlsM h g () setClientFinishedT = setClientFinished . clientId setServerFinishedT = setServerFinished . clientId++getInitSetT :: HandleLike h => TlsHandle h g -> TlsM h g InitialSettings+getInitSetT = getInitSet . clientId++setInitSetT :: HandleLike h => TlsHandle h g -> InitialSettings -> TlsM h g ()+setInitSetT = setInitSet . clientId
src/Network/PeyoTLS/TlsMonad.hs view
@@ -8,6 +8,7 @@ resetReadSn, resetWriteSn, getCipherSuiteSt, setCipherSuiteSt, flushCipherSuiteRead, flushCipherSuiteWrite, setKeys, getKeys,+ getInitSet, setInitSet, S.InitialSettings, S.Alert(..), S.AlertLevel(..), S.AlertDesc(..), S.ContentType(..), S.CipherSuite(..), S.KeyExchange(..), S.BulkEncryption(..),@@ -36,8 +37,11 @@ getReadSN, getWriteSN, succReadSN, succWriteSN, resetReadSN, resetWriteSN, getCipherSuite, setCipherSuite, flushCipherSuiteRead, flushCipherSuiteWrite, setKeys, getKeys,+ getInitSet, setInitSet, getClientFinished, setClientFinished, getServerFinished, setServerFinished,++ InitialSettings, ) type TlsM h g = ErrorT S.Alert (StateT (S.HandshakeState h g) (HandleMonad h))@@ -74,6 +78,12 @@ getKeys :: HandleLike h => S.PartnerId -> TlsM h g S.Keys getKeys = gets . S.getKeys++getInitSet :: HandleLike h => S.PartnerId -> TlsM h g S.InitialSettings+getInitSet = gets . S.getInitSet++setInitSet :: HandleLike h => S.PartnerId -> S.InitialSettings -> TlsM h g ()+setInitSet = (modify .) . S.setInitSet getClientFinished, getServerFinished :: HandleLike h => S.PartnerId -> TlsM h g BS.ByteString