From 4a3f2b3448851fe9ac017ff397f9b9ae2babdce3 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Tue, 7 Apr 2020 15:11:51 +0100 Subject: Remove DRBG dependency --- src/Verismith/Utils.hs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/Verismith/Utils.hs (limited to 'src/Verismith/Utils.hs') diff --git a/src/Verismith/Utils.hs b/src/Verismith/Utils.hs new file mode 100644 index 0000000..1f5dd01 --- /dev/null +++ b/src/Verismith/Utils.hs @@ -0,0 +1,29 @@ +{-| +Module : Verismith +Description : Verismith +Copyright : (c) 2020, Yann Herklotz +License : GPL-3 +Maintainer : yann [at] yannherklotz [dot] com +Stability : experimental +Portability : POSIX +-} + +module Verismith.Utils + (generateByteString) +where + +import System.Random (mkStdGen, newStdGen, randoms) +import Data.ByteString (ByteString, pack) + +generateByteString :: (Maybe Int) -> Int -> Int -> IO [ByteString] +generateByteString mseed size n = do + fmap pack . chunksOf size . take (size * n) . randoms <$> + case mseed of + Just seed' -> return $ mkStdGen seed' + Nothing -> newStdGen + where + chunksOf i _ | i <= 0 = error $ "chunksOf, number must be positive, got " ++ show i + chunksOf i xs = repeatedly (splitAt i) xs + repeatedly _ [] = [] + repeatedly f as = b : repeatedly f as' + where (b, as') = f as -- cgit