@@ -6,8 +6,8 @@ import qualified Control.Exception as Exception
66import Control.Monad
77import Control.Monad.IO.Class
88import Control.Monad.Trans.Maybe
9−import qualified Data.ByteString.Lazy.Char8 as BS8
10−import Data.Digest.Pure.SHA ( sha256, showDigest )
9+import qualified Data.ByteString.Lazy.Char8 as LBS8
10+import qualified Data.ByteString.Char8 as SBS8
1111import Data.List ( isSuffixOf, isPrefixOf )
1212import Data.Maybe
1313import Data.Version
@@ -18,6 +18,7 @@ import qualified Distribution.Package as Cabal
1818import Distribution.PackageDescription
1919import qualified Distribution.PackageDescription as Cabal
2020import Distribution.Text ( simpleParse )
21+import OpenSSL.Digest ( digest, digestByName, toHex )
2122import System.Directory ( doesDirectoryExist, doesFileExist, createDirectoryIfMissing, getHomeDirectory, getDirectoryContents )
2223import System.Exit ( exitFailure )
2324import System.FilePath ( (</>), (<.>) )
@@ -145,8 +146,8 @@ cabalFromFile failHard file =
145146 -- wrap the whole block in `catchIO`, because of lazy IO. The `case` will force
146147 -- the reading of the file, so we will always catch the expression here.
147148 MaybeT $ handleIO (\err -> Nothing <$ hPutStrLn stderr ("*** parsing cabal file: " ++ show err)) $ do
148− buf <- BS8.readFile file
149− let hash = showDigest (sha256 buf)
149+ buf <- LBS8.readFile file
150+ let hash = SBS8.unpack (toHex (digest (digestByName "sha256") buf))
150151 case parsePackage' buf of
151152 Left msg -> if failHard
152153 then fail ("*** cannot parse " ++ show file ++ ": " ++ msg)