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

Safe Haskell | None

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
- 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 Source

The type for final results.

Instances

Binary MD5Context |
Serialize MD5Context |
Hash MD5Context MD5Digest |

data MD5Digest Source

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

Instances

Eq MD5Digest |
Ord MD5Digest |
Show MD5Digest |
Binary MD5Digest |
Serialize MD5Digest |
Hash MD5Context MD5Digest |

# Static data

md5InitialContext :: MD5Context Source

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

# Functions

md5 :: ByteString -> MD5Digest Source

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

md5Update :: MD5Context -> ByteString -> MD5Context Source

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 Source

Closes an MD5 context, thus producing the digest.

# 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`.

Methods

outputLength

Arguments

:: Tagged * d BitLength | The size of the digest when encoded

blockLength

Arguments

:: Tagged * d BitLength | The amount of data operated on in each round of the digest computation

initialCtx

Arguments

:: ctx | An initial context, provided with the first call to `updateCtx`

updateCtx

Arguments

:: ctx |
-> ByteString |
-> ctx | Used to update a context, repeatedly called until all data is exhausted must operate correctly for imputs of `n*blockLength` bytes for `n `elem` [0..]`

finalize

Arguments

:: ctx |
-> ByteString |
-> d | Finializing a context, plus any message data less than the block size, into a digest

hash :: ByteString -> d

Hash a lazy ByteString, creating a digest

hash' :: ByteString -> d

Hash a strict ByteString, creating a digest

Instances

Hash MD5Context MD5Digest |