-- SPDX-FileCopyrightText: 2020 Serokell -- -- SPDX-License-Identifier: MPL-2.0 -- | Generate simple insecure random data. module Crypto.Internal.Random ( generateInsecure ) where import Data.ByteArray.Sized (SizedByteArray) import Data.ByteString (ByteString) import GHC.TypeLits (KnownNat) import Crypto.Random (generate) -- | Generate a sequence of random bytes. -- -- The output of this function is NOT suitable for secret keys. generateInsecure :: forall n. (KnownNat n) => IO (SizedByteArray n ByteString) generateInsecure :: IO (SizedByteArray n ByteString) generateInsecure {- = unsafeSizedByteArray . BS.pack . take len . randoms <$> newStdGen where len = fromIntegral $ natVal (Proxy :: Proxy n) -} -- Haddock above is actually a lie. We use the same random generator -- as for keys, because, after benchmarking, it happens to be faster :/. = IO (SizedByteArray n ByteString) forall ba (n :: Nat). (ByteArray ba, KnownNat n) => IO (SizedByteArray n ba) generate