securemem 0.1.5 → 0.1.6
raw patch · 2 files changed
+13/−3 lines, 2 files
Files
- Data/SecureMem.hs +12/−2
- securemem.cabal +1/−1
Data/SecureMem.hs view
@@ -252,9 +252,19 @@ -- | Create a SecureMem from a bytestring secureMemFromByteString :: ByteString -> SecureMem-secureMemFromByteString b = B.inlinePerformIO $ do- sm <- allocateSecureMem len +secureMemFromByteString b = pureIO $ do+ sm <- allocateSecureMem len withSecureMemPtr sm $ \dst -> withBytestringPtr $ \src -> B.memcpy dst src (fromIntegral len) return sm where (fp, off, !len) = B.toForeignPtr b withBytestringPtr f = withForeignPtr fp $ \p -> f (p `plusPtr` off)+{-# NOINLINE secureMemFromByteString #-}++-- | Create a SecureMem from any byteable object+secureMemFromByteable :: Byteable b => b -> SecureMem+secureMemFromByteable bs = pureIO $ do+ sm <- allocateSecureMem len+ withSecureMemPtr sm $ \dst -> withBytePtr bs $ \src -> B.memcpy dst src (fromIntegral len)+ return sm+ where len = byteableLength bs+{-# NOINLINE secureMemFromByteable #-}
securemem.cabal view
@@ -1,5 +1,5 @@ Name: securemem-Version: 0.1.5+Version: 0.1.6 Synopsis: abstraction to an auto scrubbing and const time eq, memory chunk. Description: SecureMem is similar to ByteString, except that it provides a memory chunk that