module System.Crypto.Pkcs11.Lazy ( encrypt ) where import System.Crypto.Pkcs11 hiding (encrypt) import qualified Data.ByteString as BS import Data.ByteString.Lazy defaultChunkSize = 4096 lazyEncryptList :: Session -> [BS.ByteString] -> IO [BS.ByteString] lazyEncryptList sess (c:rest) = do encC <- encryptUpdate sess c defaultChunkSize encRest <- lazyEncryptList sess rest return (encC : encRest) lazyEncryptList sess [] = do last <- encryptFinal sess defaultChunkSize return [last] encrypt :: Session -> ByteString -> IO ByteString encrypt sess bsl = do res <- lazyEncryptList sess (toChunks bsl) return $ fromChunks res