| 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
- class Encodable a where
- encode :: IsString s => Base -> a -> Either String s
- encode' :: IsString s => Base -> a -> s
- check :: (IsString s, ConvertibleStrings s ByteString) => s -> a -> Either String Bool
- check' :: (IsString s, ConvertibleStrings s ByteString) => s -> a -> Bool
- class Checkable b where
- checkPayload :: (IsString s, ConvertibleStrings s ByteString) => s -> b -> Either String Bool
- checkPayload' :: (IsString s, ConvertibleStrings s ByteString) => s -> b -> Bool
- newtype Payload bs = Payload bs
- multihash :: (HashAlgorithm a, Codable a, ByteArrayAccess bs) => a -> bs -> MultihashDigest a
- multihashlazy :: (HashAlgorithm a, Codable a) => a -> ByteString -> MultihashDigest a
- checkMultihash :: (IsString s, ConvertibleStrings s ByteString, ByteArrayAccess bs) => s -> bs -> Either String Bool
- checkMultihash' :: (IsString s, ConvertibleStrings s ByteString, ByteArrayAccess bs) => s -> bs -> 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 | |
| (HashAlgorithm a, Codable a) => Show (MultihashDigest a) Source | |
| (HashAlgorithm a, Codable a) => Encodable (MultihashDigest a) Source |
Base usable to encode the digest
Codable hash algorithms are the algorithms supported for multihashing
class Encodable a where Source
Methods
encode :: IsString s => Base -> a -> Either String s Source
Safe encoder for Encodable.
encode' :: IsString s => Base -> a -> s Source
Unsafe encoder for Encodable.
Throws an error if there are encoding issues.
check :: (IsString s, ConvertibleStrings s ByteString) => s -> a -> Either String Bool Source
check' :: (IsString s, ConvertibleStrings s ByteString) => s -> a -> Bool Source
Unsafe version of check. Throws on encoding/decoding errors instead of returning an Either type.
Instances
| Encodable WeakMultihashDigest Source | |
| (HashAlgorithm a, Codable a) => Encodable (MultihashDigest a) Source |
class Checkable b where Source
Minimal complete definition
Methods
checkPayload :: (IsString s, ConvertibleStrings s ByteString) => s -> b -> Either String Bool Source
Safely check the correctness of an encoded Encodable against the
corresponding data.
checkPayload' :: (IsString s, ConvertibleStrings s ByteString) => s -> b -> Bool Source
Unsafe version of checkPayload.
Throws on encoding/decoding errors instead of returning an Either type.
Instances
| ByteArrayAccess bs => Checkable (Payload bs) Source | |
| ByteArrayAccess bs => Checkable (Payload bs) Source |
Newtype to allow the creation of a Checkable typeclass for
all ByteArrayAccess without recurring to UndecidableInstances
Constructors
| Payload bs |
Instances
| ByteArrayAccess bs => Checkable (Payload bs) Source |
Multihash helpers
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. Uses hash for hashing.
multihashlazy :: (HashAlgorithm a, Codable a) => a -> ByteString -> MultihashDigest a Source
Helper to multihash a lazy ByteString using a supported hash algorithm.
Uses hashlazy for hashing.
checkMultihash :: (IsString s, ConvertibleStrings s ByteString, ByteArrayAccess bs) => s -> bs -> Either String Bool Source
checkPayload wrapper for API retro-compatibility
checkMultihash' :: (IsString s, ConvertibleStrings s ByteString, ByteArrayAccess bs) => s -> bs -> Bool Source
Unsafe checkPayload wrapper for API retro-compatibility
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