HsOpenSSL 0.11.4.3 → 0.11.4.4
raw patch · 4 files changed
+61/−2 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ChangeLog +8/−0
- HsOpenSSL.cabal +14/−1
- OpenSSL/EVP/Internal.hsc +1/−1
- Test/OpenSSL/EVP/Digest.hs +38/−0
ChangeLog view
@@ -1,3 +1,11 @@+2017-03-24 Vladimir Shabanov <vshabanoff@gmail.com>++ * HsOpenSSL.cabal (Version): Bump version to 0.11.4.4++ * OpenSSL/EVP/Digest.hsc (hmacLBS): fixed linking error (#19).++ * Tests/OpenSSL/EVP/Digest.hs: added tests for hmacBS and hmacLBS.+ 2017-03-22 Vladimir Shabanov <vshabanoff@gmail.com> * HsOpenSSL.cabal (Version): Bump version to 0.11.4.3
HsOpenSSL.cabal view
@@ -12,7 +12,7 @@ <http://hackage.haskell.org/package/tls>, which is a pure Haskell implementation of SSL. .-Version: 0.11.4.3+Version: 0.11.4.4 License: PublicDomain License-File: COPYING Author: Adam Langley, Mikhail Vorozhtsov, PHO, Taru Karttunen@@ -168,6 +168,19 @@ Test-Suite test-evp-base64 Type: exitcode-stdio-1.0 Main-Is: Test/OpenSSL/EVP/Base64.hs+ Other-Modules: Test.OpenSSL.TestUtils+ Build-Depends:+ HsOpenSSL,+ base >= 4.4 && < 5,+ bytestring >= 0.9 && < 0.11+ Default-Language:+ Haskell2010+ GHC-Options:+ -Wall++Test-Suite test-evp-digest+ Type: exitcode-stdio-1.0+ Main-Is: Test/OpenSSL/EVP/Digest.hs Other-Modules: Test.OpenSSL.TestUtils Build-Depends: HsOpenSSL,
OpenSSL/EVP/Internal.hsc view
@@ -327,7 +327,7 @@ newtype HmacCtx = HmacCtx (ForeignPtr HMAC_CTX) data HMAC_CTX -foreign import ccall unsafe "HsOpenSSL_HMAC_CTX_init"+foreign import ccall unsafe "HsOpenSSL_HMAC_CTX_new" _hmac_ctx_new :: IO (Ptr HMAC_CTX) foreign import ccall unsafe "HMAC_Init"
+ Test/OpenSSL/EVP/Digest.hs view
@@ -0,0 +1,38 @@+module Main (main) where++import qualified Data.ByteString.Char8 as B+import qualified Data.ByteString.Lazy.Char8 as BL+import Data.Char+import OpenSSL+import Text.Printf+import OpenSSL.EVP.Digest+import Test.OpenSSL.TestUtils++main :: IO ()+main = withOpenSSL $ do+ Just md5 <- getDigestByName "MD5"+ Just sha1 <- getDigestByName "SHA1"+ Just sha256 <- getDigestByName "SHA256"+ let hex = concatMap (printf "%02x" . ord) . B.unpack+ checkHMAC digestName key testData result = do+ assertEqual what result $+ hex $ hmacBS d (B.pack key) (B.pack testData)+ assertEqual ("lazy " ++ what) result $+ hex $ hmacLBS d (B.pack key) (BL.pack testData)+ where what =+ "HMAC_" ++ digestName +++ "(" ++ show key ++ ", " ++ show testData ++ ")"+ d = case digestName of+ "MD5" -> md5+ "SHA1" -> sha1+ "SHA256" -> sha256+ _ -> error digestName+ -- test data from+ -- https://en.wikipedia.org/wiki/Hash-based_message_authentication_code++ checkHMAC "MD5" "" "" "74e6f7298a9c2d168935f58c001bad88"+ checkHMAC "SHA1" "" "" "fbdb1d1b18aa6c08324b7d64b71fb76370690e1d"+ checkHMAC "SHA256" "" "" "b613679a0814d9ec772f95d778c35fc5ff1697c493715653c6c712144292c5ad"+ checkHMAC "MD5" "key" "The quick brown fox jumps over the lazy dog" "80070713463e7749b90c2dc24911e275"+ checkHMAC "SHA1" "key" "The quick brown fox jumps over the lazy dog" "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"+ checkHMAC "SHA256" "key" "The quick brown fox jumps over the lazy dog" "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"