secure-memory-0.0.0.1: lib/Data/SensitiveBytes.hs
-- SPDX-FileCopyrightText: 2021 Serokell <https://serokell.io/>
--
-- SPDX-License-Identifier: MPL-2.0
-- | The sensitive data type.
--
-- A typical usage looks something like this:
--
-- @
-- import Data.SensitiveBytes (SensitiveBytes, withSecureMemory, withSensitiveBytes)
--
-- your_function = 'withSecureMemory' $ do
-- {- some optional initialisation -}
-- 'withSensitiveBytes' 128 $ \sb -> do
-- {- work with sb using its 'Data.ByteArray.ByteArrayAccess' instance -}
-- @
--
-- Note that 'withSensitiveBytes' can only be called withing a code block
-- passed to 'withSecureMemory' and its type will prevent your from doing
-- otherwise.
--
-- You will typically read sensitive data into 'SensitiveBytes' using functions
-- in "Data.SensitiveBytes.IO" and then pass to some other function that
-- will work with it using the 'Data.ByteArray.ByteArrayAccess' instance. Just make sure
-- the function you pass it to does not copy the data and does not convert
-- it to some other insecure byte-array-like type.
module Data.SensitiveBytes
( -- * Library initialisation
withSecureMemory
, WithSecureMemory
, SecureMemoryInitException
-- * Allocation
, SensitiveBytes
, withSensitiveBytes
, SensitiveBytesAllocException
) where
import Data.SensitiveBytes.Internal