Data.Digest.Pure.MD5

pureMD5-2.1.3: A Haskell-only implementation of the MD5 digest (hash) algorithm.

Safe Haskell | None
Language | Haskell2010

Data.Digest.Pure.MD5

Contents

- Types
- Static data
- Functions
- Crypto-API interface

Description

It is suggested you use the 'crypto-api' class-based interface to access the MD5 algorithm. Either rely on type inference or provide an explicit type:

      hashFileStrict = liftM hash' . B.readFile
      hashFileLazyBS = liftM hash . B.readFile

Synopsis

- data MD5Context
- data MD5Digest
- md5InitialContext :: MD5Context
- md5 :: ByteString -> MD5Digest
- md5Update :: MD5Context -> ByteString -> MD5Context
- md5Finalize :: MD5Context -> ByteString -> MD5Digest
- md5DigestBytes :: MD5Digest -> ByteString
- class (Serialize d, Eq d, Ord d) => Hash ctx d | d -> ctx, ctx -> d where
  - outputLength :: Tagged * d BitLength
  - blockLength :: Tagged * d BitLength
  - initialCtx :: ctx
  - updateCtx :: ctx -> ByteString -> ctx
  - finalize :: ctx -> ByteString -> d
  - hash :: ByteString -> d
  - hash' :: ByteString -> d

# Types

data MD5Context #

The type for final results.

Instances

Binary MD5Context # |
Methods put :: MD5Context -> Put # get :: Get MD5Context # putList :: [MD5Context] -> Put #
Serialize MD5Context # |
Methods put :: Putter MD5Context # get :: Get MD5Context #
Hash MD5Context MD5Digest # |
Methods outputLength :: Tagged * MD5Digest BitLength # blockLength :: Tagged * MD5Digest BitLength # initialCtx :: MD5Context # updateCtx :: MD5Context -> ByteString -> MD5Context # finalize :: MD5Context -> ByteString -> MD5Digest # hash :: ByteString -> MD5Digest # hash' :: ByteString -> MD5Digest #

data MD5Digest #

After finalizing a context, using md5Finalize, a new type is returned to prevent 're-finalizing' the structure.

Instances

Eq MD5Digest # |
Methods (==) :: MD5Digest -> MD5Digest -> Bool # (/=) :: MD5Digest -> MD5Digest -> Bool #
Ord MD5Digest # |
Methods compare :: MD5Digest -> MD5Digest -> Ordering # (<) :: MD5Digest -> MD5Digest -> Bool # (<=) :: MD5Digest -> MD5Digest -> Bool # (>) :: MD5Digest -> MD5Digest -> Bool # (>=) :: MD5Digest -> MD5Digest -> Bool # max :: MD5Digest -> MD5Digest -> MD5Digest # min :: MD5Digest -> MD5Digest -> MD5Digest #
Show MD5Digest # |
Methods showsPrec :: Int -> MD5Digest -> ShowS # show :: MD5Digest -> String # showList :: [MD5Digest] -> ShowS #
Binary MD5Digest # |
Methods put :: MD5Digest -> Put # get :: Get MD5Digest # putList :: [MD5Digest] -> Put #
Serialize MD5Digest # |
Methods put :: Putter MD5Digest # get :: Get MD5Digest #
Hash MD5Context MD5Digest # |
Methods outputLength :: Tagged * MD5Digest BitLength # blockLength :: Tagged * MD5Digest BitLength # initialCtx :: MD5Context # updateCtx :: MD5Context -> ByteString -> MD5Context # finalize :: MD5Context -> ByteString -> MD5Digest # hash :: ByteString -> MD5Digest # hash' :: ByteString -> MD5Digest #

# Static data

md5InitialContext :: MD5Context #

The initial context to use when calling md5Update for the first time

# Functions

md5 :: ByteString -> MD5Digest #

Processes a lazy ByteString and returns the md5 digest. This is probably what you want.

md5Update :: MD5Context -> ByteString -> MD5Context #

Alters the MD5Context with a partial digest of the data.

The input bytestring MUST be a multiple of the blockSize or bad things can happen (incorrect digest results)!

md5Finalize :: MD5Context -> ByteString -> MD5Digest #

Closes an MD5 context, thus producing the digest.

md5DigestBytes :: MD5Digest -> ByteString #

The raw bytes of an `MD5Digest`. It is always 16 bytes long.

You can also use the `Binary` or `Serialize` instances to output the raw bytes. Alternatively you can use `show` to prodce the standard hex representation.

# Crypto-API interface

class (Serialize d, Eq d, Ord d) => Hash ctx d | d -> ctx, ctx -> d where #

The Hash class is intended as the generic interface targeted by maintainers of Haskell digest implementations. Using this generic interface, higher level functions such as `hash` and `hash'` provide a useful API for comsumers of hash implementations.

Any instantiated implementation must handle unaligned data.

Minimum complete definition: `outputLength`, `blockLength`, `initialCtx`, `updateCtx`, and `finalize`.

Minimal complete definition

outputLength, blockLength, initialCtx, updateCtx, finalize

Instances

Hash MD5Context MD5Digest # |
Methods outputLength :: Tagged * MD5Digest BitLength # blockLength :: Tagged * MD5Digest BitLength # initialCtx :: MD5Context # updateCtx :: MD5Context -> ByteString -> MD5Context # finalize :: MD5Context -> ByteString -> MD5Digest # hash :: ByteString -> MD5Digest # hash' :: ByteString -> MD5Digest #