95 lines
2.6 KiB
C
95 lines
2.6 KiB
C
/*
|
|
* 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);
|
|
|
|
/******************************************************************************
|
|
* CryptAcquireContextA
|
|
* Acquire a crypto provider context handle.
|
|
*
|
|
* PARAMS
|
|
* phProv: Pointer to HCRYPTPROV for the output.
|
|
* pszContainer: FIXME (unknown)
|
|
* pszProvider: FIXME (unknown)
|
|
* dwProvType: Crypto provider type to get a handle.
|
|
* dwFlags: flags for the operation
|
|
*
|
|
* RETURNS TRUE on success, FALSE on failure.
|
|
*/
|
|
|
|
BOOL WINAPI
|
|
CryptAcquireContextA( HCRYPTPROV *phProv, LPCSTR pszContainer,
|
|
LPCSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
|
|
{
|
|
FIXME("(%p, %s, %s, %ld, %08lx): stub!\n", phProv, pszContainer,
|
|
pszProvider, dwProvType, dwFlags);
|
|
return FALSE;
|
|
}
|
|
|
|
/******************************************************************************
|
|
* CryptSetKeyParam
|
|
*/
|
|
BOOL WINAPI
|
|
CryptSetKeyParam( HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD dwFlags)
|
|
{
|
|
FIXME("(%lx, %lx, %p, %lx): stub!\n", hKey, dwParam, pbData, dwFlags);
|
|
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;
|
|
}
|