diff --git a/cardano-crypto-class/CHANGELOG.md b/cardano-crypto-class/CHANGELOG.md index e2042ef3d..228344f35 100644 --- a/cardano-crypto-class/CHANGELOG.md +++ b/cardano-crypto-class/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog for `cardano-crypto-class` +## 2.1.5.0 +* Add `RIMPEMD160` hashing function using `cryptonite` library + [#480](https://github.com/input-output-hk/cardano-base/pull/480) + ## 2.1.2.0 * Included bindings to `blst` library to enable operations over curve BLS12-381 diff --git a/cardano-crypto-class/cardano-crypto-class.cabal b/cardano-crypto-class/cardano-crypto-class.cabal index 6785af3a6..2a531846b 100644 --- a/cardano-crypto-class/cardano-crypto-class.cabal +++ b/cardano-crypto-class/cardano-crypto-class.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: cardano-crypto-class -version: 2.1.4.0 +version: 2.1.5.0 synopsis: Type classes abstracting over cryptography primitives for Cardano @@ -52,6 +52,7 @@ library Cardano.Crypto.Hash.Class Cardano.Crypto.Hash.Keccak256 Cardano.Crypto.Hash.NeverUsed + Cardano.Crypto.Hash.RIPEMD160 Cardano.Crypto.Hash.SHA256 Cardano.Crypto.Hash.SHA3_256 Cardano.Crypto.Hash.Short diff --git a/cardano-crypto-class/src/Cardano/Crypto/Hash/RIPEMD160.hs b/cardano-crypto-class/src/Cardano/Crypto/Hash/RIPEMD160.hs new file mode 100644 index 000000000..861756e17 --- /dev/null +++ b/cardano-crypto-class/src/Cardano/Crypto/Hash/RIPEMD160.hs @@ -0,0 +1,23 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE PackageImports #-} +{-# LANGUAGE TypeFamilies #-} + +-- | Implementation of the RIPEMD-160 hashing algorithm. +module Cardano.Crypto.Hash.RIPEMD160 + ( RIPEMD160 + ) + where + +import Cardano.Crypto.Hash.Class +import qualified "cryptonite" Crypto.Hash as H +import qualified Data.ByteArray as BA + +data RIPEMD160 + +instance HashAlgorithm RIPEMD160 where + type SizeHash RIPEMD160 = 20 + hashAlgorithmName _ = "RIPEMD160" + digest _ = convert . H.hash + +convert :: H.Digest H.RIPEMD160 -> ByteString +convert = BA.convert