Maintainer | simons@cryp.to |
---|---|
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
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
- newtype Algorithm = Algorithm (Ptr ())
- digestByName :: String -> Algorithm
- digestByName' :: String -> Maybe Algorithm
- digestSize :: Algorithm -> Int
- maxDigestSize :: Int
- digestBlockSize :: Algorithm -> Int
- _digestByName :: CString -> Algorithm
- _digestSize :: Algorithm -> CInt
- _digestBlockSize :: Algorithm -> CInt
Documentation
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
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
_digestByName :: CString -> Algorithm Source #
_digestSize :: Algorithm -> CInt Source #
_digestBlockSize :: Algorithm -> CInt Source #