mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-01-12 23:38:29 +01:00
48 lines
1.6 KiB
Diff
48 lines
1.6 KiB
Diff
diff -ru orig/Crypto/PasswordStore.hs new/Crypto/PasswordStore.hs
|
|
--- orig/Crypto/PasswordStore.hs 2013-09-17 11:48:49.178111970 +0300
|
|
+++ new/Crypto/PasswordStore.hs 2013-09-17 11:48:49.000000000 +0300
|
|
@@ -1,4 +1,5 @@
|
|
{-# LANGUAGE OverloadedStrings, BangPatterns #-}
|
|
+{-# LANGUAGE CPP #-}
|
|
-- |
|
|
-- Module : Crypto.PasswordStore
|
|
-- Copyright : (c) Peter Scott, 2011
|
|
@@ -149,8 +150,8 @@
|
|
-> ByteString
|
|
-- ^ The encoded message
|
|
hmacSHA256 secret msg =
|
|
- let digest = SHA.hmacSha256 (BL.fromStrict secret) (BL.fromStrict msg)
|
|
- in BL.toStrict . SHA.bytestringDigest $ digest
|
|
+ let digest = SHA.hmacSha256 (fromStrict secret) (fromStrict msg)
|
|
+ in toStrict . SHA.bytestringDigest $ digest
|
|
|
|
-- | PBKDF2 key-derivation function.
|
|
-- For details see @http://tools.ietf.org/html/rfc2898@.
|
|
@@ -403,3 +404,26 @@
|
|
where (a, g') = randomR ('\NUL', '\255') g
|
|
salt = makeSalt $ B.pack $ map fst (rands gen 16)
|
|
newgen = snd $ last (rands gen 16)
|
|
+
|
|
+#if !MIN_VERSION_base(4, 6, 0)
|
|
+-- | Strict version of 'modifySTRef'
|
|
+modifySTRef' :: STRef s a -> (a -> a) -> ST s ()
|
|
+modifySTRef' ref f = do
|
|
+ x <- readSTRef ref
|
|
+ let x' = f x
|
|
+ x' `seq` writeSTRef ref x'
|
|
+#endif
|
|
+
|
|
+#if MIN_VERSION_bytestring(0, 10, 0)
|
|
+toStrict :: BL.ByteString -> BS.ByteString
|
|
+toStrict = BL.toStrict
|
|
+
|
|
+fromStrict :: BS.ByteString -> BL.ByteString
|
|
+fromStrict = BL.fromStrict
|
|
+#else
|
|
+toStrict :: BL.ByteString -> BS.ByteString
|
|
+toStrict = BS.concat . BL.toChunks
|
|
+
|
|
+fromStrict :: BS.ByteString -> BL.ByteString
|
|
+fromStrict = BL.fromChunks . return
|
|
+#endif
|