crypto-multihash-0.4.0.0: Multihash library on top of cryptonite crypto library

LicenseBSD3
MaintainerMarcello Seri <marcello.seri@gmail.com>
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Crypto.Multihash.Weak

Contents

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 Weak module contains a weaker implementation of the MultihashDigest type that allows to deserialize multihashes and to work with different algorithms at the same type. The API interface is almost identical to the one exposed by Multihash. The notable differences are:

For additional informations refer to the README.md or the gihub repository.

Synopsis

Weak Multihash Types

data Base Source

Base usable to encode the digest

Constructors

Base2

Binary form

Base16

Hex encoding

Base32

Not yet implemented. Waiting for this issue to resolve

Base58

Bitcoin base58 encoding

Base64

Base64 encoding

class Encodable a where Source

Minimal complete definition

encode, check

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

Safely check the correctness of an encoded Encodable against a plain Encodable.

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.

class Checkable b where Source

Minimal complete definition

checkPayload

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.

newtype Payload bs Source

Newtype to allow the creation of a Checkable typeclass for all ByteArrayAccess without recurring to UndecidableInstances.

Constructors

Payload bs 

Instances

Weak Multihash Helpers

weakMultihash :: ByteArrayAccess bs => ByteString -> bs -> Either String WeakMultihashDigest Source

Helper to multihash a ByteArrayAccess (e.g. a ByteString) using a supported hash algorithm. Uses hash for hashing.

weakMultihash' :: ByteArrayAccess bs => ByteString -> bs -> WeakMultihashDigest Source

Unsafe equivalent of weakMultihash. Throws on creation errors.

weakMultihashlazy :: ByteString -> ByteString -> Either String WeakMultihashDigest Source

Helper to multihash a lazy ByteString using a supported hash algorithm. Uses hashlazy for hashing.

weakMultihashlazy' :: ByteString -> ByteString -> WeakMultihashDigest Source

Unsafe equivalent of weakMultihashlazy. Throws on creation errors.

toWeakMultihash :: ByteString -> Either String WeakMultihashDigest Source

Imports a multihash into a WeahMultihashDigest if possible.

checkWeakMultihash :: (IsString s, ConvertibleStrings s ByteString, ByteArrayAccess bs) => s -> bs -> Either String Bool Source

checkPayload wrapper for API retro-compatibility.

checkWeakMultihash' :: (IsString s, ConvertibleStrings s ByteString, ByteArrayAccess bs) => s -> bs -> Bool Source

Unsafe checkPayload wrapper for API retro-compatibility.