46{0x30,0x82,0x02,0xE1,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02
47,0xA0,0x82,0x02,0xD2,0x30,0x82,0x02,0xCE,0x02,0x01,0x01,0x31,0x00,0x30,0x0B
48,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x01,0xA0,0x82,0x02,0xB4
49,0x30,0x82,0x02,0xB0,0x30,0x82,0x02,0x19,0xA0,0x03,0x02,0x01,0x02,0x02,0x09
50,0x00,0xE2,0x59,0x17,0xA5,0x87,0x0F,0x88,0x89,0x30,0x0D,0x06,0x09,0x2A,0x86
51,0x48,0x86,0xF7,0x0D,0x01,0x01,0x05,0x05,0x00,0x30,0x45,0x31,0x0B,0x30,0x09
52,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x41,0x55,0x31,0x13,0x30,0x11,0x06,0x03
53,0x55,0x04,0x08,0x13,0x0A,0x53,0x6F,0x6D,0x65,0x2D,0x53,0x74,0x61,0x74,0x65
54,0x31,0x21,0x30,0x1F,0x06,0x03,0x55,0x04,0x0A,0x13,0x18,0x49,0x6E,0x74,0x65
55,0x72,0x6E,0x65,0x74,0x20,0x57,0x69,0x64,0x67,0x69,0x74,0x73,0x20,0x50,0x74
56,0x79,0x20,0x4C,0x74,0x64,0x30,0x1E,0x17,0x0D,0x30,0x39,0x31,0x31,0x32,0x30
57,0x31,0x37,0x33,0x38,0x31,0x32,0x5A,0x17,0x0D,0x31,0x30,0x31,0x31,0x32,0x30
58,0x31,0x37,0x33,0x38,0x31,0x32,0x5A,0x30,0x45,0x31,0x0B,0x30,0x09,0x06,0x03
59,0x55,0x04,0x06,0x13,0x02,0x41,0x55,0x31,0x13,0x30,0x11,0x06,0x03,0x55,0x04
60,0x08,0x13,0x0A,0x53,0x6F,0x6D,0x65,0x2D,0x53,0x74,0x61,0x74,0x65,0x31,0x21
61,0x30,0x1F,0x06,0x03,0x55,0x04,0x0A,0x13,0x18,0x49,0x6E,0x74,0x65,0x72,0x6E
62,0x65,0x74,0x20,0x57,0x69,0x64,0x67,0x69,0x74,0x73,0x20,0x50,0x74,0x79,0x20
63,0x4C,0x74,0x64,0x30,0x81,0x9F,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7
64,0x0D,0x01,0x01,0x01,0x05,0x00,0x03,0x81,0x8D,0x00,0x30,0x81,0x89,0x02,0x81
65,0x81,0x00,0x9B,0xC1,0x5E,0x28,0x70,0x32,0x81,0xEF,0x41,0x5C,0xCA,0x29,0x4A
66,0xB0,0x12,0xF7,0xAE,0x1E,0x30,0x93,0x14,0x3E,0x54,0x7C,0xC3,0x60,0x8C,0xB2
67,0x2F,0xC4,0x1F,0x20,0xEE,0x76,0xAC,0x83,0xD9,0xD4,0xC0,0x3C,0x78,0x6B,0xAA
68,0xA2,0x35,0x08,0x72,0x4A,0x5F,0xAE,0xD6,0x7D,0x5A,0xD8,0x27,0xEC,0xE0,0x24
69,0xBE,0xBE,0x62,0x86,0xF9,0x83,0x66,0x20,0xBC,0xF6,0x4B,0xC8,0x2D,0x1B,0x4C
70,0x5C,0xFA,0x0C,0x42,0x9F,0x57,0x49,0xDC,0xB9,0xC7,0x88,0x53,0xFA,0x26,0x21
71,0xC3,0xAB,0x4D,0x93,0x83,0x48,0x88,0xF1,0x14,0xB8,0x64,0x03,0x46,0x58,0x35
72,0xAC,0xD2,0xD2,0x9C,0xD4,0x6F,0xA4,0xE4,0x88,0x83,0x1C,0xD8,0x98,0xEE,0x2C
73,0xA3,0xEC,0x0C,0x4B,0xFB,0x1D,0x6E,0xBE,0xD9,0x77,0x02,0x03,0x01,0x00,0x01
74,0xA3,0x81,0xA7,0x30,0x81,0xA4,0x30,0x1D,0x06,0x03,0x55,0x1D,0x0E,0x04,0x16
75,0x04,0x14,0x3F,0xB3,0xC8,0x15,0x12,0xC7,0xD8,0xC0,0x13,0x3D,0xBE,0xF1,0x2F
76,0x5A,0xB3,0x51,0x59,0x79,0x89,0xF8,0x30,0x75,0x06,0x03,0x55,0x1D,0x23,0x04
77,0x6E,0x30,0x6C,0x80,0x14,0x3F,0xB3,0xC8,0x15,0x12,0xC7,0xD8,0xC0,0x13,0x3D
78,0xBE,0xF1,0x2F,0x5A,0xB3,0x51,0x59,0x79,0x89,0xF8,0xA1,0x49,0xA4,0x47,0x30
79,0x45,0x31,0x0B,0x30,0x09,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x41,0x55,0x31
80,0x13,0x30,0x11,0x06,0x03,0x55,0x04,0x08,0x13,0x0A,0x53,0x6F,0x6D,0x65,0x2D
81,0x53,0x74,0x61,0x74,0x65,0x31,0x21,0x30,0x1F,0x06,0x03,0x55,0x04,0x0A,0x13
82,0x18,0x49,0x6E,0x74,0x65,0x72,0x6E,0x65,0x74,0x20,0x57,0x69,0x64,0x67,0x69
83,0x74,0x73,0x20,0x50,0x74,0x79,0x20,0x4C,0x74,0x64,0x82,0x09,0x00,0xE2,0x59
84,0x17,0xA5,0x87,0x0F,0x88,0x89,0x30,0x0C,0x06,0x03,0x55,0x1D,0x13,0x04,0x05
85,0x30,0x03,0x01,0x01,0xFF,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D
86,0x01,0x01,0x05,0x05,0x00,0x03,0x81,0x81,0x00,0x52,0x09,0xA5,0x81,0x63,0xEF
87,0xF7,0x76,0x65,0x2B,0xA5,0x48,0xC1,0xC5,0xE0,0x73,0x60,0x9B,0x66,0x2E,0x21
88,0xCF,0xF2,0xBD,0xFF,0x81,0xC4,0x99,0x39,0xD0,0x5D,0x1B,0x12,0xFD,0xAE,0x30
89,0x5D,0x9C,0x1A,0xD4,0x76,0x8A,0x25,0x10,0x0A,0x7E,0x5D,0x78,0xB5,0x94,0xD8
90,0x97,0xBD,0x9A,0x5A,0xD6,0x23,0xCA,0x5C,0x46,0x8C,0xC7,0x30,0x45,0xB4,0x77
91,0x44,0x6F,0x16,0xDD,0xC6,0x58,0xFE,0x16,0x15,0xAD,0xB8,0x58,0x49,0x9A,0xFE
92,0x6B,0x87,0x78,0xEE,0x13,0xFF,0x29,0x26,0x8E,0x13,0x83,0x0D,0x18,0xCA,0x9F
93,0xA9,0x3E,0x6E,0x3C,0xA6,0x50,0x4A,0x04,0x71,0x9F,0x2E,0xCF,0x25,0xA6,0x03
94,0x46,0xCA,0xEB,0xEA,0x67,0x89,0x49,0x7C,0x43,0xA2,0x52,0xD9,0x41,0xCC,0x65
95,0xED,0x2D,0xA1,0x00,0x31,0x00};
101 0x4d,0x5a,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0x00,
102 0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
103 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
104 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
105 0x80,0x00,0x00,0x00,0x0e,0x1f,0xba,0x0e,0x00,0xb4,0x09,0xcd,0x21,0xb8,0x01,
106 0x4c,0xcd,0x21,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,
107 0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6e,0x20,
108 0x69,0x6e,0x20,0x44,0x4f,0x53,0x20,0x6d,0x6f,0x64,0x65,0x2e,0x0d,0x0d,0x0a,
109 0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x45,0x00,0x00,0x4c,0x01,0x0f,
110 0x00,0xfd,0x38,0xc9,0x55,0x00,0x24,0x01,0x00,0xea,0x04,0x00,0x00,0xe0,0x00,
111 0x07,0x01,0x0b,0x01,0x02,0x18,0x00,0x1a,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,
112 0x06,0x00,0x00,0xe0,0x14,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x30,0x00,0x00,
113 0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,
114 0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
115 0x01,0x00,0x00,0x04,0x00,0x00, 0x11,0xEF,0xCD,0xAB,0x03,0x00,
116 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
117 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00
127 skip(
"Failed to get system directory. Skipping certificate/PE image tests.\n");
131 if (sys_dir[
lstrlenA(sys_dir) - 1] !=
'\\')
142 skip(
"Unable to create copy of imagehlp.dll for tests.\n");
186 skip(
"Unable to allocate memory, skipping test\n");
191 cert->dwLength = cert_len;
230 skip(
"Unable to allocate memory, skipping test\n");
237 ok(
memcmp(
cert->bCertificate, cert_data, cert_len -
sizeof(
WIN_CERTIFICATE)) == 0,
"Certificate retrieved did not match original\n");
264 ok (
count == orig_count - 1,
"Certificate count mismatch; orig=%d new=%d\n", orig_count,
count);
271 DWORD checksum_orig, checksum_new, checksum_correct;
278 if (!pCheckSumMappedFile)
280 win_skip(
"CheckSumMappedFile not supported, skipping tests\n");
285 ret = pCheckSumMappedFile(
NULL, 0, &checksum_orig, &checksum_new);
286 ok(!
ret,
"Expected CheckSumMappedFile to fail, got %p\n",
ret);
288 "Expected 0xdeadbeef (XP) or ERROR_INVALID_PARAMETER (Vista+), got %x\n",
GetLastError());
291 ret = pCheckSumMappedFile((
void *)0xdeadbeef, 0, &checksum_orig, &checksum_new);
292 ok(!
ret,
"Expected CheckSumMappedFile to fail, got %p\n",
ret);
294 "Expected 0xdeadbeef (XP) or ERROR_INVALID_PARAMETER (Vista+), got %x\n",
GetLastError());
298 checksum_orig = checksum_new = 0xdeadbeef;
299 ret = pCheckSumMappedFile(
buffer,
sizeof(
buffer), &checksum_orig, &checksum_new);
301 todo_wine ok(checksum_orig == 0,
"Expected 0, got %x\n", checksum_orig);
302 todo_wine ok(checksum_new == 0xaabe,
"Expected 0xaabe, got %x\n", checksum_new);
305 checksum_orig = checksum_new = 0xdeadbeef;
306 ret = pCheckSumMappedFile(
buffer,
sizeof(
buffer), &checksum_orig, &checksum_new);
308 todo_wine ok(checksum_orig == 0,
"Expected 0, got %x\n", checksum_orig);
309 todo_wine ok(checksum_new == 0x5569,
"Expected 0x5569, got %x\n", checksum_new);
312 checksum_orig = checksum_new = 0xdeadbeef;
313 ret = pCheckSumMappedFile(
buffer, 10, &checksum_orig, &checksum_new);
315 todo_wine ok(checksum_orig == 0,
"Expected 0, got %x\n", checksum_orig);
316 todo_wine ok(checksum_new == 0xaab4,
"Expected 0xaab4, got %x\n", checksum_new);
319 checksum_orig = checksum_new = 0xdeadbeef;
320 ret = pCheckSumMappedFile(
buffer, 11, &checksum_orig, &checksum_new);
322 todo_wine ok(checksum_orig == 0,
"Expected 0, got %x\n", checksum_orig);
323 todo_wine ok(checksum_new == 0xaad7,
"Expected 0xaad7, got %x\n", checksum_new);
326 checksum_orig = checksum_new = 0xdeadbeef;
328 &checksum_orig, &checksum_new);
330 ok(checksum_orig == 0xabcdef11,
"Expected 0xabcdef11, got %x\n", checksum_orig);
331 ok(checksum_new == 0xaa4,
"Expected 0xaa4, got %x\n", checksum_new);
333 if (!pGetModuleInformation)
335 win_skip(
"GetModuleInformation not supported, skipping tests\n");
341 ok(ret_bool,
"GetModuleInformation failed, error: %x\n",
GetLastError());
344 checksum_orig = checksum_new = 0xdeadbeef;
345 ret = pCheckSumMappedFile(
modinfo.lpBaseOfDll,
modinfo.SizeOfImage, &checksum_orig, &checksum_new);
346 ok(
ret !=
NULL,
"Expected CheckSumMappedFile to succeed\n");
348 ok(checksum_orig != 0xdeadbeef,
"Expected orig checksum != 0xdeadbeef\n");
349 ok(checksum_new != 0xdeadbeef,
"Expected new checksum != 0xdeadbeef\n");
352 checksum_orig = checksum_new = 0xdeadbeef;
353 ret = pCheckSumMappedFile((
char *)
modinfo.lpBaseOfDll + 100,
modinfo.SizeOfImage - 100,
354 &checksum_orig, &checksum_new);
355 ok(!
ret,
"Expected CheckSumMappedFile to fail, got %p\n",
ret);
357 todo_wine ok(checksum_orig == 0,
"Expected 0, got %x\n", checksum_orig);
358 todo_wine ok(checksum_new != 0 && checksum_new != 0xdeadbeef,
"Got unexpected value %x\n", checksum_new);
363 checksum_orig = checksum_new = 0xdeadbeef;
365 &checksum_orig, &checksum_new);
367 ok((checksum_orig == 0) || (checksum_orig == checksum_correct),
"Expected %x, got %x\n", checksum_correct, checksum_orig);
368 ok(checksum_new != 0 && checksum_new != 0xdeadbeef,
"Got unexpected value %x\n", checksum_new);
370 checksum_orig = checksum_new = 0xdeadbeef;
372 &checksum_orig, &checksum_new);
374 ok((checksum_orig == 0) || (checksum_orig == checksum_correct),
"Expected %x, got %x\n", checksum_correct, checksum_orig);
375 ok(checksum_new != 0 && checksum_new != 0xdeadbeef,
"Got unexpected value %x\n", checksum_new);
377 checksum_orig = checksum_new = 0xdeadbeef;
378 ret = pCheckSumMappedFile(
modinfo.lpBaseOfDll, 0, &checksum_orig, &checksum_new);
380 ok((checksum_orig == 0xdeadbeef) || (checksum_orig == checksum_correct),
"Expected %x, got %x\n", checksum_correct, checksum_orig);
381 ok((checksum_new == 0xdeadbeef) || (checksum_new != 0 && checksum_new != 0xdeadbeef),
"Got unexpected value %x\n", checksum_new);
383 checksum_orig = checksum_new = 0xdeadbeef;
384 ret = pCheckSumMappedFile((
char *)
modinfo.lpBaseOfDll + 1, 0,
385 &checksum_orig, &checksum_new);
387 ok((checksum_orig == 0) || (checksum_orig == 0xdeadbeef),
"Expected 0, got %x\n", checksum_orig);
388 ok((checksum_new == 0) || (checksum_new == 0xdeadbeef),
"Expected 0, got %x\n", checksum_new);
431 ok(
file_size == file_size_orig,
"File size different after add and remove (old: %d; new: %d)\n", file_size_orig,
file_size);
449 ok(
file_size == file_size_orig,
"File size different after add and remove (old: %d; new: %d)\n", file_size_orig,
file_size);
#define WIN_CERT_TYPE_PKCS_SIGNED_DATA
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#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 CopyFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName, IN BOOL bFailIfExists)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS
GLuint GLuint GLsizei count
#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