ppad-sha256-0.2.0: The SHA-256 and HMAC-SHA256 algorithms
Copyright(c) 2024 Jared Tobin
LicenseMIT
MaintainerJared Tobin <jared@ppad.tech>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Crypto.Hash.SHA256

Description

Pure SHA-256 and HMAC-SHA256 implementations for strict and lazy ByteStrings, as specified by RFC's 6234 and 2104.

Synopsis

SHA-256 message digest functions

hash :: ByteString -> ByteString Source #

Compute a condensed representation of a strict bytestring via SHA-256.

The 256-bit output digest is returned as a strict bytestring.

>>> hash "strict bytestring input"
"<strict 256-bit message digest>"

hash_lazy :: ByteString -> ByteString Source #

Compute a condensed representation of a lazy bytestring via SHA-256.

The 256-bit output digest is returned as a strict bytestring.

>>> hash_lazy "lazy bytestring input"
"<strict 256-bit message digest>"

SHA256-based MAC functions

hmac Source #

Arguments

:: ByteString

key

-> ByteString

text

-> ByteString 

Produce a message authentication code for a strict bytestring, based on the provided (strict, bytestring) key, via SHA-256.

The 256-bit MAC is returned as a strict bytestring.

Per RFC 2104, the key should be a minimum of 32 bytes long. Keys exceeding 64 bytes in length will first be hashed (via SHA-256).

>>> hmac "strict bytestring key" "strict bytestring input"
"<strict 256-bit MAC>"

hmac_lazy Source #

Arguments

:: ByteString

key

-> ByteString

text

-> ByteString 

Produce a message authentication code for a lazy bytestring, based on the provided (strict, bytestring) key, via SHA-256.

The 256-bit MAC is returned as a strict bytestring.

Per RFC 2104, the key should be a minimum of 32 bytes long. Keys exceeding 64 bytes in length will first be hashed (via SHA-256).

>>> hmac_lazy "strict bytestring key" "lazy bytestring input"
"<strict 256-bit MAC>"