SHA-1.6.4.4: Implementations of the SHA suite of message digest functions

Safe HaskellSafe
LanguageHaskell98

Data.Digest.Pure.SHA

Contents

Description

Pure implementations of the SHA suite of hash functions. The implementation is basically an unoptimized translation of FIPS 180-2 into Haskell. If you're looking for performance, you probably won't find it here.

Synopsis

Digest and related functions

data Digest t #

An abstract datatype for digests.

Instances
Eq (Digest t) # 
Instance details

Defined in Data.Digest.Pure.SHA

Methods

(==) :: Digest t -> Digest t -> Bool #

(/=) :: Digest t -> Digest t -> Bool #

Ord (Digest t) # 
Instance details

Defined in Data.Digest.Pure.SHA

Methods

compare :: Digest t -> Digest t -> Ordering #

(<) :: Digest t -> Digest t -> Bool #

(<=) :: Digest t -> Digest t -> Bool #

(>) :: Digest t -> Digest t -> Bool #

(>=) :: Digest t -> Digest t -> Bool #

max :: Digest t -> Digest t -> Digest t #

min :: Digest t -> Digest t -> Digest t #

Show (Digest t) # 
Instance details

Defined in Data.Digest.Pure.SHA

Methods

showsPrec :: Int -> Digest t -> ShowS #

show :: Digest t -> String #

showList :: [Digest t] -> ShowS #

Binary (Digest SHA512State) # 
Instance details

Defined in Data.Digest.Pure.SHA

Binary (Digest SHA256State) # 
Instance details

Defined in Data.Digest.Pure.SHA

Binary (Digest SHA1State) # 
Instance details

Defined in Data.Digest.Pure.SHA

data SHA1State #

Instances
Binary SHA1State # 
Instance details

Defined in Data.Digest.Pure.SHA

Binary (Digest SHA1State) # 
Instance details

Defined in Data.Digest.Pure.SHA

data SHA256State #

Instances
Binary SHA256State # 
Instance details

Defined in Data.Digest.Pure.SHA

Binary (Digest SHA256State) # 
Instance details

Defined in Data.Digest.Pure.SHA

data SHA512State #

Instances
Binary SHA512State # 
Instance details

Defined in Data.Digest.Pure.SHA

Binary (Digest SHA512State) # 
Instance details

Defined in Data.Digest.Pure.SHA

showDigest :: Digest t -> String #

Convert a digest to a string. The digest is rendered as fixed with hexadecimal number.

integerDigest :: Digest t -> Integer #

Convert a digest to an Integer.

bytestringDigest :: Digest t -> ByteString #

Convert a digest to a ByteString.

Calculating hashes

sha1 :: ByteString -> Digest SHA1State #

Compute the SHA-1 hash of the given ByteString. The output is guaranteed to be exactly 160 bits, or 20 bytes, long. This is a good default for programs that need a good, but not necessarily hyper-secure, hash function.

sha224 :: ByteString -> Digest SHA256State #

Compute the SHA-224 hash of the given ByteString. Note that SHA-224 and SHA-384 differ only slightly from SHA-256 and SHA-512, and use truncated versions of the resulting hashes. So using 224/384 may not, in fact, save you very much ...

sha256 :: ByteString -> Digest SHA256State #

Compute the SHA-256 hash of the given ByteString. The output is guaranteed to be exactly 256 bits, or 32 bytes, long. If your security requirements are pretty serious, this is a good choice. For truly significant security concerns, however, you might try one of the bigger options.

sha384 :: ByteString -> Digest SHA512State #

Compute the SHA-384 hash of the given ByteString. Yup, you guessed it, the output will be exactly 384 bits, or 48 bytes, long.

sha512 :: ByteString -> Digest SHA512State #

For those for whom only the biggest hashes will do, this computes the SHA-512 hash of the given ByteString. The output will be 64 bytes, or 512 bits, long.

sha1Incremental :: Decoder SHA1State #

Similar to sha1 but use an incremental interface. When the decoder has been completely fed, completeSha1Incremental must be used so it can finish successfully.

sha224Incremental :: Decoder SHA256State #

Similar to sha224 but use an incremental interface. When the decoder has been completely fed, completeSha224Incremental must be used so it can finish successfully.

sha256Incremental :: Decoder SHA256State #

Similar to sha256 but use an incremental interface. When the decoder has been completely fed, completeSha256Incremental must be used so it can finish successfully.

sha384Incremental :: Decoder SHA512State #

Similar to sha384 but use an incremental interface. When the decoder has been completely fed, completeSha384Incremental must be used so it can finish successfully.

sha512Incremental :: Decoder SHA512State #

Similar to sha512 but use an incremental interface. When the decoder has been completely fed, completeSha512Incremental must be used so it can finish successfully.

Calculating message authentication codes (MACs)

hmacSha1 #

Arguments

:: ByteString

secret key

-> ByteString

message

-> Digest SHA1State

SHA-1 MAC

Compute an HMAC using SHA-1.

hmacSha224 #

Arguments

:: ByteString

secret key

-> ByteString

message

-> Digest SHA256State

SHA-224 MAC

Compute an HMAC using SHA-224.

hmacSha256 #

Arguments

:: ByteString

secret key

-> ByteString

message

-> Digest SHA256State

SHA-256 MAC

Compute an HMAC using SHA-256.

hmacSha384 #

Arguments

:: ByteString

secret key

-> ByteString

message

-> Digest SHA512State

SHA-384 MAC

Compute an HMAC using SHA-384.

hmacSha512 #

Arguments

:: ByteString

secret key

-> ByteString

message

-> Digest SHA512State

SHA-512 MAC

Compute an HMAC using SHA-512.

Internal routines included for testing