peyotls 0.1.5.5 → 0.1.6.0
raw patch · 4 files changed
+15/−9 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Network.PeyoTLS.Client: getCertificate :: HandleLike h => TlsHandle h g -> TlsM h g SignedCertificate
- Network.PeyoTLS.TChan.Client: open :: (CPRG g, ValidateHandle h, MonadBaseControl IO (HandleMonad h)) => h -> [CipherSuite] -> [(CertSecretKey, CertificateChain)] -> CertificateStore -> g -> HandleMonad h (String -> Bool, (TChan ByteString, TChan ByteString))
+ Network.PeyoTLS.TChan.Client: open :: (CPRG g, ValidateHandle h, MonadBaseControl IO (HandleMonad h)) => h -> [CipherSuite] -> [(CertSecretKey, CertificateChain)] -> CertificateStore -> g -> HandleMonad h ((String -> Bool, SignedCertificate), (TChan ByteString, TChan ByteString))
Files
- peyotls.cabal +2/−2
- src/Network/PeyoTLS/Client.hs +1/−1
- src/Network/PeyoTLS/Client/Body.hs +6/−3
- src/Network/PeyoTLS/TChan/Client.hs +6/−3
peyotls.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8 name: peyotls-version: 0.1.5.5+version: 0.1.6.0 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.1.5.5+ tag: peyotls-0.1.6.0 library hs-source-dirs: src
src/Network/PeyoTLS/Client.hs view
@@ -11,7 +11,7 @@ module Network.PeyoTLS.Client ( -- * Basic PeyotlsM, PeyotlsHandle, TlsM, TlsHandle, Alert(..),- run, open, open', getNames, checkName,+ run, open, open', getNames, getCertificate, checkName, -- * Renegotiation renegotiate, setCipherSuites, setKeyCerts, setCertificateStore, -- * Cipher Suite
src/Network/PeyoTLS/Client/Body.hs view
@@ -14,7 +14,7 @@ -- * Basic TlsState(..), State1(..), Keys(..), toCheckName, PeyotlsM, PeyotlsHandle, TlsM, TlsHandle, Alert(..),- run, run', open, open', getNames, checkName,+ run, run', open, open', getNames, getCertificate, checkName, -- * Renegotiation renegotiate, setCipherSuites, setKeyCerts, setCertificateStore, -- * Cipher Suite@@ -25,7 +25,7 @@ import Control.Applicative ((<$>), (<*>)) import Control.Monad (when, unless, liftM, ap) import "monads-tf" Control.Monad.Error.Class (strMsg)-import Data.Maybe (fromMaybe)+import Data.Maybe (fromMaybe, fromJust) import Data.List (find, intersect) import Data.Function (on) import Data.HandleLike (HandleLike(..))@@ -43,7 +43,7 @@ import qualified Crypto.PubKey.RSA.PKCS15 as RSA import qualified "monads-tf" Control.Monad.Error as E -import qualified Network.PeyoTLS.Base as BASE (getNames)+import qualified Network.PeyoTLS.Base as BASE (getNames, getCertificate) import Network.PeyoTLS.Base ( debug, wFlush, TlsState(..), State1(..), Keys(..), PeyotlsM, TlsM, run, run',@@ -91,6 +91,9 @@ getNames :: HandleLike h => TlsHandle h g -> TlsM h g [String] getNames = BASE.getNames . tlsHandleC++getCertificate :: HandleLike h => TlsHandle h g -> TlsM h g X509.SignedCertificate+getCertificate = (fromJust `liftM`) . BASE.getCertificate . tlsHandleC checkName :: HandleLike h => TlsHandle h g -> String -> TlsM h g Bool checkName t n = flip toCheckName n `liftM` getNames t
src/Network/PeyoTLS/TChan/Client.hs view
@@ -14,6 +14,7 @@ import Control.Monad.Base import Control.Concurrent import Control.Concurrent.STM+import Data.Maybe import Data.Word import Data.HandleLike import Data.X509@@ -71,11 +72,13 @@ open :: (CPRG g, ValidateHandle h, MonadBaseControl IO (HandleMonad h)) => h -> [CipherSuite] -> [(CertSecretKey, CertificateChain)] -> CertificateStore -> g ->- HandleMonad h (String -> Bool, (TChan BSC.ByteString, TChan BSC.ByteString))+ HandleMonad h (+ (String -> Bool, SignedCertificate),+ (TChan BSC.ByteString, TChan BSC.ByteString)) open h cs kc ca g = do inc <- liftBase $ atomically newTChan otc <- liftBase $ atomically newTChan- ((k, ns, _), g') <- (`run'` g) $ C.open h cs kc ca+ ((k, ns, crt), g') <- (`run'` g) $ C.open h cs kc ca let rk = kRKey k rmk = kRMKey k wk = kWKey k@@ -102,7 +105,7 @@ _ -> error "Network.PeyoTLS.TChan.Client.open': bad" Right pln = decrypt hs rk rmk sn pre enc liftBase . atomically $ writeTChan inc pln- return (toCheckName ns, (inc, otc))+ return ((toCheckName ns, fromJust crt), (inc, otc)) putEncrypted :: (HandleLike h, CPRG g) => h -> (Hash, Int) -> BSC.ByteString -> BSC.ByteString