|
OpenSSL.Digest | Portability | portable | Stability | provisional | Maintainer | simons@cryp.to |
|
|
|
|
|
Description |
This module proivdes a high-level API to the message
digest algorithms found in OpenSSL's crypto library.
Link with -lcrypto when using this module.
Here is a short example program which runs all available
digests on a string:
example :: (Enum a) => [a] -> IO [String]
example input = mapM hash [minBound .. maxBound]
where
hash f = fmap (fmt f) (digest f (toWord input))
fmt f = shows f . (": \t"++) . (>>=toHex)
toWord = map (toEnum . fromEnum)
And when called, the function prints:
*Digest> example "open sesame" >>= putStr . unlines
Null:
MD2: a22a0b245bdddb00b5293ad590297b25
MD5: 54ef36ec71201fdf9d1423fd26f97f6b
SHA: 2ccefef64c76ac0d42ca1657457977675890c42f
SHA1: 5bcaff7f22ff533ca099b3408ead876c0ebba9a7
DSS: 5bcaff7f22ff533ca099b3408ead876c0ebba9a7
DSS1: 5bcaff7f22ff533ca099b3408ead876c0ebba9a7
MDC2: 112db2200ce1e9db3c2d132aea4ef7d0
RIPEMD160: bdb2bba6ec93bd566dc1181cadbc92176aa78382
|
|
Synopsis |
|
|
|
|
High-level API
|
|
|
The message digest algorithms we support.
| Constructors | Null | 0 bit
| MD2 | 128 bit
| MD5 | 128 bit
| SHA | 160 bit
| SHA1 | 160 bit
| DSS | 160 bit (SHA1)
| DSS1 | 160 bit (SHA1)
| MDC2 | 128 bit
| RIPEMD160 | 160 bit
|
| Instances | |
|
|
|
A convenience wrapper which computes the given digest
over a list of Word8. Unlike the monadic interface,
this function does not allow the computation to be
restarted.
|
|
|
A monadic interface to the digest computation.
|
|
|
The internal EVP context.
| Constructors | | Instances | |
|
|
|
Run an IO computation with an initialized
DigestState. All resources will be freed when the
computation returns.
|
|
|
Update the internal state with a block of data. This
function is just a wrapper for update', which creates
an array in memory using withArray.
|
|
|
Update the internal state with a block of data from
memory. This is the faster version of update.
|
|
|
Wrap up the computation, add padding, do whatever has to
be done, and return the final hash. The length of the
result depends on the chosen MessageDigest. Do not call
more than once!
|
|
Low-level API
|
|
|
The EVP context used by OpenSSL is opaque for us; we
only access it through a Ptr.
| Constructors | |
|
|
|
|
|
The message digest engines are opaque for us as well.
| Constructors | |
|
|
|
|
|
Maximum size of all message digests supported by
OpenSSL. Allocate a buffer of this size for digestFinal
if you want to stay generic.
|
|
|
Create an EVP context. May be nullPtr.
|
|
|
Initialize an EVP context.
|
|
|
Destroy an EVP context and free the allocated resources.
|
|
|
Set the message digest engine for digestUpdate calls.
Returns /=0 in case of an error.
|
|
|
Update the internal context with a block of input.
Returns /=0 in case of an error.
|
|
|
Wrap up the digest computation and return the final
digest. Do not call repeatedly on the same context!
Returns /=0 in case of an error. The pointer to the
unsigned integer may be nullPtr. If it is not,
digestFinal will store the length of the computed
digest there.
|
|
Message Digest Engines
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map a MessageDigest type into the the corresponding
MDEngine.
|
|
Helper Functions
|
|
|
Neat helper to print digests with:
\ws :: [Word8] -> ws >>= toHex
|
|
Produced by Haddock version 2.4.2 |