30#define PSAPI_VERSION 1
36{0x30,0x82,0x02,0xE1,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02
37,0xA0,0x82,0x02,0xD2,0x30,0x82,0x02,0xCE,0x02,0x01,0x01,0x31,0x00,0x30,0x0B
38,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x01,0xA0,0x82,0x02,0xB4
39,0x30,0x82,0x02,0xB0,0x30,0x82,0x02,0x19,0xA0,0x03,0x02,0x01,0x02,0x02,0x09
40,0x00,0xE2,0x59,0x17,0xA5,0x87,0x0F,0x88,0x89,0x30,0x0D,0x06,0x09,0x2A,0x86
41,0x48,0x86,0xF7,0x0D,0x01,0x01,0x05,0x05,0x00,0x30,0x45,0x31,0x0B,0x30,0x09
42,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x41,0x55,0x31,0x13,0x30,0x11,0x06,0x03
43,0x55,0x04,0x08,0x13,0x0A,0x53,0x6F,0x6D,0x65,0x2D,0x53,0x74,0x61,0x74,0x65
44,0x31,0x21,0x30,0x1F,0x06,0x03,0x55,0x04,0x0A,0x13,0x18,0x49,0x6E,0x74,0x65
45,0x72,0x6E,0x65,0x74,0x20,0x57,0x69,0x64,0x67,0x69,0x74,0x73,0x20,0x50,0x74
46,0x79,0x20,0x4C,0x74,0x64,0x30,0x1E,0x17,0x0D,0x30,0x39,0x31,0x31,0x32,0x30
47,0x31,0x37,0x33,0x38,0x31,0x32,0x5A,0x17,0x0D,0x31,0x30,0x31,0x31,0x32,0x30
48,0x31,0x37,0x33,0x38,0x31,0x32,0x5A,0x30,0x45,0x31,0x0B,0x30,0x09,0x06,0x03
49,0x55,0x04,0x06,0x13,0x02,0x41,0x55,0x31,0x13,0x30,0x11,0x06,0x03,0x55,0x04
50,0x08,0x13,0x0A,0x53,0x6F,0x6D,0x65,0x2D,0x53,0x74,0x61,0x74,0x65,0x31,0x21
51,0x30,0x1F,0x06,0x03,0x55,0x04,0x0A,0x13,0x18,0x49,0x6E,0x74,0x65,0x72,0x6E
52,0x65,0x74,0x20,0x57,0x69,0x64,0x67,0x69,0x74,0x73,0x20,0x50,0x74,0x79,0x20
53,0x4C,0x74,0x64,0x30,0x81,0x9F,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7
54,0x0D,0x01,0x01,0x01,0x05,0x00,0x03,0x81,0x8D,0x00,0x30,0x81,0x89,0x02,0x81
55,0x81,0x00,0x9B,0xC1,0x5E,0x28,0x70,0x32,0x81,0xEF,0x41,0x5C,0xCA,0x29,0x4A
56,0xB0,0x12,0xF7,0xAE,0x1E,0x30,0x93,0x14,0x3E,0x54,0x7C,0xC3,0x60,0x8C,0xB2
57,0x2F,0xC4,0x1F,0x20,0xEE,0x76,0xAC,0x83,0xD9,0xD4,0xC0,0x3C,0x78,0x6B,0xAA
58,0xA2,0x35,0x08,0x72,0x4A,0x5F,0xAE,0xD6,0x7D,0x5A,0xD8,0x27,0xEC,0xE0,0x24
59,0xBE,0xBE,0x62,0x86,0xF9,0x83,0x66,0x20,0xBC,0xF6,0x4B,0xC8,0x2D,0x1B,0x4C
60,0x5C,0xFA,0x0C,0x42,0x9F,0x57,0x49,0xDC,0xB9,0xC7,0x88,0x53,0xFA,0x26,0x21
61,0xC3,0xAB,0x4D,0x93,0x83,0x48,0x88,0xF1,0x14,0xB8,0x64,0x03,0x46,0x58,0x35
62,0xAC,0xD2,0xD2,0x9C,0xD4,0x6F,0xA4,0xE4,0x88,0x83,0x1C,0xD8,0x98,0xEE,0x2C
63,0xA3,0xEC,0x0C,0x4B,0xFB,0x1D,0x6E,0xBE,0xD9,0x77,0x02,0x03,0x01,0x00,0x01
64,0xA3,0x81,0xA7,0x30,0x81,0xA4,0x30,0x1D,0x06,0x03,0x55,0x1D,0x0E,0x04,0x16
65,0x04,0x14,0x3F,0xB3,0xC8,0x15,0x12,0xC7,0xD8,0xC0,0x13,0x3D,0xBE,0xF1,0x2F
66,0x5A,0xB3,0x51,0x59,0x79,0x89,0xF8,0x30,0x75,0x06,0x03,0x55,0x1D,0x23,0x04
67,0x6E,0x30,0x6C,0x80,0x14,0x3F,0xB3,0xC8,0x15,0x12,0xC7,0xD8,0xC0,0x13,0x3D
68,0xBE,0xF1,0x2F,0x5A,0xB3,0x51,0x59,0x79,0x89,0xF8,0xA1,0x49,0xA4,0x47,0x30
69,0x45,0x31,0x0B,0x30,0x09,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x41,0x55,0x31
70,0x13,0x30,0x11,0x06,0x03,0x55,0x04,0x08,0x13,0x0A,0x53,0x6F,0x6D,0x65,0x2D
71,0x53,0x74,0x61,0x74,0x65,0x31,0x21,0x30,0x1F,0x06,0x03,0x55,0x04,0x0A,0x13
72,0x18,0x49,0x6E,0x74,0x65,0x72,0x6E,0x65,0x74,0x20,0x57,0x69,0x64,0x67,0x69
73,0x74,0x73,0x20,0x50,0x74,0x79,0x20,0x4C,0x74,0x64,0x82,0x09,0x00,0xE2,0x59
74,0x17,0xA5,0x87,0x0F,0x88,0x89,0x30,0x0C,0x06,0x03,0x55,0x1D,0x13,0x04,0x05
75,0x30,0x03,0x01,0x01,0xFF,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D
76,0x01,0x01,0x05,0x05,0x00,0x03,0x81,0x81,0x00,0x52,0x09,0xA5,0x81,0x63,0xEF
77,0xF7,0x76,0x65,0x2B,0xA5,0x48,0xC1,0xC5,0xE0,0x73,0x60,0x9B,0x66,0x2E,0x21
78,0xCF,0xF2,0xBD,0xFF,0x81,0xC4,0x99,0x39,0xD0,0x5D,0x1B,0x12,0xFD,0xAE,0x30
79,0x5D,0x9C,0x1A,0xD4,0x76,0x8A,0x25,0x10,0x0A,0x7E,0x5D,0x78,0xB5,0x94,0xD8
80,0x97,0xBD,0x9A,0x5A,0xD6,0x23,0xCA,0x5C,0x46,0x8C,0xC7,0x30,0x45,0xB4,0x77
81,0x44,0x6F,0x16,0xDD,0xC6,0x58,0xFE,0x16,0x15,0xAD,0xB8,0x58,0x49,0x9A,0xFE
82,0x6B,0x87,0x78,0xEE,0x13,0xFF,0x29,0x26,0x8E,0x13,0x83,0x0D,0x18,0xCA,0x9F
83,0xA9,0x3E,0x6E,0x3C,0xA6,0x50,0x4A,0x04,0x71,0x9F,0x2E,0xCF,0x25,0xA6,0x03
84,0x46,0xCA,0xEB,0xEA,0x67,0x89,0x49,0x7C,0x43,0xA2,0x52,0xD9,0x41,0xCC,0x65
85,0xED,0x2D,0xA1,0x00,0x31,0x00};
91 0x4d,0x5a,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0x00,
92 0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
93 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
94 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
95 0x80,0x00,0x00,0x00,0x0e,0x1f,0xba,0x0e,0x00,0xb4,0x09,0xcd,0x21,0xb8,0x01,
96 0x4c,0xcd,0x21,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,
97 0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6e,0x20,
98 0x69,0x6e,0x20,0x44,0x4f,0x53,0x20,0x6d,0x6f,0x64,0x65,0x2e,0x0d,0x0d,0x0a,
99 0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x45,0x00,0x00,0x4c,0x01,0x0f,
100 0x00,0xfd,0x38,0xc9,0x55,0x00,0x24,0x01,0x00,0xea,0x04,0x00,0x00,0xe0,0x00,
101 0x07,0x01,0x0b,0x01,0x02,0x18,0x00,0x1a,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,
102 0x06,0x00,0x00,0xe0,0x14,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x30,0x00,0x00,
103 0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,
104 0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
105 0x01,0x00,0x00,0x04,0x00,0x00, 0x11,0xEF,0xCD,0xAB,0x03,0x00,
106 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
107 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00
117 skip(
"Failed to get system directory. Skipping certificate/PE image tests.\n");
121 if (sys_dir[
lstrlenA(sys_dir) - 1] !=
'\\')
132 skip(
"Unable to create copy of imagehlp.dll for tests.\n");
176 skip(
"Unable to allocate memory, skipping test\n");
181 cert->dwLength = cert_len;
220 skip(
"Unable to allocate memory, skipping test\n");
227 ok(
memcmp(
cert->bCertificate, cert_data, cert_len -
sizeof(
WIN_CERTIFICATE)) == 0,
"Certificate retrieved did not match original\n");
254 ok (
count == orig_count - 1,
"Certificate count mismatch; orig=%ld new=%ld\n", orig_count,
count);
261 DWORD checksum_orig, checksum_new, checksum_correct;
270 ok(!
ret,
"Expected CheckSumMappedFile to fail, got %p\n",
ret);
272 "Expected 0xdeadbeef (XP) or ERROR_INVALID_PARAMETER (Vista+), got %lx\n",
GetLastError());
276 ok(!
ret,
"Expected CheckSumMappedFile to fail, got %p\n",
ret);
278 "Expected 0xdeadbeef (XP) or ERROR_INVALID_PARAMETER (Vista+), got %lx\n",
GetLastError());
282 checksum_orig = checksum_new = 0xdeadbeef;
285 todo_wine ok(checksum_orig == 0,
"Expected 0, got %lx\n", checksum_orig);
286 todo_wine ok(checksum_new == 0xaabe,
"Expected 0xaabe, got %lx\n", checksum_new);
289 checksum_orig = checksum_new = 0xdeadbeef;
292 todo_wine ok(checksum_orig == 0,
"Expected 0, got %lx\n", checksum_orig);
293 todo_wine ok(checksum_new == 0x5569,
"Expected 0x5569, got %lx\n", checksum_new);
296 checksum_orig = checksum_new = 0xdeadbeef;
299 todo_wine ok(checksum_orig == 0,
"Expected 0, got %lx\n", checksum_orig);
300 todo_wine ok(checksum_new == 0xaab4,
"Expected 0xaab4, got %lx\n", checksum_new);
303 checksum_orig = checksum_new = 0xdeadbeef;
306 todo_wine ok(checksum_orig == 0,
"Expected 0, got %lx\n", checksum_orig);
307 todo_wine ok(checksum_new == 0xaad7,
"Expected 0xaad7, got %lx\n", checksum_new);
310 checksum_orig = checksum_new = 0xdeadbeef;
312 &checksum_orig, &checksum_new);
314 ok(checksum_orig == 0xabcdef11,
"Expected 0xabcdef11, got %lx\n", checksum_orig);
315 ok(checksum_new == 0xaa4,
"Expected 0xaa4, got %lx\n", checksum_new);
319 ok(ret_bool,
"GetModuleInformation failed, error: %lx\n",
GetLastError());
322 checksum_orig = checksum_new = 0xdeadbeef;
324 ok(
ret !=
NULL,
"Expected CheckSumMappedFile to succeed\n");
326 ok(checksum_orig != 0xdeadbeef,
"Expected orig checksum != 0xdeadbeef\n");
327 ok(checksum_new != 0xdeadbeef,
"Expected new checksum != 0xdeadbeef\n");
330 checksum_orig = checksum_new = 0xdeadbeef;
332 &checksum_orig, &checksum_new);
333 ok(!
ret,
"Expected CheckSumMappedFile to fail, got %p\n",
ret);
335 todo_wine ok(checksum_orig == 0,
"Expected 0, got %lx\n", checksum_orig);
336 todo_wine ok(checksum_new != 0 && checksum_new != 0xdeadbeef,
"Got unexpected value %lx\n", checksum_new);
341 checksum_orig = checksum_new = 0xdeadbeef;
343 &checksum_orig, &checksum_new);
345 ok((checksum_orig == 0) || (checksum_orig == checksum_correct),
"Expected %lx, got %lx\n", checksum_correct, checksum_orig);
346 ok(checksum_new != 0 && checksum_new != 0xdeadbeef,
"Got unexpected value %lx\n", checksum_new);
348 checksum_orig = checksum_new = 0xdeadbeef;
350 &checksum_orig, &checksum_new);
352 ok((checksum_orig == 0) || (checksum_orig == checksum_correct),
"Expected %lx, got %lx\n", checksum_correct, checksum_orig);
353 ok(checksum_new != 0 && checksum_new != 0xdeadbeef,
"Got unexpected value %lx\n", checksum_new);
355 checksum_orig = checksum_new = 0xdeadbeef;
358 ok((checksum_orig == 0xdeadbeef) || (checksum_orig == checksum_correct),
"Expected %lx, got %lx\n", checksum_correct, checksum_orig);
359 ok((checksum_new == 0xdeadbeef) || (checksum_new != 0 && checksum_new != 0xdeadbeef),
"Got unexpected value %lx\n", checksum_new);
361 checksum_orig = checksum_new = 0xdeadbeef;
363 &checksum_orig, &checksum_new);
365 ok((checksum_orig == 0) || (checksum_orig == 0xdeadbeef),
"Expected 0, got %lx\n", checksum_orig);
366 ok((checksum_new == 0) || (checksum_new == 0xdeadbeef),
"Expected 0, got %lx\n", checksum_new);
383 ok(
file_size == file_size_orig,
"File size different after add and remove (old: %ld; new: %ld)\n", file_size_orig,
file_size);
388 ok(second ==
first + 1,
"got %ld %ld\n",
first, second);
401 ok(
file_size == file_size_orig,
"File size different after add and remove (old: %ld; new: %ld)\n", file_size_orig,
file_size);
BOOL WINAPI CopyFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName, IN BOOL bFailIfExists)
PIMAGE_NT_HEADERS WINAPI ImageNtHeader(_In_ PVOID)
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define GetCurrentProcess()
#define HeapFree(x, y, z)
#define FILE_ATTRIBUTE_NORMAL
BOOL WINAPI ImageGetCertificateData(HANDLE handle, DWORD Index, LPWIN_CERTIFICATE Certificate, PDWORD RequiredLength)
BOOL WINAPI ImageAddCertificate(HANDLE FileHandle, LPWIN_CERTIFICATE Certificate, PDWORD Index)
BOOL WINAPI ImageEnumerateCertificates(HANDLE handle, WORD TypeFilter, PDWORD CertificateCount, PDWORD Indices, DWORD IndexCount)
BOOL WINAPI ImageRemoveCertificate(HANDLE FileHandle, DWORD Index)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
BOOL WINAPI GetModuleInformation(HANDLE process, HMODULE module, MODULEINFO *modinfo, DWORD count)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
GLuint GLuint GLsizei count
PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(LPVOID BaseAddress, DWORD FileLength, LPDWORD HeaderSum, LPDWORD CheckSum)
#define CERT_SECTION_TYPE_ANY
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
static IMAGE_NT_HEADERS32 nt_header
static void test_remove_certificate(int index)
static void test_get_certificate(const char *cert_data, int index)
static char test_pe_executable[]
static const char test_cert_data[]
static DWORD test_add_certificate(const char *cert_data, int len)
static char test_dll_path[MAX_PATH]
static DWORD get_file_size(void)
static void test_pe_checksum(void)
static BOOL copy_dll_file(void)
static const char test_cert_data_2[]
static HMODULE MODULEINFO * modinfo
static unsigned int file_size
DWORD WINAPI GetLastError(void)
#define WIN_CERT_REVISION_1_0
#define WIN_CERT_TYPE_PKCS_SIGNED_DATA