Added stubs for CryptGenRandom(), CryptReleaseContext().

diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index 97e0fb9..a2ef252 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -54,14 +54,14 @@
 @ stub CryptGetKeyParam
 @ stub CryptGetHashParam
 @ stub CryptGetProvParam
-@ stub CryptGenRandom
+@ stdcall CryptGenRandom(long long ptr) CryptGenRandom
 @ stub CryptGetDefaultProviderA
 @ stub CryptGetDefaultProviderW
 @ stub CryptGetUserKey
 @ stub CryptHashData
 @ stub CryptHashSessionKey
 @ stub CryptImportKey
-@ stub CryptReleaseContext
+@ stdcall CryptReleaseContext(long long) CryptReleaseContext
 @ stub CryptSetHashParam
 @ stdcall CryptSetKeyParam(long long ptr long) CryptSetKeyParam
 @ stub CryptSetProvParam
diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c
index 00290f3..7438f2e 100644
--- a/dlls/advapi32/crypt.c
+++ b/dlls/advapi32/crypt.c
@@ -1,12 +1,15 @@
 /*
  * dlls/advapi32/crypt.c
  */
+#include <time.h>
+#include <stdlib.h>
+
 #include "windef.h"
 #include "winerror.h"
 #include "wincrypt.h"
 #include "debugtools.h"
 
-DEFAULT_DEBUG_CHANNEL(advapi)
+DEFAULT_DEBUG_CHANNEL(advapi);
 
 /******************************************************************************
  * CryptAcquireContextA
@@ -41,3 +44,51 @@
     return FALSE;
 }
 
+
+/******************************************************************************
+ * CryptGenRandom
+ */
+BOOL WINAPI
+CryptGenRandom (HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer)
+{
+   DWORD i;
+
+   FIXME("(0x%lx, %ld, %p): stub!\n", hProv, dwLen, pbBuffer);
+   /*
+    FIXME: Currently this function is just a stub, it is missing functionality in 
+           the following (major) ways:
+      (1) It makes no use of the passed in HCRYPTPROV handle. (ie. it doesn't
+          use a cryptographic service provider (CSP)
+      (2) It doesn't use the values in the passed in pbBuffer to further randomize
+          its internal seed.
+      (3) MSDN mentions that this function produces "cryptographically random"
+          data, which is "... far more random than the data generated by the typical
+          random number generator such as the one shipped with your C compiler".
+          We are currently using the C runtime rand() function. ^_^
+
+      See MSDN documentation for CryptGenRandom for more information.
+    */
+
+   if (dwLen <= 0)
+      return FALSE; 
+  
+   srand(time(NULL));
+   for (i=0; i<dwLen; i++)
+   {
+      *pbBuffer = (BYTE)(rand() % 256);
+      pbBuffer++;
+   }
+
+   return TRUE;
+}
+
+
+/******************************************************************************
+ * CryptReleaseContext
+ */
+BOOL WINAPI
+CryptReleaseContext (HCRYPTPROV hProv, DWORD dwFlags)
+{
+   FIXME("(0x%lx, 0x%lx): stub!\n", hProv, dwFlags);
+   return FALSE;
+}