mirror of https://github.com/voidlizard/hbs2
24 lines
607 B
Haskell
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
|