diff --git a/ghcup.cabal b/ghcup.cabal index 0833da98..9c50d685 100644 --- a/ghcup.cabal +++ b/ghcup.cabal @@ -185,7 +185,7 @@ library , casing ^>=0.1.4.1 , containers ^>=0.6 , conduit ^>=1.3 - , cryptohash-sha256 ^>=0.11.101.0 + , SHA ^>=1.6.4.4 , deepseq ^>=1.4.4.0 , directory ^>=1.3.6.0 , disk-free-space ^>=0.1.0.1 diff --git a/lib/GHCup/Download.hs b/lib/GHCup/Download.hs index 21696411..4ea10d96 100644 --- a/lib/GHCup/Download.hs +++ b/lib/GHCup/Download.hs @@ -80,14 +80,16 @@ import System.IO.Error import System.IO.Temp import URI.ByteString hiding (parseURI) -import qualified Crypto.Hash.SHA256 as SHA256 +import qualified Data.Digest.Pure.SHA as SHA256 import qualified Data.ByteString as B -import qualified Data.ByteString.Base16 as B16 +import qualified Data.ByteString.Base16.Lazy as B16 import qualified Data.ByteString.Lazy as L import qualified Data.Map.Strict as M import qualified Data.Text as T +import qualified Data.Text.Lazy as TL import qualified Data.Text.IO as T import qualified Data.Text.Encoding as E +import qualified Data.Text.Lazy.Encoding as EL import qualified Data.Yaml.Aeson as Y @@ -807,7 +809,7 @@ checkDigest eDigest file = do let p' = takeFileName file lift $ logInfo $ "verifying digest of: " <> T.pack p' c <- liftIO $ L.readFile file - cDigest <- throwEither . E.decodeUtf8' . B16.encode . SHA256.hashlazy $ c + cDigest <- fmap TL.toStrict . throwEither . EL.decodeUtf8' . B16.encode . SHA256.bytestringDigest . SHA256.sha256 $ c when ((cDigest /= eDigest) && verify) $ throwE (DigestError file cDigest eDigest) checkCSize :: ( MonadReader env m diff --git a/lib/GHCup/GHC.hs b/lib/GHCup/GHC.hs index 48adfbfb..d13b73c7 100644 --- a/lib/GHCup/GHC.hs +++ b/lib/GHCup/GHC.hs @@ -69,14 +69,15 @@ import Text.PrettyPrint.HughesPJClass ( prettyShow ) import Text.Regex.Posix import URI.ByteString -import qualified Crypto.Hash.SHA256 as SHA256 -import qualified Data.ByteString.Base16 as B16 +import qualified Data.Digest.Pure.SHA as SHA256 +import qualified Data.ByteString.Base16.Lazy as B16 import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as BL import qualified Data.Map.Strict as Map import qualified Data.Text as T +import qualified Data.Text.Lazy as TL import qualified Data.Text.IO as T -import qualified Data.Text.Encoding as E +import qualified Data.Text.Lazy.Encoding as EL import qualified Text.Megaparsec as MP @@ -1209,12 +1210,13 @@ compileGHC targetGhc crossTarget vps bstrap jobs mbuildConfig patches aargs buil pfreq <- lift getPlatformReq c <- liftIO $ BL.readFile (workdir tar) cDigest <- - fmap (T.take 8) + fmap (TL.take 8) . lift . throwEither - . E.decodeUtf8' + . EL.decodeUtf8' . B16.encode - . SHA256.hashlazy + . SHA256.bytestringDigest + . SHA256.sha256 $ c cTime <- liftIO getCurrentTime let tarName = makeValid ("ghc-" @@ -1224,7 +1226,7 @@ compileGHC targetGhc crossTarget vps bstrap jobs mbuildConfig patches aargs buil <> "-" <> iso8601Show cTime <> "-" - <> T.unpack cDigest + <> TL.unpack cDigest <> ".tar" <> takeExtension tar) let tarPath = fromGHCupPath cacheDir tarName