@@ -41,7 +41,8 @@ import Crypto.Hash.Conduit (hashFile)
4141import Crypto.Hash as Hash (hashlazy , Digest , SHA256 )
4242import Data.Aeson.Extended
4343import Data.Attoparsec.Text as A
44- import qualified Data.ByteArray.Encoding as Mem (convertToBase , Base (Base16 ))
44+ import qualified Data.ByteArray
45+ import qualified Data.ByteArray.Encoding as Mem
4546import qualified Data.ByteString.Lazy as L
4647import qualified Data.Text as T
4748import Data.Text.Encoding (decodeUtf8 , encodeUtf8 )
@@ -117,12 +118,23 @@ newtype CabalHash = CabalHash { unCabalHash :: StaticSHA256 }
117118
118119-- | A SHA256 hash, stored in a static size for more efficient
119120-- serialization with store.
120- newtype StaticSHA256 = StaticSHA256 Bytes64
121+ newtype StaticSHA256 = StaticSHA256 Bytes32
121122 deriving (Generic , Show , Eq , NFData , Data , Typeable , Ord , Hashable , Store )
122123
123124-- | Generate a 'StaticSHA256' value from a base16-encoded SHA256 hash.
124- mkStaticSHA256FromText :: Text -> Either StaticBytesException StaticSHA256
125- mkStaticSHA256FromText = fmap StaticSHA256 . toStaticExact . encodeUtf8
125+ mkStaticSHA256FromText :: Text -> Either SomeException StaticSHA256
126+ mkStaticSHA256FromText t =
127+ mapLeft (toException . stringException) (Mem. convertFromBase Mem. Base16 (encodeUtf8 t))
128+ >>= either (Left . toE) (Right . StaticSHA256 )
129+ . toStaticExact
130+ . (id :: ByteString -> ByteString )
131+ where
132+ toE e = toException $ stringException $ concat
133+ [ " Unable to convert "
134+ , show t
135+ , " into SHA256: "
136+ , show e
137+ ]
126138
127139-- | Generate a 'StaticSHA256' value from the contents of a file.
128140mkStaticSHA256FromFile :: MonadIO m => Path Abs File -> m StaticSHA256
@@ -133,18 +145,18 @@ fromDigest digest
133145 = StaticSHA256
134146 $ either impureThrow id
135147 $ toStaticExact
136- (Mem. convertToBase Mem. Base16 digest :: ByteString )
148+ (Data.ByteArray. convert digest :: ByteString )
137149
138150-- | Convert a 'StaticSHA256' into a base16-encoded SHA256 hash.
139151staticSHA256ToText :: StaticSHA256 -> Text
140152staticSHA256ToText = decodeUtf8 . staticSHA256ToBase16
141153
142154-- | Convert a 'StaticSHA256' into a base16-encoded SHA256 hash.
143155staticSHA256ToBase16 :: StaticSHA256 -> ByteString
144- staticSHA256ToBase16 (StaticSHA256 x) = fromStatic x
156+ staticSHA256ToBase16 (StaticSHA256 x) = Mem. convertToBase Mem. Base16 x
145157
146158-- | Generate a 'CabalHash' value from a base16-encoded SHA256 hash.
147- mkCabalHashFromSHA256 :: Text -> Either StaticBytesException CabalHash
159+ mkCabalHashFromSHA256 :: Text -> Either SomeException CabalHash
148160mkCabalHashFromSHA256 = fmap CabalHash . mkStaticSHA256FromText
149161
150162-- | Convert a 'CabalHash' into a base16-encoded SHA256 hash.
0 commit comments