Portability | unknown |
---|---|
Stability | experimental |
Maintainer | Vincent Hanquez <vincent@snarc.org> |
Safe Haskell | Trustworthy |
Generalized cryptographic hash interface, that you can use with cryptographic hash algorithm that belong to the HashAlgorithm type class.
import Crypto.Hash sha1 :: ByteString -> Digest SHA1 sha1 = hash hexSha3_512 :: ByteString -> String hexSha3_512 bs = show (hash bs :: Digest SHA3_512)
- class HashAlgorithm a where
- hashBlockSize :: Context a -> Int
- hashInit :: Context a
- hashUpdates :: Context a -> [ByteString] -> Context a
- hashFinalize :: Context a -> Digest a
- digestFromByteString :: ByteString -> Maybe (Digest a)
- type HashFunctionBS a = ByteString -> Digest a
- type HashFunctionLBS a = ByteString -> Digest a
- data Context a
- data Digest a
- digestToByteString :: Digest a -> ByteString
- digestToHexByteString :: Digest a -> ByteString
- hash :: HashAlgorithm a => ByteString -> Digest a
- hashlazy :: HashAlgorithm a => ByteString -> Digest a
- hashUpdate :: HashAlgorithm a => Context a -> ByteString -> Context a
- hashInitAlg :: HashAlgorithm alg => alg -> Context alg
- data MD2 = MD2
- data MD4 = MD4
- data MD5 = MD5
- data SHA1 = SHA1
- data SHA224 = SHA224
- data SHA256 = SHA256
- data SHA384 = SHA384
- data SHA512 = SHA512
- data RIPEMD160 = RIPEMD160
- data Tiger = Tiger
- data SHA3_224 = SHA3_224
- data SHA3_256 = SHA3_256
- data SHA3_384 = SHA3_384
- data SHA3_512 = SHA3_512
- data Skein256_224 = Skein256_224
- data Skein256_256 = Skein256_256
- data Skein512_224 = Skein512_224
- data Skein512_256 = Skein512_256
- data Skein512_384 = Skein512_384
- data Skein512_512 = Skein512_512
- data Whirlpool = Whirlpool
- newtype HMAC a = HMAC {
- hmacGetDigest :: Digest a
- hmac :: HashAlgorithm a => ByteString -> ByteString -> HMAC a
- hmacAlg :: HashAlgorithm a => a -> ByteString -> ByteString -> HMAC a
Types
class HashAlgorithm a whereSource
Class representing hashing algorithms.
The hash algorithm is built over 3 primitives:
- init : create a new hashing context
- updates : update the hashing context with some strict bytestrings and return the new context
- finalize : finalize the context into a digest
hashBlockSize :: Context a -> IntSource
Block size in bytes the hash algorithm operates on
Initialize a new context for this hash algorithm
hashUpdates :: Context a -> [ByteString] -> Context aSource
Update the context with a list of strict bytestring, and return a new context with the updates.
hashFinalize :: Context a -> Digest aSource
Finalize a context and return a digest.
digestFromByteString :: ByteString -> Maybe (Digest a)Source
Try to convert a binary digest bytestring to a digest.
type HashFunctionBS a = ByteString -> Digest aSource
Alias to a single pass hash function that operate on a strict bytestring
type HashFunctionLBS a = ByteString -> Digest aSource
Alias to a single pass hash function that operate on a lazy bytestring
Represent a digest for a given hash algorithm.
Functions
digestToByteString :: Digest a -> ByteStringSource
Deprecated: use toBytes from byteable:Data.Byteable
return the binary bytestring. deprecated use toBytes.
digestToHexByteString :: Digest a -> ByteStringSource
Return the hexadecimal (base16) bytestring of the digest
hash :: HashAlgorithm a => ByteString -> Digest aSource
Hash a strict bytestring into a digest.
hashlazy :: HashAlgorithm a => ByteString -> Digest aSource
Hash a lazy bytestring into a digest.
hashUpdate :: HashAlgorithm a => Context a -> ByteString -> Context aSource
run hashUpdates on one single bytestring and return the updated context.
hashInitAlg :: HashAlgorithm alg => alg -> Context algSource
Initialize a new context for a specified hash algorithm
hash algorithms
SHA3 (224 bits version) cryptographic hash
SHA3 (256 bits version) cryptographic hash
SHA3 (384 bits version) cryptographic hash
SHA3 (512 bits version) cryptographic hash
data Skein256_224 Source
Skein256 (224 bits version) cryptographic hash
data Skein256_256 Source
Skein256 (256 bits version) cryptographic hash
data Skein512_224 Source
Skein512 (224 bits version) cryptographic hash
data Skein512_256 Source
Skein512 (256 bits version) cryptographic hash
data Skein512_384 Source
Skein512 (384 bits version) cryptographic hash
data Skein512_512 Source
Skein512 (512 bits version) cryptographic hash
MAC algorithms
Represent an HMAC that is a phantom type with the hash used to produce the mac.
The Eq instance is constant time.
HMAC | |
|
:: HashAlgorithm a | |
=> ByteString | Secret key |
-> ByteString | Message to MAC |
-> HMAC a |
compute a MAC using the supplied hashing function
:: HashAlgorithm a | |
=> a | the hash algorithm the actual value is unused. |
-> ByteString | Secret key |
-> ByteString | Message to MAC |
-> HMAC a |
compute a HMAC using a specified algorithm