hopenssl-2.2.5: FFI Bindings to OpenSSL's EVP Digest Interface
Maintainersimons@cryp.to
Stabilityprovisional
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

OpenSSL.EVP.Digest.Algorithm

Description

Low-level bindings to OpenSSL's EVP interface. Most users do not need this code. Check out OpenSSL.Digest for a more comfortable interface.

Synopsis

Documentation

newtype Algorithm Source #

An opaque handle into OpenSSL's collection of message digest algorithms. Use digestByName to look up any of the available algorithms by name. For the sake of convenience, Algorithm is an instance of IsString so that the compiler can transparently map String literals to algorithms via fromString if the XOverloadedStrings extension is enabled.

>>> fromString "sha256" == digestByName "sha256"
True

Constructors

Algorithm (Ptr ()) 

Instances

Instances details
IsString Algorithm Source # 
Instance details

Defined in OpenSSL.EVP.Digest.Algorithm

Show Algorithm Source # 
Instance details

Defined in OpenSSL.EVP.Digest.Algorithm

Eq Algorithm Source # 
Instance details

Defined in OpenSSL.EVP.Digest.Algorithm

digestByName :: String -> Algorithm Source #

Look up a digest algorithm engine by name. Algorithms usually offered by OpenSSL are "md2", "md5", "sha1", "mdc2", "ripemd160", "blake2b512", "blake2s256", "sha224", "sha256", "sha384", and "sha512", but the exact set may vary between platforms. Throws UnknownAlgorithm if the requested algorithm is not known.

digestByName' :: String -> Maybe Algorithm Source #

Variant of digestByName that signals failure by evaluating to Nothing rather than failing.

>>> digestByName' "sha256" == Just (digestByName "sha256")
True
>>> digestByName' "Guess what?" :: Maybe Algorithm
Nothing

digestSize :: Algorithm -> Int Source #

Return the size of the digest in bytes that the given algorithm will produce.

>>> digestSize (digestByName "sha256")
32

maxDigestSize :: Int Source #

The largest possible digest size of any of the algorithms supported by this library will generate. So if you want to store a digest without bothering to retrieve the appropriate size with digestSize first, allocate a buffer of that size.

digestBlockSize :: Algorithm -> Int Source #

Return the block size the the given algorithm operates with.

>>> digestBlockSize (digestByName "sha256")
64