advapi32: Return ERROR_INVALID_PARAMETER for invalid crypt objects' handles.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
eca2bfd071
commit
7d4eaa30a4
|
@ -57,6 +57,31 @@ static HWND crypt_hWindow;
|
||||||
#define CRYPT_Alloc(size) (LocalAlloc(LMEM_ZEROINIT, size))
|
#define CRYPT_Alloc(size) (LocalAlloc(LMEM_ZEROINIT, size))
|
||||||
#define CRYPT_Free(buffer) (LocalFree(buffer))
|
#define CRYPT_Free(buffer) (LocalFree(buffer))
|
||||||
|
|
||||||
|
static void *pointer_from_handle(UINT_PTR handle, DWORD magic)
|
||||||
|
{
|
||||||
|
if (!handle || *(DWORD *)handle != magic)
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return (void *)handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PCRYPTPROV provider_from_handle(HCRYPTPROV handle)
|
||||||
|
{
|
||||||
|
return pointer_from_handle(handle, MAGIC_CRYPTPROV);
|
||||||
|
}
|
||||||
|
|
||||||
|
static PCRYPTHASH hash_from_handle(HCRYPTHASH handle)
|
||||||
|
{
|
||||||
|
return pointer_from_handle(handle, MAGIC_CRYPTHASH);
|
||||||
|
}
|
||||||
|
|
||||||
|
static PCRYPTKEY key_from_handle(HCRYPTKEY handle)
|
||||||
|
{
|
||||||
|
return pointer_from_handle(handle, MAGIC_CRYPTKEY);
|
||||||
|
}
|
||||||
|
|
||||||
static inline PWSTR CRYPT_GetProvKeyName(PCWSTR pProvName)
|
static inline PWSTR CRYPT_GetProvKeyName(PCWSTR pProvName)
|
||||||
{
|
{
|
||||||
static const WCHAR KEYSTR[] = L"Software\\Microsoft\\Cryptography\\Defaults\\Provider\\";
|
static const WCHAR KEYSTR[] = L"Software\\Microsoft\\Cryptography\\Defaults\\Provider\\";
|
||||||
|
@ -573,21 +598,12 @@ BOOL WINAPI CryptAcquireContextA (HCRYPTPROV *phProv, LPCSTR pszContainer,
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptContextAddRef (HCRYPTPROV hProv, DWORD *pdwReserved, DWORD dwFlags)
|
BOOL WINAPI CryptContextAddRef (HCRYPTPROV hProv, DWORD *pdwReserved, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV pProv = (PCRYPTPROV)hProv;
|
PCRYPTPROV pProv = provider_from_handle(hProv);
|
||||||
|
|
||||||
TRACE("(0x%lx, %p, %08x)\n", hProv, pdwReserved, dwFlags);
|
TRACE("(0x%lx, %p, %08x)\n", hProv, pdwReserved, dwFlags);
|
||||||
|
|
||||||
if (!pProv)
|
if (!pProv)
|
||||||
{
|
|
||||||
SetLastError(NTE_BAD_UID);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
if (pProv->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
InterlockedIncrement(&pProv->refcount);
|
InterlockedIncrement(&pProv->refcount);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -608,22 +624,13 @@ BOOL WINAPI CryptContextAddRef (HCRYPTPROV hProv, DWORD *pdwReserved, DWORD dwFl
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptReleaseContext (HCRYPTPROV hProv, DWORD dwFlags)
|
BOOL WINAPI CryptReleaseContext (HCRYPTPROV hProv, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV pProv = (PCRYPTPROV)hProv;
|
PCRYPTPROV pProv = provider_from_handle(hProv);
|
||||||
BOOL ret = TRUE;
|
BOOL ret = TRUE;
|
||||||
|
|
||||||
TRACE("(0x%lx, %08x)\n", hProv, dwFlags);
|
TRACE("(0x%lx, %08x)\n", hProv, dwFlags);
|
||||||
|
|
||||||
if (!pProv)
|
if (!pProv)
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
if (pProv->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (InterlockedDecrement(&pProv->refcount) == 0)
|
if (InterlockedDecrement(&pProv->refcount) == 0)
|
||||||
{
|
{
|
||||||
|
@ -660,21 +667,12 @@ BOOL WINAPI CryptReleaseContext (HCRYPTPROV hProv, DWORD dwFlags)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptGenRandom (HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer)
|
BOOL WINAPI CryptGenRandom (HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTPROV prov = provider_from_handle(hProv);
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p)\n", hProv, dwLen, pbBuffer);
|
TRACE("(0x%lx, %d, %p)\n", hProv, dwLen, pbBuffer);
|
||||||
|
|
||||||
if (!hProv)
|
if (!prov)
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
if (prov->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return prov->pFuncs->pCPGenRandom(prov->hPrivate, dwLen, pbBuffer);
|
return prov->pFuncs->pCPGenRandom(prov->hPrivate, dwLen, pbBuffer);
|
||||||
}
|
}
|
||||||
|
@ -701,14 +699,19 @@ BOOL WINAPI CryptGenRandom (HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer)
|
||||||
BOOL WINAPI CryptCreateHash (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey,
|
BOOL WINAPI CryptCreateHash (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey,
|
||||||
DWORD dwFlags, HCRYPTHASH *phHash)
|
DWORD dwFlags, HCRYPTHASH *phHash)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTKEY key = NULL;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey;
|
PCRYPTPROV prov;
|
||||||
PCRYPTHASH hash;
|
PCRYPTHASH hash;
|
||||||
|
|
||||||
TRACE("(0x%lx, 0x%x, 0x%lx, %08x, %p)\n", hProv, Algid, hKey, dwFlags, phHash);
|
TRACE("(0x%lx, 0x%x, 0x%lx, %08x, %p)\n", hProv, Algid, hKey, dwFlags, phHash);
|
||||||
|
|
||||||
if (!prov || !phHash || prov->dwMagic != MAGIC_CRYPTPROV ||
|
if (!(prov = provider_from_handle(hProv)))
|
||||||
(key && key->dwMagic != MAGIC_CRYPTKEY))
|
return FALSE;
|
||||||
|
|
||||||
|
if (hKey && !(key = key_from_handle(hKey)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!phHash)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -761,15 +764,19 @@ BOOL WINAPI CryptCreateHash (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey,
|
||||||
BOOL WINAPI CryptDecrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
|
BOOL WINAPI CryptDecrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
|
||||||
DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
|
DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
|
||||||
{
|
{
|
||||||
|
PCRYPTHASH hash = NULL;
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey;
|
PCRYPTKEY key;
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
|
||||||
|
|
||||||
TRACE("(0x%lx, 0x%lx, %d, %08x, %p, %p)\n", hKey, hHash, Final, dwFlags, pbData, pdwDataLen);
|
TRACE("(0x%lx, 0x%lx, %d, %08x, %p, %p)\n", hKey, hHash, Final, dwFlags, pbData, pdwDataLen);
|
||||||
|
|
||||||
if (!key || !pbData || !pdwDataLen ||
|
if (!(key = key_from_handle(hKey)))
|
||||||
!key->pProvider || key->dwMagic != MAGIC_CRYPTKEY ||
|
return FALSE;
|
||||||
key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
|
if (hHash && !(hash = hash_from_handle(hHash)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!pbData || !pdwDataLen || !key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -799,18 +806,19 @@ BOOL WINAPI CryptDecrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
|
||||||
BOOL WINAPI CryptDeriveKey (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData,
|
BOOL WINAPI CryptDeriveKey (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData,
|
||||||
DWORD dwFlags, HCRYPTKEY *phKey)
|
DWORD dwFlags, HCRYPTKEY *phKey)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTPROV prov;
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hBaseData;
|
PCRYPTHASH hash;
|
||||||
PCRYPTKEY key;
|
PCRYPTKEY key;
|
||||||
|
|
||||||
TRACE("(0x%lx, 0x%08x, 0x%lx, 0x%08x, %p)\n", hProv, Algid, hBaseData, dwFlags, phKey);
|
TRACE("(0x%lx, 0x%08x, 0x%lx, 0x%08x, %p)\n", hProv, Algid, hBaseData, dwFlags, phKey);
|
||||||
|
|
||||||
if (!prov || !hash)
|
if (!(prov = provider_from_handle(hProv)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
if (!phKey || prov->dwMagic != MAGIC_CRYPTPROV || hash->dwMagic != MAGIC_CRYPTHASH)
|
if (!(hash = hash_from_handle(hBaseData)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!phKey)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -850,20 +858,16 @@ BOOL WINAPI CryptDeriveKey (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptDestroyHash (HCRYPTHASH hHash)
|
BOOL WINAPI CryptDestroyHash (HCRYPTHASH hHash)
|
||||||
{
|
{
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
PCRYPTHASH hash;
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
TRACE("(0x%lx)\n", hHash);
|
TRACE("(0x%lx)\n", hHash);
|
||||||
|
|
||||||
if (!hash)
|
if (!(hash = hash_from_handle(hHash)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
if (!hash->pProvider || hash->dwMagic != MAGIC_CRYPTHASH ||
|
if (!hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -890,20 +894,16 @@ BOOL WINAPI CryptDestroyHash (HCRYPTHASH hHash)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptDestroyKey (HCRYPTKEY hKey)
|
BOOL WINAPI CryptDestroyKey (HCRYPTKEY hKey)
|
||||||
{
|
{
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey;
|
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
|
PCRYPTKEY key;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
TRACE("(0x%lx)\n", hKey);
|
TRACE("(0x%lx)\n", hKey);
|
||||||
|
|
||||||
if (!key)
|
if (!(key = key_from_handle(hKey)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
if (!key->pProvider || key->dwMagic != MAGIC_CRYPTKEY ||
|
if (!key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -939,9 +939,10 @@ BOOL WINAPI CryptDuplicateHash (HCRYPTHASH hHash, DWORD *pdwReserved,
|
||||||
|
|
||||||
TRACE("(0x%lx, %p, %08x, %p)\n", hHash, pdwReserved, dwFlags, phHash);
|
TRACE("(0x%lx, %p, %08x, %p)\n", hHash, pdwReserved, dwFlags, phHash);
|
||||||
|
|
||||||
orghash = (PCRYPTHASH)hHash;
|
if (!(orghash = hash_from_handle(hHash)))
|
||||||
if (!orghash || pdwReserved || !phHash || !orghash->pProvider ||
|
return FALSE;
|
||||||
orghash->dwMagic != MAGIC_CRYPTHASH || orghash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
|
if (pdwReserved || !phHash || !orghash->pProvider || orghash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -994,10 +995,10 @@ BOOL WINAPI CryptDuplicateKey (HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags
|
||||||
|
|
||||||
TRACE("(0x%lx, %p, %08x, %p)\n", hKey, pdwReserved, dwFlags, phKey);
|
TRACE("(0x%lx, %p, %08x, %p)\n", hKey, pdwReserved, dwFlags, phKey);
|
||||||
|
|
||||||
orgkey = (PCRYPTKEY)hKey;
|
if (!(orgkey = key_from_handle(hKey)))
|
||||||
if (!orgkey || pdwReserved || !phKey || !orgkey->pProvider ||
|
return FALSE;
|
||||||
orgkey->dwMagic != MAGIC_CRYPTKEY ||
|
|
||||||
orgkey->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
if (pdwReserved || !phKey || !orgkey->pProvider || orgkey->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1054,14 +1055,19 @@ BOOL WINAPI CryptDuplicateKey (HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags
|
||||||
BOOL WINAPI CryptEncrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
|
BOOL WINAPI CryptEncrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,
|
||||||
DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen)
|
DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen)
|
||||||
{
|
{
|
||||||
|
PCRYPTHASH hash = NULL;
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey;
|
PCRYPTKEY key;
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
|
||||||
|
|
||||||
TRACE("(0x%lx, 0x%lx, %d, %08x, %p, %p, %d)\n", hKey, hHash, Final, dwFlags, pbData, pdwDataLen, dwBufLen);
|
TRACE("(0x%lx, 0x%lx, %d, %08x, %p, %p, %d)\n", hKey, hHash, Final, dwFlags, pbData, pdwDataLen, dwBufLen);
|
||||||
|
|
||||||
if (!key || !pdwDataLen || !key->pProvider ||
|
if (!(key = key_from_handle(hKey)))
|
||||||
key->dwMagic != MAGIC_CRYPTKEY || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
return FALSE;
|
||||||
|
|
||||||
|
if (hHash && !(hash = hash_from_handle(hHash)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!pdwDataLen || !key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1362,12 +1368,17 @@ BOOL WINAPI CryptExportKey (HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType,
|
||||||
DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
|
DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey, expkey = (PCRYPTKEY)hExpKey;
|
PCRYPTKEY key, expkey = NULL;
|
||||||
|
|
||||||
TRACE("(0x%lx, 0x%lx, %d, %08x, %p, %p)\n", hKey, hExpKey, dwBlobType, dwFlags, pbData, pdwDataLen);
|
TRACE("(0x%lx, 0x%lx, %d, %08x, %p, %p)\n", hKey, hExpKey, dwBlobType, dwFlags, pbData, pdwDataLen);
|
||||||
|
|
||||||
if (!key || !pdwDataLen || !key->pProvider ||
|
if (!(key = key_from_handle(hKey)))
|
||||||
key->dwMagic != MAGIC_CRYPTKEY || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
return FALSE;
|
||||||
|
|
||||||
|
if (hExpKey && !(expkey = key_from_handle(hExpKey)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!pdwDataLen || !key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1395,12 +1406,15 @@ BOOL WINAPI CryptExportKey (HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType,
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptGenKey (HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey)
|
BOOL WINAPI CryptGenKey (HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY key;
|
PCRYPTKEY key;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %08x, %p)\n", hProv, Algid, dwFlags, phKey);
|
TRACE("(0x%lx, %d, %08x, %p)\n", hProv, Algid, dwFlags, phKey);
|
||||||
|
|
||||||
if (!phKey || !prov || prov->dwMagic != MAGIC_CRYPTPROV)
|
if (!(prov = provider_from_handle(hProv)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!phKey)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1555,12 +1569,15 @@ BOOL WINAPI CryptGetHashParam (HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData,
|
||||||
DWORD *pdwDataLen, DWORD dwFlags)
|
DWORD *pdwDataLen, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
PCRYPTHASH hash;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p, %p, %08x)\n", hHash, dwParam, pbData, pdwDataLen, dwFlags);
|
TRACE("(0x%lx, %d, %p, %p, %08x)\n", hHash, dwParam, pbData, pdwDataLen, dwFlags);
|
||||||
|
|
||||||
if (!hash || !pdwDataLen || !hash->pProvider ||
|
if (!(hash = hash_from_handle(hHash)))
|
||||||
hash->dwMagic != MAGIC_CRYPTHASH || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
return FALSE;
|
||||||
|
|
||||||
|
|
||||||
|
if (!pdwDataLen || !hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1594,12 +1611,14 @@ BOOL WINAPI CryptGetKeyParam (HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData,
|
||||||
DWORD *pdwDataLen, DWORD dwFlags)
|
DWORD *pdwDataLen, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey;
|
PCRYPTKEY key;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p, %p, %08x)\n", hKey, dwParam, pbData, pdwDataLen, dwFlags);
|
TRACE("(0x%lx, %d, %p, %p, %08x)\n", hKey, dwParam, pbData, pdwDataLen, dwFlags);
|
||||||
|
|
||||||
if (!key || !pdwDataLen || !key->pProvider ||
|
if (!(key = key_from_handle(hKey)))
|
||||||
key->dwMagic != MAGIC_CRYPTKEY || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
return FALSE;
|
||||||
|
|
||||||
|
if (!pdwDataLen || !key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1632,15 +1651,12 @@ BOOL WINAPI CryptGetKeyParam (HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData,
|
||||||
BOOL WINAPI CryptGetProvParam (HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData,
|
BOOL WINAPI CryptGetProvParam (HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData,
|
||||||
DWORD *pdwDataLen, DWORD dwFlags)
|
DWORD *pdwDataLen, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTPROV prov;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p, %p, %08x)\n", hProv, dwParam, pbData, pdwDataLen, dwFlags);
|
TRACE("(0x%lx, %d, %p, %p, %08x)\n", hProv, dwParam, pbData, pdwDataLen, dwFlags);
|
||||||
|
|
||||||
if (!prov || prov->dwMagic != MAGIC_CRYPTPROV)
|
if (!(prov = provider_from_handle(hProv)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
return prov->pFuncs->pCPGetProvParam(prov->hPrivate, dwParam, pbData, pdwDataLen, dwFlags);
|
return prov->pFuncs->pCPGetProvParam(prov->hPrivate, dwParam, pbData, pdwDataLen, dwFlags);
|
||||||
}
|
}
|
||||||
|
@ -1661,17 +1677,15 @@ BOOL WINAPI CryptGetProvParam (HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData,
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptGetUserKey (HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey)
|
BOOL WINAPI CryptGetUserKey (HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY key;
|
PCRYPTKEY key;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p)\n", hProv, dwKeySpec, phUserKey);
|
TRACE("(0x%lx, %d, %p)\n", hProv, dwKeySpec, phUserKey);
|
||||||
|
|
||||||
if (!prov)
|
if (!(prov = provider_from_handle(hProv)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
if (!phUserKey || prov->dwMagic != MAGIC_CRYPTPROV)
|
if (!phUserKey)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1714,18 +1728,15 @@ BOOL WINAPI CryptGetUserKey (HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUse
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptHashData (HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
|
BOOL WINAPI CryptHashData (HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
PCRYPTHASH hash;
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
|
|
||||||
TRACE("(0x%lx, %p, %d, %08x)\n", hHash, pbData, dwDataLen, dwFlags);
|
TRACE("(0x%lx, %p, %d, %08x)\n", hHash, pbData, dwDataLen, dwFlags);
|
||||||
|
|
||||||
if (!hash)
|
if (!(hash = hash_from_handle(hHash)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
if (!hash->pProvider || hash->dwMagic != MAGIC_CRYPTHASH ||
|
if (!hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1751,20 +1762,19 @@ BOOL WINAPI CryptHashData (HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptHashSessionKey (HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags)
|
BOOL WINAPI CryptHashSessionKey (HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
PCRYPTHASH hash;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey;
|
PCRYPTKEY key;
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
|
|
||||||
TRACE("(0x%lx, 0x%lx, %08x)\n", hHash, hKey, dwFlags);
|
TRACE("(0x%lx, 0x%lx, %08x)\n", hHash, hKey, dwFlags);
|
||||||
|
|
||||||
if (!hash || !key)
|
if (!(hash = hash_from_handle(hHash)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
if (!hash->pProvider || hash->dwMagic != MAGIC_CRYPTHASH ||
|
if (!(key = key_from_handle(hKey)))
|
||||||
hash->pProvider->dwMagic != MAGIC_CRYPTPROV || key->dwMagic != MAGIC_CRYPTKEY)
|
return FALSE;
|
||||||
|
|
||||||
|
if (!hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1794,14 +1804,18 @@ BOOL WINAPI CryptHashSessionKey (HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags
|
||||||
BOOL WINAPI CryptImportKey (HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen,
|
BOOL WINAPI CryptImportKey (HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen,
|
||||||
HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey)
|
HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY pubkey = (PCRYPTKEY)hPubKey, importkey;
|
PCRYPTKEY pubkey = NULL, importkey;
|
||||||
|
|
||||||
TRACE("(0x%lx, %p, %d, 0x%lx, %08x, %p)\n", hProv, pbData, dwDataLen, hPubKey, dwFlags, phKey);
|
TRACE("(0x%lx, %p, %d, 0x%lx, %08x, %p)\n", hProv, pbData, dwDataLen, hPubKey, dwFlags, phKey);
|
||||||
|
|
||||||
if (!prov || !pbData || !dwDataLen || !phKey ||
|
if (!(prov = provider_from_handle(hProv)))
|
||||||
prov->dwMagic != MAGIC_CRYPTPROV ||
|
return FALSE;
|
||||||
(pubkey && pubkey->dwMagic != MAGIC_CRYPTKEY))
|
|
||||||
|
if (hPubKey && !(pubkey = key_from_handle(hPubKey)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!pbData || !dwDataLen || !phKey)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1852,19 +1866,16 @@ BOOL WINAPI CryptImportKey (HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLe
|
||||||
BOOL WINAPI CryptSignHashW (HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription,
|
BOOL WINAPI CryptSignHashW (HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription,
|
||||||
DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen)
|
DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen)
|
||||||
{
|
{
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
PCRYPTHASH hash;
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %s, %08x, %p, %p)\n",
|
TRACE("(0x%lx, %d, %s, %08x, %p, %p)\n",
|
||||||
hHash, dwKeySpec, debugstr_w(sDescription), dwFlags, pbSignature, pdwSigLen);
|
hHash, dwKeySpec, debugstr_w(sDescription), dwFlags, pbSignature, pdwSigLen);
|
||||||
|
|
||||||
if (!hash)
|
if (!(hash = hash_from_handle(hHash)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
if (!pdwSigLen || !hash->pProvider || hash->dwMagic != MAGIC_CRYPTHASH ||
|
if (!pdwSigLen || !hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1914,12 +1925,14 @@ BOOL WINAPI CryptSignHashA (HCRYPTHASH hHash, DWORD dwKeySpec, LPCSTR sDescripti
|
||||||
BOOL WINAPI CryptSetHashParam (HCRYPTHASH hHash, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
|
BOOL WINAPI CryptSetHashParam (HCRYPTHASH hHash, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
PCRYPTHASH hash;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p, %08x)\n", hHash, dwParam, pbData, dwFlags);
|
TRACE("(0x%lx, %d, %p, %08x)\n", hHash, dwParam, pbData, dwFlags);
|
||||||
|
|
||||||
if (!hash || !pbData || !hash->pProvider ||
|
if (!(hash = hash_from_handle(hHash)))
|
||||||
hash->dwMagic != MAGIC_CRYPTHASH || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
return FALSE;
|
||||||
|
|
||||||
|
if (!pbData || !hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1948,12 +1961,14 @@ BOOL WINAPI CryptSetHashParam (HCRYPTHASH hHash, DWORD dwParam, const BYTE *pbDa
|
||||||
BOOL WINAPI CryptSetKeyParam (HCRYPTKEY hKey, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
|
BOOL WINAPI CryptSetKeyParam (HCRYPTKEY hKey, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hKey;
|
PCRYPTKEY key;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p, %08x)\n", hKey, dwParam, pbData, dwFlags);
|
TRACE("(0x%lx, %d, %p, %08x)\n", hKey, dwParam, pbData, dwFlags);
|
||||||
|
|
||||||
if (!key || !pbData || !key->pProvider ||
|
if (!(key = key_from_handle(hKey)))
|
||||||
key->dwMagic != MAGIC_CRYPTKEY || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
return FALSE;
|
||||||
|
|
||||||
|
if (!pbData || !key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -2121,20 +2136,13 @@ BOOL WINAPI CryptSetProviderExA (LPCSTR pszProvName, DWORD dwProvType, DWORD *pd
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CryptSetProvParam (HCRYPTPROV hProv, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
|
BOOL WINAPI CryptSetProvParam (HCRYPTPROV hProv, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTPROV prov = (PCRYPTPROV)hProv;
|
PCRYPTPROV prov;
|
||||||
|
|
||||||
TRACE("(0x%lx, %d, %p, %08x)\n", hProv, dwParam, pbData, dwFlags);
|
TRACE("(0x%lx, %d, %p, %08x)\n", hProv, dwParam, pbData, dwFlags);
|
||||||
|
|
||||||
if (!prov)
|
if (!(prov = provider_from_handle(hProv)))
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_HANDLE);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
if (prov->dwMagic != MAGIC_CRYPTPROV)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
if (dwParam == PP_USE_HARDWARE_RNG)
|
if (dwParam == PP_USE_HARDWARE_RNG)
|
||||||
{
|
{
|
||||||
FIXME("PP_USE_HARDWARE_RNG: What do I do with this?\n");
|
FIXME("PP_USE_HARDWARE_RNG: What do I do with this?\n");
|
||||||
|
@ -2181,15 +2189,20 @@ BOOL WINAPI CryptSetProvParam (HCRYPTPROV hProv, DWORD dwParam, const BYTE *pbDa
|
||||||
BOOL WINAPI CryptVerifySignatureW (HCRYPTHASH hHash, const BYTE *pbSignature, DWORD dwSigLen,
|
BOOL WINAPI CryptVerifySignatureW (HCRYPTHASH hHash, const BYTE *pbSignature, DWORD dwSigLen,
|
||||||
HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags)
|
HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
PCRYPTHASH hash = (PCRYPTHASH)hHash;
|
PCRYPTHASH hash;
|
||||||
PCRYPTKEY key = (PCRYPTKEY)hPubKey;
|
PCRYPTKEY key;
|
||||||
PCRYPTPROV prov;
|
PCRYPTPROV prov;
|
||||||
|
|
||||||
TRACE("(0x%lx, %p, %d, 0x%lx, %s, %08x)\n", hHash, pbSignature,
|
TRACE("(0x%lx, %p, %d, 0x%lx, %s, %08x)\n", hHash, pbSignature,
|
||||||
dwSigLen, hPubKey, debugstr_w(sDescription), dwFlags);
|
dwSigLen, hPubKey, debugstr_w(sDescription), dwFlags);
|
||||||
|
|
||||||
if (!hash || !key || key->dwMagic != MAGIC_CRYPTKEY || hash->dwMagic != MAGIC_CRYPTHASH ||
|
if (!(hash = hash_from_handle(hHash)))
|
||||||
!hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV ||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!(key = key_from_handle(hPubKey)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!hash->pProvider || hash->pProvider->dwMagic != MAGIC_CRYPTPROV ||
|
||||||
!key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
!key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
|
|
@ -152,6 +152,9 @@ static void test_CryptReleaseContext(void)
|
||||||
ret = CryptContextAddRef(prov, NULL, 0);
|
ret = CryptContextAddRef(prov, NULL, 0);
|
||||||
ok(ret, "got %u\n", GetLastError());
|
ok(ret, "got %u\n", GetLastError());
|
||||||
|
|
||||||
|
ret = CryptContextAddRef(0, NULL, 0);
|
||||||
|
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %u\n", GetLastError());
|
||||||
|
|
||||||
ret = CryptReleaseContext(prov, 0);
|
ret = CryptReleaseContext(prov, 0);
|
||||||
ok(ret, "got %u\n", GetLastError());
|
ok(ret, "got %u\n", GetLastError());
|
||||||
|
|
||||||
|
@ -272,7 +275,31 @@ static void test_incorrect_api_usage(void)
|
||||||
result = CryptCreateHash(hProv, CALG_SHA, 0, 0, &hHash);
|
result = CryptCreateHash(hProv, CALG_SHA, 0, 0, &hHash);
|
||||||
ok (result, "%d\n", GetLastError());
|
ok (result, "%d\n", GetLastError());
|
||||||
if (!result) return;
|
if (!result) return;
|
||||||
CryptDestroyHash(hHash);
|
|
||||||
|
result = CryptDeriveKey(0, CALG_RC4, hHash, 0, &hKey2);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptDeriveKey(hProv, CALG_RC4, 0, 0, &hKey2);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptHashData(0, &temp, 1, 0);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptGenKey(hProv, CALG_RC4, 0, &hKey);
|
||||||
|
ok (result, "%d\n", GetLastError());
|
||||||
|
if (!result) return;
|
||||||
|
|
||||||
|
result = pCryptHashSessionKey(hHash, 0, 0);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = pCryptHashSessionKey(0, hKey, 0);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptDestroyHash(hHash);
|
||||||
|
ok (result, "%08x\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptDestroyHash(0);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
result = CryptCreateHash(0, CALG_SHA, 0, 0, &hHash);
|
result = CryptCreateHash(0, CALG_SHA, 0, 0, &hHash);
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
@ -280,9 +307,16 @@ static void test_incorrect_api_usage(void)
|
||||||
result = CryptGenKey(0, CALG_RC4, 0, &hKey);
|
result = CryptGenKey(0, CALG_RC4, 0, &hKey);
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
result = CryptGenKey(hProv, CALG_RC4, 0, &hKey);
|
dwLen = 1;
|
||||||
|
result = CryptDecrypt(hKey, 0, TRUE, 0, &temp, &dwLen);
|
||||||
ok (result, "%d\n", GetLastError());
|
ok (result, "%d\n", GetLastError());
|
||||||
if (!result) return;
|
result = CryptDecrypt(0, 0, TRUE, 0, &temp, &dwLen);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptEncrypt(hKey, 0, TRUE, 0, &temp, &dwLen, sizeof(temp));
|
||||||
|
ok (result, "%d\n", GetLastError());
|
||||||
|
result = CryptEncrypt(0, 0, TRUE, 0, &temp, &dwLen, sizeof(temp));
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
result = CryptDestroyKey(hKey);
|
result = CryptDestroyKey(hKey);
|
||||||
ok (result, "%d\n", GetLastError());
|
ok (result, "%d\n", GetLastError());
|
||||||
|
@ -294,6 +328,9 @@ static void test_incorrect_api_usage(void)
|
||||||
result = CryptDestroyKey(hKey2);
|
result = CryptDestroyKey(hKey2);
|
||||||
ok (result, "%d\n", GetLastError());
|
ok (result, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptDestroyKey(0);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
dwTemp = CRYPT_MODE_ECB;
|
dwTemp = CRYPT_MODE_ECB;
|
||||||
result = CryptSetKeyParam(hKey2, KP_MODE, (BYTE*)&dwTemp, sizeof(DWORD));
|
result = CryptSetKeyParam(hKey2, KP_MODE, (BYTE*)&dwTemp, sizeof(DWORD));
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
@ -309,6 +346,9 @@ static void test_incorrect_api_usage(void)
|
||||||
ok(result, "got %u\n", GetLastError());
|
ok(result, "got %u\n", GetLastError());
|
||||||
if (!result) return;
|
if (!result) return;
|
||||||
|
|
||||||
|
result = pCryptGenRandom(0, 1, &temp);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
result = pCryptGenRandom(hProv, 1, &temp);
|
result = pCryptGenRandom(hProv, 1, &temp);
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
@ -353,6 +393,9 @@ static void test_incorrect_api_usage(void)
|
||||||
dwLen = 1;
|
dwLen = 1;
|
||||||
result = CryptGetProvParam(hProv, 0, &temp, &dwLen, 0);
|
result = CryptGetProvParam(hProv, 0, &temp, &dwLen, 0);
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptGetUserKey(0, 0, &hKey2);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
result = CryptGetUserKey(hProv, 0, &hKey2);
|
result = CryptGetUserKey(hProv, 0, &hKey2);
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
@ -372,6 +415,9 @@ static void test_incorrect_api_usage(void)
|
||||||
result = pCryptSignHashW(hHash, 0, NULL, 0, &temp, &dwLen);
|
result = pCryptSignHashW(hHash, 0, NULL, 0, &temp, &dwLen);
|
||||||
ok (!result && (GetLastError() == ERROR_INVALID_PARAMETER ||
|
ok (!result && (GetLastError() == ERROR_INVALID_PARAMETER ||
|
||||||
GetLastError() == ERROR_CALL_NOT_IMPLEMENTED), "%d\n", GetLastError());
|
GetLastError() == ERROR_CALL_NOT_IMPLEMENTED), "%d\n", GetLastError());
|
||||||
|
result = pCryptSignHashW(hHash, 0, NULL, 0, &temp, &dwLen);
|
||||||
|
ok (!result && (GetLastError() == ERROR_INVALID_PARAMETER ||
|
||||||
|
GetLastError() == ERROR_CALL_NOT_IMPLEMENTED), "%d\n", GetLastError());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
win_skip("CryptSignHashW is not available\n");
|
win_skip("CryptSignHashW is not available\n");
|
||||||
|
@ -382,6 +428,9 @@ static void test_incorrect_api_usage(void)
|
||||||
result = CryptSetHashParam(hHash, 0, &temp, 1);
|
result = CryptSetHashParam(hHash, 0, &temp, 1);
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
result = CryptSetProvParam(0, 0, &temp, 1);
|
||||||
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
result = CryptSetProvParam(hProv, 0, &temp, 1);
|
result = CryptSetProvParam(hProv, 0, &temp, 1);
|
||||||
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue