License | BSD3 |
---|---|
Maintainer | Marcello Seri <marcello.seri@gmail.com> |
Stability | experimental |
Portability | unknown |
Safe Haskell | None |
Language | Haskell2010 |
Crypto.Multihash
Description
Multihash library built on top of haskell cryptonite
crypto package
Multihash is a protocol for encoding the hash algorithm and digest length
at the start of the digest, see the official
multihash poroposal github repo.
The library re-exports the needed types and typclasses from Algorithms
namely HashAlgorithm
, SHA1
, SHA256
, SHA512
, SHA3_512
, SHA3_384
,
SHA3_256
, SHA3_224
, Blake2b_512
, Blake2s_256
.
For additional informations refer to the README.md or the gihub repository.
- data MultihashDigest a
- data Base
- class Codable a where
- encode :: (HashAlgorithm a, Codable a, Show a) => Base -> MultihashDigest a -> Either String String
- encode' :: (HashAlgorithm a, Codable a, Show a) => Base -> MultihashDigest a -> String
- multihash :: (HashAlgorithm a, Codable a, ByteArrayAccess bs) => a -> bs -> MultihashDigest a
- multihashlazy :: (HashAlgorithm a, Codable a) => a -> ByteString -> MultihashDigest a
- checkMultihash :: ByteArrayAccess bs => ByteString -> bs -> Either String Bool
- class HashAlgorithm a
- data SHA1 :: * = SHA1
- data SHA256 :: * = SHA256
- data SHA512 :: * = SHA512
- data SHA3_512 :: * = SHA3_512
- data SHA3_384 :: * = SHA3_384
- data SHA3_256 :: * = SHA3_256
- data SHA3_224 :: * = SHA3_224
- data Blake2b_512 :: * = Blake2b_512
- data Blake2s_256 :: * = Blake2s_256
Multihash Types
data MultihashDigest a Source #
Multihash Digest container
Instances
Eq a => Eq (MultihashDigest a) Source # | |
Show (MultihashDigest a) Source # | |
Base
usable to encode the digest
class Codable a where Source #
Codable
hash algorithms are the algorithms supported for multihashing
Minimal complete definition
Multihash helpers
encode :: (HashAlgorithm a, Codable a, Show a) => Base -> MultihashDigest a -> Either String String Source #
Safe encoder for MultihashDigest
.
encode' :: (HashAlgorithm a, Codable a, Show a) => Base -> MultihashDigest a -> String Source #
Encoder for MultihashDigest
.
Throws an error if the MultihashDigest
length field does not match the Digest
length.
multihash :: (HashAlgorithm a, Codable a, ByteArrayAccess bs) => a -> bs -> MultihashDigest a Source #
Helper to multihash a ByteArrayAccess
(e.g. a ByteString
) using a supported hash algorithm.
multihashlazy :: (HashAlgorithm a, Codable a) => a -> ByteString -> MultihashDigest a Source #
Helper to multihash a lazy ByteString
using a supported hash algorithm.
checkMultihash :: ByteArrayAccess bs => ByteString -> bs -> Either String Bool Source #
Check the correctness of an encoded MultihashDigest
against the data it
is supposed to have hashed, passed as a ByteArrayAccess
(e.g. a BinaryString
).
Re-exported types
class HashAlgorithm a #
Class representing hashing algorithms.
The interface presented here is update in place and lowlevel. the Hash module takes care of hidding the mutable interface properly.
Minimal complete definition
hashBlockSize, hashDigestSize, hashInternalContextSize, hashInternalInit, hashInternalUpdate, hashInternalFinalize
SHA1 cryptographic hash algorithm
Constructors
SHA1 |
SHA256 cryptographic hash algorithm
Constructors
SHA256 |
SHA512 cryptographic hash algorithm
Constructors
SHA512 |
SHA3 (512 bits) cryptographic hash algorithm
Constructors
SHA3_512 |
SHA3 (384 bits) cryptographic hash algorithm
Constructors
SHA3_384 |
SHA3 (256 bits) cryptographic hash algorithm
Constructors
SHA3_256 |
SHA3 (224 bits) cryptographic hash algorithm
Constructors
SHA3_224 |
data Blake2b_512 :: * #
Blake2b (512 bits) cryptographic hash algorithm
Constructors
Blake2b_512 |
Instances
data Blake2s_256 :: * #
Blake2s (256 bits) cryptographic hash algorithm
Constructors
Blake2s_256 |
Instances