hbs2/miscellaneous/saltine/src/Crypto/Saltine.hs

24 lines
607 B
Haskell

{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE TypeFamilies #-}
module Crypto.Saltine (
sodiumInit
) where
import Foreign.C
-- | Runs Sodiums's initialization routine. This must be called before
-- using any other function. It is thread-safe since libsodium 1.0.11.
sodiumInit :: IO ()
sodiumInit = do
err <- c_sodiumInit
case err of
0 -> -- everything went well
return ()
1 -> -- already initialized, we're good
return ()
_ -> -- some kind of failure
error "Crypto.Saltine.sodiumInit"
foreign import ccall "sodium_init" c_sodiumInit :: IO CInt