diff options
Diffstat (limited to 'Utility')
-rw-r--r-- | Utility/ExternalSHA.hs | 3 | ||||
-rw-r--r-- | Utility/Hash.hs | 29 | ||||
-rw-r--r-- | Utility/WebApp.hs | 4 |
3 files changed, 33 insertions, 3 deletions
diff --git a/Utility/ExternalSHA.hs b/Utility/ExternalSHA.hs index 21241d302..adbde795a 100644 --- a/Utility/ExternalSHA.hs +++ b/Utility/ExternalSHA.hs @@ -1,6 +1,7 @@ {- Calculating a SHA checksum with an external command. - - - This is often faster than using Haskell libraries. + - This is typically a bit faster than using Haskell libraries, + - by around 1% to 10%. Worth it for really big files. - - Copyright 2011-2013 Joey Hess <joey@kitenet.net> - diff --git a/Utility/Hash.hs b/Utility/Hash.hs new file mode 100644 index 000000000..31a36462c --- /dev/null +++ b/Utility/Hash.hs @@ -0,0 +1,29 @@ +{- Convenience wrapper around cryptohash. + - + - The resulting Digests can be shown to get a canonical hash encoding. -} + +module Utility.Hash where + +import Crypto.Hash +import qualified Data.ByteString.Lazy as L + +sha1 :: L.ByteString -> Digest SHA1 +sha1 = hashlazy + +sha224 :: L.ByteString -> Digest SHA224 +sha224 = hashlazy + +sha256 :: L.ByteString -> Digest SHA256 +sha256 = hashlazy + +sha384 :: L.ByteString -> Digest SHA384 +sha384 = hashlazy + +sha512 :: L.ByteString -> Digest SHA512 +sha512 = hashlazy + +-- sha3 is not yet fully standardized +--sha3 :: L.ByteString -> Digest SHA3 +--sha3 = hashlazy + + diff --git a/Utility/WebApp.hs b/Utility/WebApp.hs index f3c0d3a6b..c078a5643 100644 --- a/Utility/WebApp.hs +++ b/Utility/WebApp.hs @@ -12,6 +12,7 @@ module Utility.WebApp where import Common import Utility.Tmp import Utility.FileMode +import Utility.Hash import qualified Yesod import qualified Network.Wai as Wai @@ -24,7 +25,6 @@ import qualified Data.CaseInsensitive as CI import Network.Socket import Control.Exception import Crypto.Random -import Data.Digest.Pure.SHA import qualified Web.ClientSession as CS import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.Lazy.UTF8 as L8 @@ -214,7 +214,7 @@ genRandomToken = do return $ case genBytes 512 g of Left e -> error $ "failed to generate secret token: " ++ show e - Right (s, _) -> showDigest $ sha512 $ L.fromChunks [s] + Right (s, _) -> show $ sha512 $ L.fromChunks [s] {- A Yesod isAuthorized method, which checks the auth cgi parameter - against a token extracted from the Yesod application. |