module Bundled.SHA256 ( sha256 ) where
import Foreign
import Foreign.C.Types
import Numeric (showHex)
import Foreign.C.String ( withCString )
import Data.ByteString.Unsafe (unsafeUseAsCStringLen)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Internal as BSI
sha256 :: BS.ByteString -> BS.ByteString
sha256 p = unsafePerformIO $ do
digest <- BSI.create 32 $ \digest ->
unsafeUseAsCStringLen p $ \(ptr,n) ->
c_sha256 ptr (fromIntegral n) digest
return $! digest
foreign import ccall unsafe "sha2.h hashed_storage_sha256" c_sha256
:: Ptr CChar -> CSize -> Ptr Word8 -> IO ()