* - Signature checking
*/
-#include "advapi32.h"
+#include <advapi32.h>
#include "crypt.h"
+#include <winefs.h>
#define NDEBUG
#include <debug.h>
return TRUE;
}
wcount = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
- wcount = wcount < wstrsize/sizeof(WCHAR) ? wcount : wstrsize/sizeof(WCHAR);
+ wcount = wcount < wstrsize/(int)sizeof(WCHAR) ? wcount : wstrsize/(int)sizeof(WCHAR);
if (wstrsize == -1)
*wstr = CRYPT_Alloc(wcount * sizeof(WCHAR));
if (*wstr)
SetLastError(NTE_BAD_PROV_TYPE);
return FALSE;
}
-
+
if (!phProv)
{
SetLastError(ERROR_INVALID_PARAMETER);
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
goto error;
}
- r = RegQueryValueExA(key, "Name", NULL, NULL, provname, &len);
+ r = RegQueryValueExA(key, "Name", NULL, NULL, (LPBYTE)provname, &len);
if (r != ERROR_SUCCESS)
{
DPRINT("error %ld reading 'Name' from registry\n", r );
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
goto error;
}
- r = RegQueryValueExA(key, "Image Path", NULL, NULL, temp, &len);
+ r = RegQueryValueExA(key, "Image Path", NULL, NULL, (LPBYTE)temp, &len);
if (r != ERROR_SUCCESS)
{
DPRINT("error %ld reading 'Image Path' from registry\n", r );
{
DWORD numkeys;
WCHAR *provNameW;
-
+
RegQueryInfoKeyW(hKey, NULL, NULL, NULL, &numkeys, pcbProvName,
NULL, NULL, NULL, NULL, NULL, NULL);
-
+
if (!(provNameW = CRYPT_Alloc(*pcbProvName * sizeof(WCHAR))))
CRYPT_ReturnLastError(ERROR_NOT_ENOUGH_MEMORY);
-
+
RegEnumKeyExW(hKey, dwIndex, provNameW, pcbProvName, NULL, NULL, NULL, NULL);
(*pcbProvName)++;
*pcbProvName *= sizeof(WCHAR);
-
+
CRYPT_Free(provNameW);
-
+
if (dwIndex >= numkeys)
CRYPT_ReturnLastError(ERROR_NO_MORE_ITEMS);
}
DWORD size = sizeof(DWORD);
DWORD result;
HKEY subkey;
-
+
result = RegEnumKeyW(hKey, dwIndex, pszProvName, *pcbProvName / sizeof(WCHAR));
if (result)
CRYPT_ReturnLastError(result);
*pdwProvType += (*(--ch) - '0') * 10;
*pdwProvType += (*(--ch) - '0') * 100;
CRYPT_Free(keyname);
-
- result = RegQueryValueExA(hSubkey, "TypeName", NULL, &dwType, pszTypeName, pcbTypeName);
+
+ result = RegQueryValueExA(hSubkey, "TypeName", NULL, &dwType, (LPBYTE)pszTypeName, pcbTypeName);
if (result)
CRYPT_ReturnLastError(result);
/******************************************************************************
* CryptExportKey (ADVAPI32.@)
- *
+ *
* Exports a cryptographic key from a CSP.
*
* PARAMS
CRYPT_ReturnLastError(NTE_PROV_TYPE_NOT_DEF);
}
CRYPT_Free(keyname);
-
- result = RegQueryValueExA(hKey, "Name", NULL, NULL, pszProvName, pcbProvName);
+
+ result = RegQueryValueExA(hKey, "Name", NULL, NULL, (LPBYTE)pszProvName, pcbProvName);
if (result)
{
if (result != ERROR_MORE_DATA)
SetLastError(NTE_PROV_TYPE_ENTRY_BAD);
else
SetLastError(result);
-
+
return FALSE;
}
-
+
RegCloseKey(hKey);
return TRUE;
}
/******************************************************************************
* CryptHashSessionKey (ADVAPI32.@)
*
- * PARAMS
+ * PARAMS
* hHash [I] Handle to the hash object.
* hKey [I] Handle to the key to be hashed.
* dwFlags [I] Can be CRYPT_LITTLE_ENDIAN.
if (dwFlags & ~(CRYPT_MACHINE_DEFAULT | CRYPT_USER_DEFAULT | CRYPT_DELETE_DEFAULT)
|| dwFlags == CRYPT_DELETE_DEFAULT)
CRYPT_ReturnLastError(NTE_BAD_FLAGS);
-
+
if (!(keyname = CRYPT_GetTypeKeyName(dwProvType, dwFlags & CRYPT_USER_DEFAULT)))
CRYPT_ReturnLastError(ERROR_NOT_ENOUGH_MEMORY);
if (RegOpenKeyA((dwFlags & CRYPT_USER_DEFAULT) ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
CRYPT_ReturnLastError(NTE_BAD_PROVIDER);
}
CRYPT_Free(keyname);
-
+
if (dwFlags & CRYPT_DELETE_DEFAULT)
{
RegDeleteValueA(hTypeKey, "Name");
CRYPT_ReturnLastError(NTE_BAD_PROVIDER);
}
CRYPT_Free(keyname);
-
- if (RegSetValueExA(hTypeKey, "Name", 0, REG_SZ, pszProvName, strlen(pszProvName) + 1))
+
+ if (RegSetValueExA(hTypeKey, "Name", 0, REG_SZ, (LPBYTE)pszProvName, strlen(pszProvName) + 1))
{
RegCloseKey(hTypeKey);
RegCloseKey(hProvKey);
return FALSE;
}
-
+
RegCloseKey(hProvKey);
}
RegCloseKey(hTypeKey);
key->hPrivate, NULL, dwFlags);
}
+BOOL WINAPI
+CryptVerifySignatureW (HCRYPTHASH hHash,
+ BYTE *pbSignature,
+ DWORD dwSigLen,
+ HCRYPTKEY hPubKey,
+ LPCWSTR sDescription,
+ DWORD dwFlags)
+{
+ OutputDebugStringA ("ADVAPI32!CryptVerifySignatureW not implemented!");
+ return FALSE;
+}
/*
These functions have nearly identical prototypes to CryptProtectMemory and CryptUnprotectMemory,
DPRINT1("(%p, %lx, %lx): stub [RtlDecryptMemory]\n", memory, length, flags);
return STATUS_SUCCESS;
}
+
+
+/*
+ * @unimplemented
+ */
+DWORD WINAPI AddUsersToEncryptedFile (
+ LPCWSTR lpcwstr,
+ PENCRYPTION_CERTIFICATE_LIST pencryption_certificate_list
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/*
+ * @unimplemented
+ */
+DWORD WINAPI RemoveUsersFromEncryptedFile (
+ LPCWSTR lpcwstr,
+ PENCRYPTION_CERTIFICATE_HASH_LIST pencryption_certificate_hash_list
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL WINAPI FileEncryptionStatusW (
+ LPCWSTR lpcwstr,
+ LPDWORD lpdword
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/*
+ * @unimplemented
+ */
+BOOL WINAPI FileEncryptionStatusA (
+ LPCSTR lpcstr,
+ LPDWORD lpdword
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/*
+ * @unimplemented
+ */
+DWORD WINAPI QueryUsersOnEncryptedFile (
+ LPCWSTR lpctstr,
+ PENCRYPTION_CERTIFICATE_HASH_LIST* pencryption_certificate_hash_list
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/*
+ * @unimplemented
+ */
+void WINAPI FreeEncryptionCertificateHashList (
+ PENCRYPTION_CERTIFICATE_HASH_LIST pencryption_certificate_hash_list
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return;
+}
+
+
+/*
+ * @unimplemented
+ */
+DWORD WINAPI QueryRecoveryAgentsOnEncryptedFile (
+ LPCWSTR lpctstr,
+ PENCRYPTION_CERTIFICATE_HASH_LIST* pencryption_certificate_hash_list
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL WINAPI EncryptionDisable(
+ LPCWSTR DirPath,
+ BOOL Disable
+ )
+{
+ DPRINT1("%s() not implemented!\n", __FUNCTION__);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+