diff --git a/Crypto/OpenSSL/Random.hs b/Crypto/OpenSSL/Random.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/OpenSSL/Random.hs
@@ -0,0 +1,15 @@
+module Crypto.OpenSSL.Random
+    ( randBytes
+    ) where
+
+import           Foreign.C.Types
+import           Crypto.OpenSSL.Misc
+import           Foreign.Ptr
+import qualified Data.ByteArray as B
+
+randBytes :: B.ByteArray byteArray => Int -> IO byteArray
+randBytes n = B.alloc n $ \ptr ->
+    check $ openssl_rand_bytes ptr (fromIntegral n)
+
+foreign import ccall unsafe "RAND_bytes"
+    openssl_rand_bytes :: Ptr CUChar -> CInt -> IO CInt
diff --git a/cryptonite-openssl.cabal b/cryptonite-openssl.cabal
--- a/cryptonite-openssl.cabal
+++ b/cryptonite-openssl.cabal
@@ -1,5 +1,5 @@
 Name:                cryptonite-openssl
-Version:             0.4
+Version:             0.5
 Synopsis:            Crypto stuff using OpenSSL cryptographic library
 Description:         cryptography
 License:             BSD3
@@ -24,6 +24,7 @@
                      Crypto.OpenSSL.ECC
                      Crypto.OpenSSL.BN
                      Crypto.OpenSSL.AES
+                     Crypto.OpenSSL.Random
   Other-modules:     Crypto.OpenSSL.ECC.Foreign
                    , Crypto.OpenSSL.BN.Foreign
                    , Crypto.OpenSSL.AES.Foreign
