@@ -19,6 +19,7 @@ module System.Nix.Internal.Hash
1919 )
2020where
2121
22+ import Crypto.Hash (Digest )
2223import qualified Text.Show
2324import qualified Crypto.Hash as C
2425import qualified Data.ByteString as BS
@@ -45,11 +46,23 @@ instance NamedAlgo C.SHA512 where
4546 algoName = " sha512"
4647
4748-- | A digest whose 'NamedAlgo' is not known at compile time.
48- data SomeNamedDigest = forall a . NamedAlgo a => SomeDigest (C. Digest a )
49+ data SomeNamedDigest = forall a . NamedAlgo a => SomeDigest (Digest a )
4950
5051instance Show SomeNamedDigest where
5152 show sd = case sd of
52- SomeDigest (digest :: C. Digest hashType ) -> toString $ " SomeDigest " <> algoName @ hashType <> " :" <> encodeDigestWith NixBase32 digest
53+ SomeDigest (digest :: Digest hashType ) -> toString $ " SomeDigest " <> algoName @ hashType <> " :" <> encodeDigestWith NixBase32 digest
54+
55+ instance Eq SomeNamedDigest where
56+ (==) (SomeDigest (a :: Digest aType ))
57+ (SomeDigest (b :: Digest bType ))
58+ = algoName @ aType == algoName @ bType
59+ && encodeDigestWith NixBase32 a == encodeDigestWith NixBase32 b
60+
61+ instance Ord SomeNamedDigest where
62+ (<=) (SomeDigest (a :: Digest aType ))
63+ (SomeDigest (b :: Digest bType ))
64+ = algoName @ aType <= algoName @ bType
65+ && encodeDigestWith NixBase32 a <= encodeDigestWith NixBase32 b
5366
5467mkNamedDigest :: Text -> Text -> Either String SomeNamedDigest
5568mkNamedDigest name sriHash =
0 commit comments