clientsession 0.4.1 → 0.5.0
raw patch · 3 files changed
+15/−14 lines, 3 filesdep +asciiPVP ok
version bump matches the API change (PVP)
Dependencies added: ascii
API changes (from Hackage documentation)
- Web.ClientSession: decrypt :: ByteString -> ByteString -> Maybe ByteString
+ Web.ClientSession: decrypt :: ByteString -> Ascii -> Maybe ByteString
- Web.ClientSession: encrypt :: ByteString -> ByteString -> ByteString
+ Web.ClientSession: encrypt :: ByteString -> ByteString -> Ascii
Files
- Web/ClientSession.hs +7/−4
- clientsession.cabal +4/−3
- runtests.hs +4/−7
Web/ClientSession.hs view
@@ -41,6 +41,7 @@ import Foreign.Storable import System.IO.Unsafe import Language.Haskell.TH+import qualified Data.Ascii as A type Key = S.ByteString @@ -101,8 +102,8 @@ encrypt :: S.ByteString -- ^ key -> S.ByteString -- ^ data- -> S.ByteString-encrypt keyBS dataBS = unsafePerformIO $+ -> A.Ascii+encrypt keyBS dataBS = A.unsafeFromByteString $ unsafePerformIO $ unsafeUseAsCString keyBS $ \keyPtr -> unsafeUseAsCStringLen dataBS $ \(dataPtr, dataLen) -> do let keyPtr' = castPtr keyPtr@@ -116,9 +117,9 @@ unsafePackCStringFinalizer newPtr' len' $ free newPtr' decrypt :: S.ByteString -- ^ key- -> S.ByteString -- ^ data+ -> A.Ascii -- ^ data -> Maybe S.ByteString-decrypt keyBS dataBS = unsafePerformIO $+decrypt keyBS dataA = unsafePerformIO $ unsafeUseAsCString keyBS $ \keyPtr -> unsafeUseAsCStringLen dataBS $ \(dataPtr, dataLen) -> do let keyPtr' = castPtr keyPtr@@ -135,6 +136,8 @@ bs <- unsafePackCStringFinalizer newPtr' len' $ free newPtr' return $ Just bs+ where+ dataBS = A.toByteString dataA foreign import ccall unsafe "encrypt" c_encrypt :: CUInt -> Ptr CUChar -> Ptr CUChar -> Ptr CUInt
clientsession.cabal view
@@ -1,5 +1,5 @@ name: clientsession-version: 0.4.1+version: 0.5.0 license: BSD3 license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -13,7 +13,7 @@ build-type: Simple homepage: http://github.com/snoyberg/clientsession/tree/master -flag buildtests+flag test description: Build the executable to run unit tests default: False @@ -22,13 +22,14 @@ bytestring >= 0.9 && < 0.10, directory >= 1 && < 1.2, random >= 1.0.0.2 && < 1.1,+ ascii >= 0.0.2 && < 0.1, template-haskell exposed-modules: Web.ClientSession ghc-options: -Wall c-sources: c/aestable.c c/helper.c executable runtests- if flag(buildtests)+ if flag(test) Buildable: True cpp-options: -DTEST build-depends: test-framework,
runtests.hs view
@@ -12,7 +12,7 @@ import Web.ClientSession import System.IO.Unsafe-import Data.Word+import qualified Data.Ascii as A main :: IO () main = defaultMain@@ -33,15 +33,15 @@ propEncDecFailure :: S.ByteString -> Bool propEncDecFailure bs = unsafePerformIO $ do key <- getDefaultKey- let s = encrypt key bs- let bs' = decrypt key $ (S.head s + 1) `S.cons` S.drop 1 s+ let s = A.toByteString $ encrypt key bs+ let bs' = decrypt key $ A.unsafeFromByteString $ (S.head s + 1) `S.cons` S.drop 1 s return $ Just bs /= bs' propAES :: S.ByteString -> S.ByteString -> Bool propAES key bs = decrypt key (encrypt key bs) == Just bs propAESChanges :: S.ByteString -> S.ByteString -> Bool-propAESChanges key bs = encrypt key bs /= bs+propAESChanges key bs = A.toByteString (encrypt key bs) /= bs caseSpecific :: Assertion caseSpecific = do@@ -53,6 +53,3 @@ instance Arbitrary S.ByteString where arbitrary = S.pack `fmap` arbitrary--instance Arbitrary Word8 where- arbitrary = arbitraryBoundedIntegral