diff --git a/patches/d3dx9_36-Dummy_Skininfo/0002-d3dx9_36-tests-Add-initial-tests-for-dummy-skininfo-.patch b/patches/d3dx9_36-Dummy_Skininfo/0002-d3dx9_36-tests-Add-initial-tests-for-dummy-skininfo-.patch deleted file mode 100644 index 4ee25616..00000000 --- a/patches/d3dx9_36-Dummy_Skininfo/0002-d3dx9_36-tests-Add-initial-tests-for-dummy-skininfo-.patch +++ /dev/null @@ -1,164 +0,0 @@ -From 2c16649c78bb8d3751b3fb8ac52c497380d1918b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Tue, 28 Jul 2015 17:34:40 +0200 -Subject: d3dx9_36/tests: Add initial tests for dummy skininfo interface. - ---- - dlls/d3dx9_36/tests/mesh.c | 127 +++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 127 insertions(+) - -diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c -index 0243a61..7f86d89 100644 ---- a/dlls/d3dx9_36/tests/mesh.c -+++ b/dlls/d3dx9_36/tests/mesh.c -@@ -25,6 +25,9 @@ - #include - #include "wine/test.h" - #include "d3dx9.h" -+#include "initguid.h" -+#include "rmxftmpl.h" -+#include "rmxfguid.h" - - #ifndef NAN - /* From wine/port.h */ -@@ -2374,6 +2377,129 @@ static void D3DXLoadMeshTest(void) - free_test_context(test_context); - } - -+static ID3DXFileData *get_mesh_data(const char *memory, SIZE_T length) -+{ -+ D3DXF_FILELOADMEMORY source; -+ ID3DXFileEnumObject *enumobj = NULL; -+ ID3DXFileData *filedata = NULL; -+ ID3DXFileData *ret = NULL; -+ ID3DXFile *d3dxfile = NULL; -+ SIZE_T i, nb_children; -+ HRESULT hr; -+ GUID guid; -+ -+ hr = D3DXFileCreate(&d3dxfile); -+ if (FAILED(hr)) return NULL; -+ -+ hr = d3dxfile->lpVtbl->RegisterTemplates(d3dxfile, D3DRM_XTEMPLATES, D3DRM_XTEMPLATE_BYTES); -+ if (FAILED(hr)) goto cleanup; -+ -+ source.lpMemory = (void *)memory; -+ source.dSize = length; -+ -+ hr = d3dxfile->lpVtbl->CreateEnumObject(d3dxfile, &source, D3DXF_FILELOAD_FROMMEMORY, &enumobj); -+ if (FAILED(hr)) goto cleanup; -+ -+ hr = enumobj->lpVtbl->GetChildren(enumobj, &nb_children); -+ if (FAILED(hr)) goto cleanup; -+ -+ for (i = 0; i < nb_children; i++) -+ { -+ hr = enumobj->lpVtbl->GetChild(enumobj, i, &filedata); -+ if (FAILED(hr)) goto cleanup; -+ -+ hr = filedata->lpVtbl->GetType(filedata, &guid); -+ if (SUCCEEDED(hr) && IsEqualGUID(&guid, &TID_D3DRMMesh)) -+ { -+ ret = filedata; -+ break; -+ } -+ else -+ filedata->lpVtbl->Release(filedata); -+ } -+ -+cleanup: -+ if (enumobj) enumobj->lpVtbl->Release(enumobj); -+ if (d3dxfile) d3dxfile->lpVtbl->Release(d3dxfile); -+ -+ return ret; -+} -+ -+static void D3DXLoadSkinMeshFromXofTest(void) -+{ -+ static const char simple_xfile[] = -+ "xof 0303txt 0032" -+ "Mesh {" -+ "3;" -+ "0.0; 0.0; 0.0;," -+ "0.0; 1.0; 0.0;," -+ "1.0; 1.0; 0.0;;" -+ "1;" -+ "3; 0, 1, 2;;" -+ "}"; -+ ID3DXBuffer *adjacency, *materials, *effects; -+ D3DPRESENT_PARAMETERS d3dpp; -+ IDirect3DDevice9 *device; -+ ID3DXFileData *filedata; -+ ID3DXSkinInfo *skininfo; -+ ID3DXMesh *mesh; -+ IDirect3D9 *d3d; -+ DWORD mat_count; -+ HRESULT hr; -+ HWND hwnd; -+ -+ if (!(hwnd = CreateWindowA("static", "d3dx9_test", WS_OVERLAPPEDWINDOW, 0, 0, -+ 640, 480, NULL, NULL, NULL, NULL))) -+ { -+ skip("Couldn't create application window\n"); -+ return; -+ } -+ -+ d3d = Direct3DCreate9(D3D_SDK_VERSION); -+ if (!d3d) -+ { -+ skip("Couldn't create IDirect3D9 object\n"); -+ DestroyWindow(hwnd); -+ return; -+ } -+ -+ ZeroMemory(&d3dpp, sizeof(d3dpp)); -+ d3dpp.Windowed = TRUE; -+ d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; -+ -+ hr = IDirect3D9_CreateDevice(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &device); -+ IDirect3D9_Release(d3d); -+ if (FAILED(hr)) -+ { -+ skip("Failed to create IDirect3DDevice9 object %#x\n", hr); -+ DestroyWindow(hwnd); -+ return; -+ } -+ -+ filedata = get_mesh_data(simple_xfile, sizeof(simple_xfile) - 1); -+ ok(filedata != NULL, "Failed to load mesh data\n"); -+ -+ adjacency = materials = effects = NULL; -+ skininfo = NULL; -+ mesh = NULL; -+ -+ hr = D3DXLoadSkinMeshFromXof(filedata, 0, device, &adjacency, &materials, &effects, &mat_count, &skininfo, &mesh); -+ ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr); -+ ok(skininfo != NULL, "Expected non-null skininfo\n"); -+ -+ /* FIXME: Add additional tests for skininfo interface. */ -+ -+ if (adjacency) adjacency->lpVtbl->Release(adjacency); -+ if (materials) materials->lpVtbl->Release(materials); -+ if (effects) effects->lpVtbl->Release(effects); -+ if (skininfo) skininfo->lpVtbl->Release(skininfo); -+ if (mesh) mesh->lpVtbl->Release(mesh); -+ -+ filedata->lpVtbl->Release(filedata); -+ IDirect3DDevice9_Release(device); -+ DestroyWindow(hwnd); -+} -+ - static BOOL compute_box(struct mesh *mesh, float width, float height, float depth) - { - unsigned int i, face; -@@ -10955,6 +11081,7 @@ START_TEST(mesh) - D3DXCreateMeshTest(); - D3DXCreateMeshFVFTest(); - D3DXLoadMeshTest(); -+ D3DXLoadSkinMeshFromXofTest(); - D3DXCreateBoxTest(); - D3DXCreatePolygonTest(); - D3DXCreateSphereTest(); --- -2.5.0 - diff --git a/patches/imagehlp-Cleanup/0001-imagehlp-Catch-invalid-memory-access-in-CheckSumMapp.patch b/patches/imagehlp-Cleanup/0001-imagehlp-Catch-invalid-memory-access-in-CheckSumMapp.patch deleted file mode 100644 index 61971b49..00000000 --- a/patches/imagehlp-Cleanup/0001-imagehlp-Catch-invalid-memory-access-in-CheckSumMapp.patch +++ /dev/null @@ -1,404 +0,0 @@ -From a7ed2b13874bd662db8bf30df7b7f394e279e687 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Tue, 11 Aug 2015 02:23:20 +0200 -Subject: imagehlp: Catch invalid memory access in CheckSumMappedFile and add - tests. - ---- - dlls/imagehlp/modify.c | 55 +++++---- - dlls/imagehlp/tests/integrity.c | 252 +++++++++++++++++++++++++++++++++++++++- - 2 files changed, 283 insertions(+), 24 deletions(-) - -diff --git a/dlls/imagehlp/modify.c b/dlls/imagehlp/modify.c -index debccc0..aa29ca7 100644 ---- a/dlls/imagehlp/modify.c -+++ b/dlls/imagehlp/modify.c -@@ -25,6 +25,7 @@ - #include "winternl.h" - #include "winerror.h" - #include "wine/debug.h" -+#include "wine/exception.h" - #include "imagehlp.h" - - WINE_DEFAULT_DEBUG_CHANNEL(imagehlp); -@@ -92,37 +93,45 @@ PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile( - IMAGE_DOS_HEADER *dos = (IMAGE_DOS_HEADER *) BaseAddress; - PIMAGE_NT_HEADERS32 Header32; - PIMAGE_NT_HEADERS64 Header64; -+ PIMAGE_NT_HEADERS ret = NULL; - DWORD *ChecksumFile; - DWORD CalcSum; -- DWORD HdrSum; -+ DWORD HdrSum = 0; - - TRACE("(%p, %d, %p, %p)\n", - BaseAddress, FileLength, HeaderSum, CheckSum - ); - -- CalcSum = (DWORD)CalcCheckSum(0, -- BaseAddress, -- (FileLength + 1) / sizeof(WORD)); -+ CalcSum = (DWORD)CalcCheckSum(0, BaseAddress, (FileLength + 1) / sizeof(WORD)); - -- if (dos->e_magic != IMAGE_DOS_SIGNATURE) -- return NULL; -- -- Header32 = (IMAGE_NT_HEADERS32 *)((char *)dos + dos->e_lfanew); -- -- if (Header32->Signature != IMAGE_NT_SIGNATURE) -- return NULL; -- -- if (Header32->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC) -- ChecksumFile = &Header32->OptionalHeader.CheckSum; -- else if (Header32->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC) -+ __TRY - { -- Header64 = (IMAGE_NT_HEADERS64 *)Header32; -- ChecksumFile = &Header64->OptionalHeader.CheckSum; -+ if (dos->e_magic != IMAGE_DOS_SIGNATURE) -+ break; -+ -+ Header32 = (IMAGE_NT_HEADERS32 *)((char *)dos + dos->e_lfanew); -+ if (Header32->Signature != IMAGE_NT_SIGNATURE) -+ break; -+ -+ ret = (PIMAGE_NT_HEADERS)Header32; -+ -+ if (Header32->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC) -+ ChecksumFile = &Header32->OptionalHeader.CheckSum; -+ else if (Header32->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC) -+ { -+ Header64 = (IMAGE_NT_HEADERS64 *)Header32; -+ ChecksumFile = &Header64->OptionalHeader.CheckSum; -+ } -+ else -+ break; -+ -+ HdrSum = *ChecksumFile; - } -- else -- return NULL; -- -- HdrSum = *ChecksumFile; -+ __EXCEPT_PAGE_FAULT -+ { -+ /* nothing */ -+ } -+ __ENDTRY - - /* Subtract image checksum from calculated checksum. */ - /* fix low word of checksum */ -@@ -149,9 +158,9 @@ PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile( - CalcSum += FileLength; - - *CheckSum = CalcSum; -- *HeaderSum = *ChecksumFile; -+ *HeaderSum = HdrSum; - -- return (PIMAGE_NT_HEADERS) Header32; -+ return ret; - } - - /*********************************************************************** -diff --git a/dlls/imagehlp/tests/integrity.c b/dlls/imagehlp/tests/integrity.c -index 3fa359f..7dd8ff4 100644 ---- a/dlls/imagehlp/tests/integrity.c -+++ b/dlls/imagehlp/tests/integrity.c -@@ -26,8 +26,9 @@ - #include "winerror.h" - #include "winnt.h" - #include "imagehlp.h" -+#include "psapi.h" - --static HMODULE hImageHlp; -+static HMODULE hImageHlp, hPsapi; - static char test_dll_path[MAX_PATH]; - - static BOOL (WINAPI *pImageAddCertificate)(HANDLE, LPWIN_CERTIFICATE, PDWORD); -@@ -35,6 +36,9 @@ static BOOL (WINAPI *pImageEnumerateCertificates)(HANDLE, WORD, PDWORD, PDWORD, - static BOOL (WINAPI *pImageGetCertificateData)(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); - static BOOL (WINAPI *pImageGetCertificateHeader)(HANDLE, DWORD, LPWIN_CERTIFICATE); - static BOOL (WINAPI *pImageRemoveCertificate)(HANDLE, DWORD); -+static PIMAGE_NT_HEADERS (WINAPI *pCheckSumMappedFile)(PVOID, DWORD, PDWORD, PDWORD); -+ -+static BOOL (WINAPI *pGetModuleInformation)(HANDLE, HMODULE, LPMODULEINFO, DWORD cb); - - static const char test_cert_data[] = - {0x30,0x82,0x02,0xE1,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02 -@@ -90,6 +94,27 @@ static const char test_cert_data[] = - - static const char test_cert_data_2[] = {0xDE,0xAD,0xBE,0xEF,0x01,0x02,0x03}; - -+static char test_pe_executable[] = -+{ -+ 0x4d,0x5a,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0x00, -+ 0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x80,0x00,0x00,0x00,0x0e,0x1f,0xba,0x0e,0x00,0xb4,0x09,0xcd,0x21,0xb8,0x01, -+ 0x4c,0xcd,0x21,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d, -+ 0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6e,0x20, -+ 0x69,0x6e,0x20,0x44,0x4f,0x53,0x20,0x6d,0x6f,0x64,0x65,0x2e,0x0d,0x0d,0x0a, -+ 0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x45,0x00,0x00,0x4c,0x01,0x0f, -+ 0x00,0xfd,0x38,0xc9,0x55,0x00,0x24,0x01,0x00,0xea,0x04,0x00,0x00,0xe0,0x00, -+ 0x07,0x01,0x0b,0x01,0x02,0x18,0x00,0x1a,0x00,0x00,0x00,0x2c,0x00,0x00,0x00, -+ 0x06,0x00,0x00,0xe0,0x14,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x30,0x00,0x00, -+ 0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00, -+ 0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, -+ 0x01,0x00,0x00,0x04,0x00,0x00,/* checksum */ 0x11,0xEF,0xCD,0xAB,0x03,0x00, -+ 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00, -+ 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00 -+}; -+ - static BOOL copy_dll_file(void) - { - char sys_dir[MAX_PATH+15]; -@@ -239,6 +264,223 @@ static void test_remove_certificate(int index) - CloseHandle(hFile); - } - -+static DWORD _get_checksum_offset(PVOID base, PIMAGE_NT_HEADERS *nt_header, DWORD *checksum) -+{ -+ IMAGE_DOS_HEADER *dos = (IMAGE_DOS_HEADER *)base; -+ PIMAGE_NT_HEADERS32 Header32; -+ PIMAGE_NT_HEADERS64 Header64; -+ -+ if (dos->e_magic != IMAGE_DOS_SIGNATURE) -+ return 0; -+ -+ Header32 = (IMAGE_NT_HEADERS32 *)((char *)dos + dos->e_lfanew); -+ if (Header32->Signature != IMAGE_NT_SIGNATURE) -+ return 0; -+ -+ *nt_header = (PIMAGE_NT_HEADERS)Header32; -+ -+ if (Header32->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC) -+ { -+ *checksum = Header32->OptionalHeader.CheckSum; -+ return (char *)&Header32->OptionalHeader.CheckSum - (char *)base; -+ } -+ else if (Header32->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC) -+ { -+ Header64 = (IMAGE_NT_HEADERS64 *)Header32; -+ *checksum = Header64->OptionalHeader.CheckSum; -+ return (char *)&Header64->OptionalHeader.CheckSum - (char *)base; -+ } -+ -+ return 0; -+} -+ -+static void test_pe_checksum(void) -+{ -+ DWORD checksum_orig, checksum_new, checksum_off, checksum_correct; -+ PIMAGE_NT_HEADERS nt_header; -+ PIMAGE_NT_HEADERS ret; -+ HMODULE quartz_data; -+ char* quartz_base; -+ MODULEINFO modinfo; -+ char buffer[20]; -+ BOOL ret_bool; -+ -+ if (!pCheckSumMappedFile) -+ { -+ win_skip("CheckSumMappedFile not supported, skipping tests\n"); -+ return; -+ } -+ -+ SetLastError(0xdeadbeef); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(NULL, 0, &checksum_orig, &checksum_new); -+ ok(!ret, "Expected CheckSumMappedFile to fail, got %p\n", ret); -+ ok(GetLastError() == 0xdeadbeef, "Expected err=0xdeadbeef, got %x\n", GetLastError()); -+ ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -+ ok(checksum_new == 0, "Expected 0, got %x\n", checksum_new); -+ -+ SetLastError(0xdeadbeef); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile((void *)0xdeadbeef, 0, &checksum_orig, &checksum_new); -+ ok(!ret, "Expected CheckSumMappedFile to fail, got %p\n", ret); -+ ok(GetLastError() == 0xdeadbeef, "Expected err=0xdeadbeef, got %x\n", GetLastError()); -+ ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -+ ok(checksum_new == 0, "Expected 0, got %x\n", checksum_new); -+ -+ if (0) -+ { -+ /* crashes on Windows */ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ pCheckSumMappedFile(0, 0x1000, &checksum_orig, &checksum_new); -+ pCheckSumMappedFile((void *)0xdeadbeef, 0x1000, NULL, NULL); -+ } -+ -+ /* basic checksum tests */ -+ memset(buffer, 0x11, sizeof(buffer)); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(buffer, sizeof(buffer), &checksum_orig, &checksum_new); -+ ok(ret == NULL, "Expected NULL, got %p\n", ret); -+ ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -+ ok(checksum_new == 0xaabe, "Expected 0xaabe, got %x\n", checksum_new); -+ -+ memset(buffer, 0x22, sizeof(buffer)); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(buffer, sizeof(buffer), &checksum_orig, &checksum_new); -+ ok(ret == NULL, "Expected NULL, got %p\n", ret); -+ ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -+ ok(checksum_new == 0x5569, "Expected 0x5569, got %x\n", checksum_new); -+ -+ memset(buffer, 0x22, sizeof(buffer)); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(buffer, 10, &checksum_orig, &checksum_new); -+ ok(ret == NULL, "Expected NULL, got %p\n", ret); -+ ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -+ ok(checksum_new == 0xaab4, "Expected 0xaab4, got %x\n", checksum_new); -+ -+ memset(buffer, 0x22, sizeof(buffer)); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(buffer, 11, &checksum_orig, &checksum_new); -+ ok(ret == NULL, "Expected NULL, got %p\n", ret); -+ ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -+ todo_wine ok(checksum_new == 0xaad7, "Expected 0xaad7, got %x\n", checksum_new); -+ -+ /* test checksum of PE module */ -+ memset(buffer, 0x22, sizeof(buffer)); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(test_pe_executable, sizeof(test_pe_executable), -+ &checksum_orig, &checksum_new); -+ ok((char *)ret == test_pe_executable + 0x80, "Expected %p, got %p\n", test_pe_executable + 0x80, ret); -+ ok(checksum_orig == 0xabcdef11, "Expected 0xabcdef11, got %x\n", checksum_orig); -+ ok(checksum_new == 0xaa4, "Expected 0xaa4, got %x\n", checksum_new); -+ -+ if (!pGetModuleInformation) -+ { -+ win_skip("GetModuleInformation not supported, skipping tests\n"); -+ return; -+ } -+ -+ ret_bool = pGetModuleInformation(GetCurrentProcess(), GetModuleHandleA(NULL), -+ &modinfo, sizeof(modinfo)); -+ ok(ret_bool, "GetModuleInformation failed, error: %x\n", GetLastError()); -+ -+ if (0) -+ { -+ /* crashes on Windows */ -+ pCheckSumMappedFile(modinfo.lpBaseOfDll, modinfo.SizeOfImage, NULL, NULL); -+ } -+ -+ SetLastError(0xdeadbeef); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, modinfo.SizeOfImage, &checksum_orig, &checksum_new); -+ ok(ret != NULL, "Expected CheckSumMappedFile to succeed\n"); -+ ok(GetLastError() == 0xdeadbeef, "Expected err=0xdeadbeef, got %x\n", GetLastError()); -+ ok(checksum_orig != 0xdeadbeef, "Expected orig checksum != 0xdeadbeef\n"); -+ ok(checksum_new != 0xdeadbeef, "Expected new checksum != 0xdeadbeef\n"); -+ -+ SetLastError(0xdeadbeef); -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile((char *)modinfo.lpBaseOfDll + 100, modinfo.SizeOfImage - 100, -+ &checksum_orig, &checksum_new); -+ ok(!ret, "Expected CheckSumMappedFile to fail, got %p\n", ret); -+ ok(GetLastError() == 0xdeadbeef, "Expected err=0xdeadbeef, got %x\n", GetLastError()); -+ ok(checksum_orig == 0, "Expected 0xdeadbeef, got %x\n", checksum_orig); -+ ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_off = _get_checksum_offset(modinfo.lpBaseOfDll, &nt_header, &checksum_correct); -+ ok(checksum_off != 0, "Failed to get checksum offset\n"); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, checksum_off, &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, (char *)nt_header - (char *)modinfo.lpBaseOfDll, -+ &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, sizeof(IMAGE_DOS_HEADER), -+ &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, 0, &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ todo_wine ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile((char *)modinfo.lpBaseOfDll + 1, 0, -+ &checksum_orig, &checksum_new); -+ ok(ret == NULL, "Expected NULL, got %p\n", ret); -+ ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -+ ok(checksum_new == 0, "Expected 0, got %x\n", checksum_new); -+ -+ quartz_data = LoadLibraryExA("quartz.dll", NULL, LOAD_LIBRARY_AS_DATAFILE); -+ if (!quartz_data) -+ { -+ skip("Failed to load quartz as datafile, skipping tests\n"); -+ return; -+ } -+ -+ quartz_base = (char *)((DWORD_PTR)quartz_data & ~1); -+ checksum_off = _get_checksum_offset(quartz_base, &nt_header, &checksum_correct); -+ ok(checksum_off != 0, "Failed to get checksum offset\n"); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(quartz_base, checksum_off, &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(quartz_base, (char *)nt_header - quartz_base, -+ &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(quartz_base, sizeof(IMAGE_DOS_HEADER), &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ checksum_orig = checksum_new = 0xdeadbeef; -+ ret = pCheckSumMappedFile(quartz_base, 0, &checksum_orig, &checksum_new); -+ ok(ret == nt_header, "Expected %p, got %p\n", nt_header, ret); -+ ok(checksum_orig == checksum_correct, "Expected %x, got %x\n", checksum_correct, checksum_orig); -+ todo_wine ok(checksum_new != 0 && checksum_new != 0xdeadbeef, "Got unexpected value %x\n", checksum_new); -+ -+ FreeLibrary(quartz_data); -+} -+ - START_TEST(integrity) - { - DWORD file_size, file_size_orig, first, second; -@@ -273,6 +515,11 @@ START_TEST(integrity) - pImageGetCertificateData = (void *) GetProcAddress(hImageHlp, "ImageGetCertificateData"); - pImageGetCertificateHeader = (void *) GetProcAddress(hImageHlp, "ImageGetCertificateHeader"); - pImageRemoveCertificate = (void *) GetProcAddress(hImageHlp, "ImageRemoveCertificate"); -+ pCheckSumMappedFile = (void *) GetProcAddress(hImageHlp, "CheckSumMappedFile"); -+ -+ hPsapi = LoadLibraryA("psapi.dll"); -+ if (hPsapi) -+ pGetModuleInformation = (void *) GetProcAddress(hPsapi, "GetModuleInformation"); - - first = test_add_certificate(test_cert_data, sizeof(test_cert_data)); - test_get_certificate(test_cert_data, first); -@@ -299,6 +546,9 @@ START_TEST(integrity) - file_size = get_file_size(); - ok(file_size == file_size_orig, "File size different after add and remove (old: %d; new: %d)\n", file_size_orig, file_size); - -+ test_pe_checksum(); -+ -+ if (hPsapi) FreeLibrary(hPsapi); - FreeLibrary(hImageHlp); - DeleteFileA(test_dll_path); - } --- -2.5.0 - diff --git a/patches/imagehlp-Cleanup/0002-imagehlp-Fix-checksum-calculation-for-odd-sizes.patch b/patches/imagehlp-Cleanup/0002-imagehlp-Fix-checksum-calculation-for-odd-sizes.patch deleted file mode 100644 index a69c91c8..00000000 --- a/patches/imagehlp-Cleanup/0002-imagehlp-Fix-checksum-calculation-for-odd-sizes.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 2255200233c348e56b17330c4836c34e3e6b7854 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Tue, 11 Aug 2015 02:46:06 +0200 -Subject: imagehlp: Fix checksum calculation for odd sizes. - ---- - dlls/imagehlp/modify.c | 39 +++++++++++++++++++-------------------- - dlls/imagehlp/tests/integrity.c | 2 +- - 2 files changed, 20 insertions(+), 21 deletions(-) - -diff --git a/dlls/imagehlp/modify.c b/dlls/imagehlp/modify.c -index aa29ca7..2a0214b 100644 ---- a/dlls/imagehlp/modify.c -+++ b/dlls/imagehlp/modify.c -@@ -60,26 +60,25 @@ BOOL WINAPI BindImageEx( - /*********************************************************************** - * CheckSum (internal) - */ --static WORD CalcCheckSum( -- DWORD StartValue, LPVOID BaseAddress, DWORD WordCount) -+static WORD CalcCheckSum(DWORD StartValue, LPVOID BaseAddress, DWORD ByteCount) - { -- LPWORD Ptr; -- DWORD Sum; -- DWORD i; -- -- Sum = StartValue; -- Ptr = (LPWORD)BaseAddress; -- for (i = 0; i < WordCount; i++) -- { -- Sum += *Ptr; -- if (HIWORD(Sum) != 0) -- { -- Sum = LOWORD(Sum) + HIWORD(Sum); -- } -- Ptr++; -- } -- -- return (WORD)(LOWORD(Sum) + HIWORD(Sum)); -+ LPWORD Ptr; -+ DWORD Sum, i; -+ -+ Sum = StartValue; -+ Ptr = (LPWORD)BaseAddress; -+ for (i = ByteCount; i > 1; i -= 2) -+ { -+ Sum += *Ptr; -+ if (HIWORD(Sum) != 0) -+ Sum = LOWORD(Sum) + HIWORD(Sum); -+ Ptr++; -+ } -+ -+ if (i == 1) -+ Sum += *(BYTE *)Ptr; -+ -+ return (WORD)(LOWORD(Sum) + HIWORD(Sum)); - } - - -@@ -102,7 +101,7 @@ PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile( - BaseAddress, FileLength, HeaderSum, CheckSum - ); - -- CalcSum = (DWORD)CalcCheckSum(0, BaseAddress, (FileLength + 1) / sizeof(WORD)); -+ CalcSum = (DWORD)CalcCheckSum(0, BaseAddress, FileLength); - - __TRY - { -diff --git a/dlls/imagehlp/tests/integrity.c b/dlls/imagehlp/tests/integrity.c -index 7dd8ff4..913c396 100644 ---- a/dlls/imagehlp/tests/integrity.c -+++ b/dlls/imagehlp/tests/integrity.c -@@ -362,7 +362,7 @@ static void test_pe_checksum(void) - ret = pCheckSumMappedFile(buffer, 11, &checksum_orig, &checksum_new); - ok(ret == NULL, "Expected NULL, got %p\n", ret); - ok(checksum_orig == 0, "Expected 0, got %x\n", checksum_orig); -- todo_wine ok(checksum_new == 0xaad7, "Expected 0xaad7, got %x\n", checksum_new); -+ ok(checksum_new == 0xaad7, "Expected 0xaad7, got %x\n", checksum_new); - - /* test checksum of PE module */ - memset(buffer, 0x22, sizeof(buffer)); --- -2.5.0 - diff --git a/patches/imagehlp-Cleanup/definition b/patches/imagehlp-Cleanup/definition deleted file mode 100644 index 1332b163..00000000 --- a/patches/imagehlp-Cleanup/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: Catch invalid memory accesses in imagehlp.CheckSumMappedFile -Fixes: [23455] Properly implement imagehlp.ImageLoad and ImageUnload diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index d6aab573..05726cb7 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "829170f3d6b875f7a6f065072cc3334a20ff805e" + echo "0e8401076679f337655e72fa1726f05fcd89e069" } # Show version information @@ -153,7 +153,6 @@ patch_enable_all () enable_hid_HidD_FlushQueue="$1" enable_httpapi_HttpCreateServerSession="$1" enable_imagehlp_BindImageEx="$1" - enable_imagehlp_Cleanup="$1" enable_imm32_message_on_focus="$1" enable_include_winsock="$1" enable_inseng_Implementation="$1" @@ -604,9 +603,6 @@ patch_enable () imagehlp-BindImageEx) enable_imagehlp_BindImageEx="$2" ;; - imagehlp-Cleanup) - enable_imagehlp_Cleanup="$2" - ;; imm32-message_on_focus) enable_imm32_message_on_focus="$2" ;; @@ -2965,14 +2961,12 @@ fi # | * [#33904] Return dummy ID3DXSkinInfo interface when skinning info not present # | # | Modified files: -# | * dlls/d3dx9_36/d3dx9_private.h, dlls/d3dx9_36/mesh.c, dlls/d3dx9_36/skin.c, dlls/d3dx9_36/tests/mesh.c +# | * dlls/d3dx9_36/d3dx9_private.h, dlls/d3dx9_36/mesh.c, dlls/d3dx9_36/skin.c # | if test "$enable_d3dx9_36_Dummy_Skininfo" -eq 1; then patch_apply d3dx9_36-Dummy_Skininfo/0001-d3dx9_36-Return-dummy-skininfo-interface-in-D3DXLoad.patch - patch_apply d3dx9_36-Dummy_Skininfo/0002-d3dx9_36-tests-Add-initial-tests-for-dummy-skininfo-.patch ( printf '%s\n' '+ { "Michael Müller", "d3dx9_36: Return dummy skininfo interface in D3DXLoadSkinMeshFromXof when skin information is unavailable.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "d3dx9_36/tests: Add initial tests for dummy skininfo interface.", 1 },'; ) >> "$patchlist" fi @@ -3607,23 +3601,6 @@ if test "$enable_imagehlp_BindImageEx" -eq 1; then ) >> "$patchlist" fi -# Patchset imagehlp-Cleanup -# | -# | This patchset fixes the following Wine bugs: -# | * [#23455] Properly implement imagehlp.ImageLoad and ImageUnload -# | -# | Modified files: -# | * dlls/imagehlp/modify.c, dlls/imagehlp/tests/integrity.c -# | -if test "$enable_imagehlp_Cleanup" -eq 1; then - patch_apply imagehlp-Cleanup/0001-imagehlp-Catch-invalid-memory-access-in-CheckSumMapp.patch - patch_apply imagehlp-Cleanup/0002-imagehlp-Fix-checksum-calculation-for-odd-sizes.patch - ( - printf '%s\n' '+ { "Michael Müller", "imagehlp: Catch invalid memory access in CheckSumMappedFile and add tests.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "imagehlp: Fix checksum calculation for odd sizes.", 1 },'; - ) >> "$patchlist" -fi - # Patchset imm32-message_on_focus # | # | This patchset fixes the following Wine bugs: @@ -7283,13 +7260,9 @@ fi # | * dlls/wintrust/softpub.c, dlls/wintrust/tests/softpub.c # | if test "$enable_wintrust_WinVerifyTrust" -eq 1; then - patch_apply wintrust-WinVerifyTrust/0001-wintrust-tests-Add-tests-for-WinVerifyTrust.-v2.patch - patch_apply wintrust-WinVerifyTrust/0002-wintrust-tests-Add-some-additional-tests.patch patch_apply wintrust-WinVerifyTrust/0003-wintrust-Verify-image-hash-in-WinVerifyTrust.patch patch_apply wintrust-WinVerifyTrust/0004-wintrust-use-enhanced-crypto-provider-in-VerifyImage.patch ( - printf '%s\n' '+ { "Mark Jansen", "wintrust/tests: Add tests for WinVerifyTrust.", 2 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wintrust/tests: Add some additional tests.", 1 },'; printf '%s\n' '+ { "Mark Jansen", "wintrust: Verify image hash in WinVerifyTrust.", 2 },'; printf '%s\n' '+ { "Marko Friedemann", "wintrust: Use enhanced crypto provider in VerifyImageHash.", 1 },'; ) >> "$patchlist" diff --git a/patches/wintrust-WinVerifyTrust/0001-wintrust-tests-Add-tests-for-WinVerifyTrust.-v2.patch b/patches/wintrust-WinVerifyTrust/0001-wintrust-tests-Add-tests-for-WinVerifyTrust.-v2.patch deleted file mode 100644 index 47f4c8be..00000000 --- a/patches/wintrust-WinVerifyTrust/0001-wintrust-tests-Add-tests-for-WinVerifyTrust.-v2.patch +++ /dev/null @@ -1,389 +0,0 @@ -From f9908b1f5aeb5becfc29dbee476eab52e7b877c2 Mon Sep 17 00:00:00 2001 -From: Mark Jansen -Date: Fri, 4 Mar 2016 20:54:56 +0100 -Subject: wintrust/tests: Add tests for WinVerifyTrust. (v2) - -Includes various improvements by Sebastian Lackner . ---- - dlls/wintrust/tests/softpub.c | 352 ++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 352 insertions(+) - -diff --git a/dlls/wintrust/tests/softpub.c b/dlls/wintrust/tests/softpub.c -index 436de47..2b51c30 100644 ---- a/dlls/wintrust/tests/softpub.c -+++ b/dlls/wintrust/tests/softpub.c -@@ -3,6 +3,7 @@ - * - * Copyright 2007,2010 Juan Lang - * Copyright 2010 Andrey Turkin -+ * Copyright 2016 Mark Jansen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -869,6 +870,356 @@ static void test_wintrust(void) - ok(r == S_OK, "WinVerifyTrust failed: %08x\n", r); - } - -+/* Self-signed .exe, built with tcc, signed with signtool -+ * (and a certificate generated on a self-signed CA). -+ * -+ * small.c: -+ * int _start() -+ * { -+ * return 0; -+ * } -+ * -+ * tcc -nostdlib small.c -+ * signtool sign /v /f codesign.pfx small.exe -+ */ -+static const BYTE SelfSignedFile32[] = -+{ -+ 0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x0E,0x1F,0xBA,0x0E,0x00,0xB4,0x09,0xCD, -+ 0x21,0xB8,0x01,0x4C,0xCD,0x21,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x63,0x61,0x6E,0x6E,0x6F, -+ 0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,0x20,0x44,0x4F,0x53,0x20,0x6D,0x6F,0x64,0x65,0x2E,0x0D,0x0D,0x0A, -+ 0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x45,0x00,0x00,0x4C,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0xE0,0x00,0x0F,0x03,0x0B,0x01,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00, -+ 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x02,0x00,0x00, -+ 0xE7,0x0C,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x68,0x05,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x74,0x65,0x78,0x74,0x00,0x00,0x00, -+ 0x18,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x89,0xE5,0x81,0xEC,0x00,0x00,0x00,0x00,0x90,0xB8,0x00,0x00,0x00,0x00,0xE9, -+ 0x00,0x00,0x00,0x00,0xC9,0xC3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x05,0x00,0x00,0x00,0x02,0x02,0x00, -+ /* Start of the signature overlay */ -+ 0x30,0x82,0x05,0x5A,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02,0xA0,0x82,0x05,0x4B,0x30,0x82,0x05,0x47,0x02, -+ 0x01,0x01,0x31,0x0B,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x30,0x4C,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01, -+ 0x82,0x37,0x02,0x01,0x04,0xA0,0x3E,0x30,0x3C,0x30,0x17,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0F,0x30, -+ 0x09,0x03,0x01,0x00,0xA0,0x04,0xA2,0x02,0x80,0x00,0x30,0x21,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x04, -+ 0x14,0xA0,0x95,0xDE,0xBD,0x1A,0xB7,0x86,0xAF,0x50,0x63,0xD8,0x8F,0x90,0xD5,0x49,0x96,0x4E,0x44,0xF0,0x71,0xA0,0x82,0x03, -+ 0x1D,0x30,0x82,0x03,0x19,0x30,0x82,0x02,0x01,0xA0,0x03,0x02,0x01,0x02,0x02,0x10,0x96,0x53,0x2C,0xC9,0x23,0x56,0x8A,0x87, -+ 0x42,0x30,0x3E,0xD5,0x8D,0x72,0xD5,0x25,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x0B,0x05,0x00,0x30, -+ 0x17,0x31,0x15,0x30,0x13,0x06,0x03,0x55,0x04,0x03,0x13,0x0C,0x54,0x65,0x73,0x74,0x20,0x43,0x41,0x20,0x52,0x6F,0x6F,0x74, -+ 0x30,0x1E,0x17,0x0D,0x31,0x36,0x30,0x33,0x30,0x33,0x32,0x30,0x32,0x37,0x30,0x37,0x5A,0x17,0x0D,0x34,0x39,0x31,0x32,0x33, -+ 0x31,0x32,0x33,0x30,0x30,0x30,0x30,0x5A,0x30,0x17,0x31,0x15,0x30,0x13,0x06,0x03,0x55,0x04,0x03,0x13,0x0C,0x43,0x6F,0x64, -+ 0x65,0x53,0x69,0x67,0x6E,0x54,0x65,0x73,0x74,0x30,0x82,0x01,0x22,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, -+ 0x01,0x01,0x05,0x00,0x03,0x82,0x01,0x0F,0x00,0x30,0x82,0x01,0x0A,0x02,0x82,0x01,0x01,0x00,0xB2,0xC9,0x91,0x98,0x8C,0xDC, -+ 0x80,0xBC,0x16,0xBF,0xC1,0x04,0x77,0x90,0xC0,0xFD,0x8C,0xBA,0x68,0x26,0xAC,0xB7,0x20,0x68,0x41,0xED,0xC3,0x9C,0x47,0x7C, -+ 0x36,0xC2,0x7B,0xE1,0x5E,0xFD,0xA9,0x99,0xF4,0x29,0x36,0x86,0x93,0x40,0x55,0x53,0x65,0x79,0xBC,0x9F,0x8F,0x6E,0x2B,0x05, -+ 0x84,0xE1,0xFD,0xD2,0xEF,0xEA,0x89,0x8C,0xEC,0xF9,0x55,0xF0,0x2C,0xE5,0xA7,0x29,0xF9,0x7E,0x50,0xDC,0x9C,0xA1,0x23,0xA5, -+ 0xD9,0x78,0xA1,0xE7,0x7C,0xD7,0x04,0x4F,0x11,0xAC,0x9F,0x4A,0x47,0xA1,0x1E,0xD5,0x9E,0xE7,0x5B,0xB5,0x8C,0x9C,0x67,0x7A, -+ 0xD0,0xF8,0x54,0xD1,0x64,0x7F,0x39,0x48,0xB6,0xCF,0x2F,0x26,0x7D,0x7B,0x13,0x2B,0xC2,0x8F,0xA6,0x3F,0x42,0x71,0x95,0x3E, -+ 0x59,0x0F,0x12,0xFA,0xC2,0x70,0x89,0xB7,0xB6,0x10,0x49,0xE0,0x7D,0x4D,0xFC,0x80,0x61,0x53,0x50,0x72,0xFD,0x46,0x35,0x51, -+ 0x36,0xE6,0x06,0xA9,0x4C,0x0D,0x82,0x15,0xF6,0x5D,0xDE,0xD4,0xDB,0xE7,0x82,0x10,0x40,0xA1,0x47,0x68,0x88,0x0C,0x0A,0x80, -+ 0xD1,0xE5,0x9A,0x35,0x28,0x82,0x1F,0x0F,0x80,0x5A,0x6E,0x1D,0x22,0x22,0xB3,0xA7,0xA2,0x9E,0x82,0x2D,0xC0,0x7F,0x5A,0xD0, -+ 0xBA,0xB2,0xCA,0x20,0xE2,0x97,0xE9,0x72,0x41,0xB7,0xD6,0x1A,0x93,0x23,0x97,0xF0,0xA9,0x61,0xD2,0x91,0xBD,0xB6,0x6B,0x95, -+ 0x12,0x67,0x16,0xAC,0x0A,0xB7,0x55,0x02,0x0D,0xA5,0xAD,0x17,0x95,0x77,0xF9,0x96,0x03,0x41,0xD3,0xE1,0x61,0x68,0xBB,0x0A, -+ 0xB5,0xC4,0xEE,0x70,0x40,0x08,0x05,0xC4,0xF1,0x5D,0x02,0x03,0x01,0x00,0x01,0xA3,0x61,0x30,0x5F,0x30,0x13,0x06,0x03,0x55, -+ 0x1D,0x25,0x04,0x0C,0x30,0x0A,0x06,0x08,0x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x03,0x30,0x48,0x06,0x03,0x55,0x1D,0x01,0x04, -+ 0x41,0x30,0x3F,0x80,0x10,0x35,0x40,0x67,0x8F,0x7D,0x03,0x1B,0x76,0x52,0x62,0x2D,0xF5,0x21,0xF6,0x7C,0xBC,0xA1,0x19,0x30, -+ 0x17,0x31,0x15,0x30,0x13,0x06,0x03,0x55,0x04,0x03,0x13,0x0C,0x54,0x65,0x73,0x74,0x20,0x43,0x41,0x20,0x52,0x6F,0x6F,0x74, -+ 0x82,0x10,0xA0,0x4B,0xEB,0xAC,0xFA,0x08,0xF2,0x8B,0x47,0xD2,0xB3,0x54,0x60,0x6C,0xE6,0x29,0x30,0x0D,0x06,0x09,0x2A,0x86, -+ 0x48,0x86,0xF7,0x0D,0x01,0x01,0x0B,0x05,0x00,0x03,0x82,0x01,0x01,0x00,0x5F,0x8C,0x7F,0xDA,0x1D,0x21,0x7A,0x15,0xD8,0x20, -+ 0x04,0x53,0x7F,0x44,0x6D,0x7B,0x57,0xBE,0x7F,0x86,0x77,0x58,0xC4,0xD4,0x80,0xC7,0x2E,0x64,0x9B,0x44,0xC5,0x2D,0x6D,0xDB, -+ 0x35,0x5A,0xFE,0xA4,0xD8,0x66,0x9B,0xF7,0x6E,0xFC,0xEF,0x52,0x7B,0xC5,0x16,0xE6,0xA3,0x7D,0x59,0xB7,0x31,0x28,0xEB,0xB5, -+ 0x45,0xC9,0xB1,0xD1,0x08,0x67,0xC6,0x37,0xE7,0xD7,0x2A,0xE6,0x1F,0xD9,0x6A,0xE5,0x04,0xDF,0x6A,0x9D,0x91,0xFA,0x41,0xBD, -+ 0x2A,0x50,0xEA,0x99,0x24,0xA9,0x0F,0x2B,0x50,0x51,0x5F,0xD9,0x0B,0x89,0x1B,0xCB,0xDB,0x88,0xE8,0xEC,0x87,0xB0,0x16,0xCC, -+ 0x43,0xEE,0x5A,0xBD,0x57,0xE2,0x46,0xA7,0x56,0x54,0x23,0x32,0x8A,0xFB,0x25,0x51,0x39,0x38,0xE6,0x87,0xF5,0x73,0x63,0xD0, -+ 0x5B,0xC7,0x3F,0xFD,0x04,0x75,0x74,0x4C,0x3D,0xB5,0x31,0x22,0x7D,0xF1,0x8D,0xB4,0xE0,0xAA,0xE1,0xFF,0x8F,0xDD,0xB8,0x04, -+ 0x6A,0x31,0xEE,0x30,0x2D,0x6E,0x74,0x0F,0x37,0x71,0x77,0x2B,0xB8,0x9E,0x62,0x47,0x00,0x9C,0xA5,0x82,0x2B,0x9F,0x24,0x67, -+ 0x50,0x86,0x8B,0xC9,0x36,0x81,0xEB,0x44,0xC2,0xF1,0x91,0xA6,0x84,0x75,0x15,0x8F,0x22,0xDE,0xAC,0xB5,0x16,0xE3,0x96,0x74, -+ 0x72,0x2F,0x15,0xD5,0xFB,0x01,0x22,0xC4,0x24,0xEE,0x3D,0xDF,0x9E,0xA9,0x0A,0x5B,0x16,0x21,0xE8,0x4A,0x8C,0x7E,0x3A,0x9C, -+ 0x22,0xA0,0x49,0x60,0x97,0x1B,0x3E,0x2D,0x80,0x91,0xDB,0xF7,0x78,0x38,0x76,0x78,0x0C,0xE3,0xD4,0x27,0x77,0x69,0x96,0xE6, -+ 0x41,0xC7,0x2E,0xE9,0x61,0xD6,0x31,0x82,0x01,0xC4,0x30,0x82,0x01,0xC0,0x02,0x01,0x01,0x30,0x2B,0x30,0x17,0x31,0x15,0x30, -+ 0x13,0x06,0x03,0x55,0x04,0x03,0x13,0x0C,0x54,0x65,0x73,0x74,0x20,0x43,0x41,0x20,0x52,0x6F,0x6F,0x74,0x02,0x10,0x96,0x53, -+ 0x2C,0xC9,0x23,0x56,0x8A,0x87,0x42,0x30,0x3E,0xD5,0x8D,0x72,0xD5,0x25,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05, -+ 0x00,0xA0,0x70,0x30,0x10,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0C,0x31,0x02,0x30,0x00,0x30,0x19,0x06, -+ 0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x03,0x31,0x0C,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x04, -+ 0x30,0x1C,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0B,0x31,0x0E,0x30,0x0C,0x06,0x0A,0x2B,0x06,0x01,0x04, -+ 0x01,0x82,0x37,0x02,0x01,0x15,0x30,0x23,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x04,0x31,0x16,0x04,0x14,0x3D, -+ 0x08,0xC8,0xA3,0xEE,0x05,0x1A,0x61,0xD9,0xFE,0x1A,0x63,0xC0,0x8A,0x6E,0x9D,0xF9,0xC3,0x13,0x98,0x30,0x0D,0x06,0x09,0x2A, -+ 0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,0x05,0x00,0x04,0x82,0x01,0x00,0x90,0xF9,0xC0,0x7F,0x1D,0x70,0x8C,0x04,0x22,0x82, -+ 0xB6,0x2D,0x48,0xBF,0x30,0x51,0x29,0xF8,0xE3,0x11,0x39,0xE0,0x64,0x23,0x72,0xE2,0x4C,0x09,0x9F,0x39,0xF2,0x6F,0xDD,0xB9, -+ 0x5A,0x3D,0xEF,0xEB,0xBE,0xEC,0x3B,0xE6,0x58,0x4C,0xC9,0x4F,0xED,0xCB,0x6E,0x9D,0x67,0x8E,0x89,0x92,0x40,0x39,0xA2,0x5F, -+ 0xF9,0xEF,0xD3,0xF5,0x24,0x27,0x8D,0xF7,0x3C,0x92,0x66,0x56,0xC8,0x2B,0xEA,0x04,0xA1,0x0E,0xDA,0x89,0x30,0xA7,0x01,0xD8, -+ 0x0B,0xF8,0xFD,0x99,0xB6,0xC0,0x38,0xB0,0x21,0x50,0x3A,0x86,0x01,0xD0,0xF3,0x86,0x72,0xE3,0x5A,0xBB,0x2A,0x6E,0xBD,0xFB, -+ 0x22,0xF9,0x42,0xD3,0x04,0xFE,0x8D,0xD8,0x79,0xD1,0xEE,0x61,0xC6,0x48,0x04,0x99,0x9A,0xA2,0x73,0xE5,0xFB,0x24,0x10,0xD5, -+ 0x6B,0x71,0x80,0x0E,0x09,0xEA,0x85,0x9A,0xBD,0xBB,0xDE,0x99,0x5D,0xA3,0x18,0x4D,0xED,0x20,0x73,0x3E,0x32,0xEF,0x2C,0xAC, -+ 0x5A,0x83,0x87,0x1F,0x7F,0x19,0x61,0x35,0x53,0xC1,0xAA,0x89,0x97,0xB3,0xDD,0x8D,0xA8,0x67,0x5B,0xC2,0xE2,0x09,0xB7,0xDD, -+ 0x6A,0xCB,0xD5,0xBF,0xD6,0x08,0xE2,0x23,0x1A,0x41,0x9D,0xD5,0x6A,0x6B,0x8D,0x3C,0x29,0x1B,0xF1,0x3F,0x4E,0x4A,0x8F,0x29, -+ 0x33,0xF9,0x1C,0x60,0xA0,0x92,0x7E,0x4F,0x35,0xB8,0xDD,0xEB,0xD1,0x68,0x1A,0x9D,0xA2,0xA6,0x97,0x1F,0x5F,0xC6,0x2C,0xFB, -+ 0xCA,0xDF,0xF7,0x95,0x33,0x95,0xD4,0x79,0x5C,0x73,0x87,0x49,0x1F,0x8C,0x6E,0xCE,0x3E,0x6D,0x3D,0x2B,0x6B,0xD7,0x66,0xE9, -+ 0x88,0x6F,0xF2,0x83,0xB9,0x9B,0x00,0x00 -+}; -+ -+static const BYTE SelfSignedFile64[] = -+{ -+ 0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x0E,0x1F,0xBA,0x0E,0x00,0xB4,0x09,0xCD, -+ 0x21,0xB8,0x01,0x4C,0xCD,0x21,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x63,0x61,0x6E,0x6E,0x6F, -+ 0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,0x20,0x44,0x4F,0x53,0x20,0x6D,0x6F,0x64,0x65,0x2E,0x0D,0x0D,0x0A, -+ 0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x45,0x00,0x00,0x64,0x86,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0xF0,0x00,0x2F,0x02,0x0B,0x02,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00, -+ 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x02,0x00,0x00, -+ 0x02,0xB9,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x20,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x68,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x74,0x65,0x78,0x74,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x10,0x00,0x00, -+ 0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x60, -+ 0x2E,0x70,0x64,0x61,0x74,0x61,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x48,0x89,0xE5,0x48,0x81,0xEC,0x00,0x00,0x00,0x00,0xB8,0x00,0x00,0x00,0x00, -+ 0xE9,0x00,0x00,0x00,0x00,0xC9,0xC3,0x00,0x01,0x04,0x02,0x05,0x04,0x03,0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x10,0x00,0x00,0x17,0x10,0x00,0x00, -+ 0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+ /* Start of the signature overlay */ -+ 0x68,0x05,0x00,0x00,0x00,0x02,0x02,0x00,0x30,0x82,0x05,0x5A,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02,0xA0, -+ 0x82,0x05,0x4B,0x30,0x82,0x05,0x47,0x02,0x01,0x01,0x31,0x0B,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x30, -+ 0x4C,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x04,0xA0,0x3E,0x30,0x3C,0x30,0x17,0x06,0x0A,0x2B,0x06,0x01, -+ 0x04,0x01,0x82,0x37,0x02,0x01,0x0F,0x30,0x09,0x03,0x01,0x00,0xA0,0x04,0xA2,0x02,0x80,0x00,0x30,0x21,0x30,0x09,0x06,0x05, -+ 0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x04,0x14,0xCA,0x7C,0x10,0xFB,0x5A,0x96,0x6D,0x69,0xEF,0x26,0x30,0x1A,0xE9,0xC7,0x22, -+ 0x19,0xEB,0x6E,0x17,0x07,0xA0,0x82,0x03,0x1D,0x30,0x82,0x03,0x19,0x30,0x82,0x02,0x01,0xA0,0x03,0x02,0x01,0x02,0x02,0x10, -+ 0x96,0x53,0x2C,0xC9,0x23,0x56,0x8A,0x87,0x42,0x30,0x3E,0xD5,0x8D,0x72,0xD5,0x25,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86, -+ 0xF7,0x0D,0x01,0x01,0x0B,0x05,0x00,0x30,0x17,0x31,0x15,0x30,0x13,0x06,0x03,0x55,0x04,0x03,0x13,0x0C,0x54,0x65,0x73,0x74, -+ 0x20,0x43,0x41,0x20,0x52,0x6F,0x6F,0x74,0x30,0x1E,0x17,0x0D,0x31,0x36,0x30,0x33,0x30,0x33,0x32,0x30,0x32,0x37,0x30,0x37, -+ 0x5A,0x17,0x0D,0x34,0x39,0x31,0x32,0x33,0x31,0x32,0x33,0x30,0x30,0x30,0x30,0x5A,0x30,0x17,0x31,0x15,0x30,0x13,0x06,0x03, -+ 0x55,0x04,0x03,0x13,0x0C,0x43,0x6F,0x64,0x65,0x53,0x69,0x67,0x6E,0x54,0x65,0x73,0x74,0x30,0x82,0x01,0x22,0x30,0x0D,0x06, -+ 0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,0x05,0x00,0x03,0x82,0x01,0x0F,0x00,0x30,0x82,0x01,0x0A,0x02,0x82,0x01, -+ 0x01,0x00,0xB2,0xC9,0x91,0x98,0x8C,0xDC,0x80,0xBC,0x16,0xBF,0xC1,0x04,0x77,0x90,0xC0,0xFD,0x8C,0xBA,0x68,0x26,0xAC,0xB7, -+ 0x20,0x68,0x41,0xED,0xC3,0x9C,0x47,0x7C,0x36,0xC2,0x7B,0xE1,0x5E,0xFD,0xA9,0x99,0xF4,0x29,0x36,0x86,0x93,0x40,0x55,0x53, -+ 0x65,0x79,0xBC,0x9F,0x8F,0x6E,0x2B,0x05,0x84,0xE1,0xFD,0xD2,0xEF,0xEA,0x89,0x8C,0xEC,0xF9,0x55,0xF0,0x2C,0xE5,0xA7,0x29, -+ 0xF9,0x7E,0x50,0xDC,0x9C,0xA1,0x23,0xA5,0xD9,0x78,0xA1,0xE7,0x7C,0xD7,0x04,0x4F,0x11,0xAC,0x9F,0x4A,0x47,0xA1,0x1E,0xD5, -+ 0x9E,0xE7,0x5B,0xB5,0x8C,0x9C,0x67,0x7A,0xD0,0xF8,0x54,0xD1,0x64,0x7F,0x39,0x48,0xB6,0xCF,0x2F,0x26,0x7D,0x7B,0x13,0x2B, -+ 0xC2,0x8F,0xA6,0x3F,0x42,0x71,0x95,0x3E,0x59,0x0F,0x12,0xFA,0xC2,0x70,0x89,0xB7,0xB6,0x10,0x49,0xE0,0x7D,0x4D,0xFC,0x80, -+ 0x61,0x53,0x50,0x72,0xFD,0x46,0x35,0x51,0x36,0xE6,0x06,0xA9,0x4C,0x0D,0x82,0x15,0xF6,0x5D,0xDE,0xD4,0xDB,0xE7,0x82,0x10, -+ 0x40,0xA1,0x47,0x68,0x88,0x0C,0x0A,0x80,0xD1,0xE5,0x9A,0x35,0x28,0x82,0x1F,0x0F,0x80,0x5A,0x6E,0x1D,0x22,0x22,0xB3,0xA7, -+ 0xA2,0x9E,0x82,0x2D,0xC0,0x7F,0x5A,0xD0,0xBA,0xB2,0xCA,0x20,0xE2,0x97,0xE9,0x72,0x41,0xB7,0xD6,0x1A,0x93,0x23,0x97,0xF0, -+ 0xA9,0x61,0xD2,0x91,0xBD,0xB6,0x6B,0x95,0x12,0x67,0x16,0xAC,0x0A,0xB7,0x55,0x02,0x0D,0xA5,0xAD,0x17,0x95,0x77,0xF9,0x96, -+ 0x03,0x41,0xD3,0xE1,0x61,0x68,0xBB,0x0A,0xB5,0xC4,0xEE,0x70,0x40,0x08,0x05,0xC4,0xF1,0x5D,0x02,0x03,0x01,0x00,0x01,0xA3, -+ 0x61,0x30,0x5F,0x30,0x13,0x06,0x03,0x55,0x1D,0x25,0x04,0x0C,0x30,0x0A,0x06,0x08,0x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x03, -+ 0x30,0x48,0x06,0x03,0x55,0x1D,0x01,0x04,0x41,0x30,0x3F,0x80,0x10,0x35,0x40,0x67,0x8F,0x7D,0x03,0x1B,0x76,0x52,0x62,0x2D, -+ 0xF5,0x21,0xF6,0x7C,0xBC,0xA1,0x19,0x30,0x17,0x31,0x15,0x30,0x13,0x06,0x03,0x55,0x04,0x03,0x13,0x0C,0x54,0x65,0x73,0x74, -+ 0x20,0x43,0x41,0x20,0x52,0x6F,0x6F,0x74,0x82,0x10,0xA0,0x4B,0xEB,0xAC,0xFA,0x08,0xF2,0x8B,0x47,0xD2,0xB3,0x54,0x60,0x6C, -+ 0xE6,0x29,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x0B,0x05,0x00,0x03,0x82,0x01,0x01,0x00,0x5F,0x8C, -+ 0x7F,0xDA,0x1D,0x21,0x7A,0x15,0xD8,0x20,0x04,0x53,0x7F,0x44,0x6D,0x7B,0x57,0xBE,0x7F,0x86,0x77,0x58,0xC4,0xD4,0x80,0xC7, -+ 0x2E,0x64,0x9B,0x44,0xC5,0x2D,0x6D,0xDB,0x35,0x5A,0xFE,0xA4,0xD8,0x66,0x9B,0xF7,0x6E,0xFC,0xEF,0x52,0x7B,0xC5,0x16,0xE6, -+ 0xA3,0x7D,0x59,0xB7,0x31,0x28,0xEB,0xB5,0x45,0xC9,0xB1,0xD1,0x08,0x67,0xC6,0x37,0xE7,0xD7,0x2A,0xE6,0x1F,0xD9,0x6A,0xE5, -+ 0x04,0xDF,0x6A,0x9D,0x91,0xFA,0x41,0xBD,0x2A,0x50,0xEA,0x99,0x24,0xA9,0x0F,0x2B,0x50,0x51,0x5F,0xD9,0x0B,0x89,0x1B,0xCB, -+ 0xDB,0x88,0xE8,0xEC,0x87,0xB0,0x16,0xCC,0x43,0xEE,0x5A,0xBD,0x57,0xE2,0x46,0xA7,0x56,0x54,0x23,0x32,0x8A,0xFB,0x25,0x51, -+ 0x39,0x38,0xE6,0x87,0xF5,0x73,0x63,0xD0,0x5B,0xC7,0x3F,0xFD,0x04,0x75,0x74,0x4C,0x3D,0xB5,0x31,0x22,0x7D,0xF1,0x8D,0xB4, -+ 0xE0,0xAA,0xE1,0xFF,0x8F,0xDD,0xB8,0x04,0x6A,0x31,0xEE,0x30,0x2D,0x6E,0x74,0x0F,0x37,0x71,0x77,0x2B,0xB8,0x9E,0x62,0x47, -+ 0x00,0x9C,0xA5,0x82,0x2B,0x9F,0x24,0x67,0x50,0x86,0x8B,0xC9,0x36,0x81,0xEB,0x44,0xC2,0xF1,0x91,0xA6,0x84,0x75,0x15,0x8F, -+ 0x22,0xDE,0xAC,0xB5,0x16,0xE3,0x96,0x74,0x72,0x2F,0x15,0xD5,0xFB,0x01,0x22,0xC4,0x24,0xEE,0x3D,0xDF,0x9E,0xA9,0x0A,0x5B, -+ 0x16,0x21,0xE8,0x4A,0x8C,0x7E,0x3A,0x9C,0x22,0xA0,0x49,0x60,0x97,0x1B,0x3E,0x2D,0x80,0x91,0xDB,0xF7,0x78,0x38,0x76,0x78, -+ 0x0C,0xE3,0xD4,0x27,0x77,0x69,0x96,0xE6,0x41,0xC7,0x2E,0xE9,0x61,0xD6,0x31,0x82,0x01,0xC4,0x30,0x82,0x01,0xC0,0x02,0x01, -+ 0x01,0x30,0x2B,0x30,0x17,0x31,0x15,0x30,0x13,0x06,0x03,0x55,0x04,0x03,0x13,0x0C,0x54,0x65,0x73,0x74,0x20,0x43,0x41,0x20, -+ 0x52,0x6F,0x6F,0x74,0x02,0x10,0x96,0x53,0x2C,0xC9,0x23,0x56,0x8A,0x87,0x42,0x30,0x3E,0xD5,0x8D,0x72,0xD5,0x25,0x30,0x09, -+ 0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0xA0,0x70,0x30,0x10,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01, -+ 0x0C,0x31,0x02,0x30,0x00,0x30,0x19,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x03,0x31,0x0C,0x06,0x0A,0x2B,0x06, -+ 0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x04,0x30,0x1C,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0B,0x31,0x0E, -+ 0x30,0x0C,0x06,0x0A,0x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x15,0x30,0x23,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D, -+ 0x01,0x09,0x04,0x31,0x16,0x04,0x14,0x0C,0xEC,0x76,0xF2,0x3F,0xE4,0x6F,0xEB,0xFF,0x00,0xDA,0x95,0xE7,0x8B,0x64,0xBC,0x55, -+ 0xBA,0xF0,0xEA,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,0x05,0x00,0x04,0x82,0x01,0x00,0x05,0x22, -+ 0xD1,0xB3,0x85,0x09,0x46,0x99,0x77,0x69,0xC8,0xD2,0x0C,0xFC,0x8D,0xF4,0x01,0xD4,0x5B,0xF0,0xB4,0x13,0x63,0xAF,0x24,0x0E, -+ 0x6C,0x1B,0x14,0xCF,0xA8,0x9A,0xEC,0x7E,0xF2,0x60,0xED,0x6C,0x39,0x4D,0x7A,0x73,0x9C,0x9F,0x24,0x46,0xE2,0xEA,0xFA,0x70, -+ 0xB4,0xAC,0xFC,0x38,0x90,0xF2,0x4F,0x70,0xCC,0x00,0xD1,0x2B,0xB6,0xFB,0xCD,0x7F,0xFC,0xCB,0x35,0xA9,0xA6,0x76,0x37,0xD6, -+ 0x08,0x82,0x99,0x4C,0x47,0xD7,0x4E,0xB5,0xDE,0xCA,0x4E,0xED,0x71,0x48,0xD4,0x84,0xE1,0x30,0x10,0x33,0x7F,0x84,0xEE,0x2F, -+ 0x44,0x99,0xE4,0x26,0x27,0xB5,0xB8,0xC1,0xA1,0x40,0x6B,0x87,0x04,0x95,0xC3,0xF0,0xFF,0x25,0x97,0xFD,0xDB,0x9C,0x67,0x80, -+ 0x39,0x97,0x72,0x75,0x07,0x92,0xA5,0x08,0x19,0x5B,0xD3,0xC9,0x5E,0xC4,0x7B,0xA9,0x04,0x02,0x63,0xCC,0xC5,0x92,0xF6,0xE9, -+ 0xD6,0xB0,0xA8,0xF9,0xD0,0x9F,0x3F,0xBC,0x86,0x77,0x1E,0x12,0x9A,0x9A,0x9B,0x05,0x77,0x39,0x42,0x01,0xB7,0x23,0xF0,0x78, -+ 0x4F,0x52,0x6D,0x1B,0x9F,0xBA,0x29,0xEC,0x90,0xA9,0x1E,0x1E,0x5C,0xA9,0x28,0xA0,0x0B,0x09,0xDC,0x99,0x82,0xE3,0x34,0xBB, -+ 0x5C,0x66,0x8E,0x54,0x95,0x4B,0x65,0x95,0xCD,0x87,0x72,0x74,0xCD,0x3B,0x5C,0x72,0xBB,0x61,0x6A,0x98,0x44,0x9C,0xB0,0x2A, -+ 0xE7,0xB0,0xA6,0x2B,0xDA,0x47,0x5C,0x75,0x36,0xB5,0x90,0x8E,0x82,0x47,0xCD,0x3F,0x4B,0xD0,0xFB,0x8E,0x17,0x6B,0x40,0x57, -+ 0x9C,0x68,0x1A,0x5D,0x92,0xCD,0xD0,0x5F,0x02,0xA1,0x2C,0xD9,0x56,0x20,0x00,0x00 -+}; -+ -+static void call_winverify(WCHAR *pathW, LONG *status, BOOL hash_only) -+{ -+ static GUID WVTPolicyGUID = WINTRUST_ACTION_GENERIC_VERIFY_V2; -+ WINTRUST_FILE_INFO file_info = { sizeof(file_info), 0 }; -+ WINTRUST_DATA data = { sizeof(data), 0 }; -+ LONG ret; -+ -+ file_info.pcwszFilePath = pathW; -+ -+ data.dwUIChoice = WTD_UI_NONE; -+ data.fdwRevocationChecks = WTD_REVOKE_NONE; -+ data.dwUnionChoice = WTD_CHOICE_FILE; -+ data.pFile = &file_info; -+ data.dwStateAction = WTD_STATEACTION_VERIFY; -+ data.dwProvFlags = hash_only ? WTD_HASH_ONLY_FLAG : 0; -+ *status = WinVerifyTrust(NULL, &WVTPolicyGUID, &data); -+ -+ data.dwStateAction = WTD_STATEACTION_CLOSE; -+ ret = WinVerifyTrust(NULL, &WVTPolicyGUID, &data); -+ ok(ret == S_OK, "WinVerifyTrust failed: %08x\n", ret); -+} -+ -+static void test_wintrust_digest(void) -+{ -+ static const BYTE Dummy[] = { 0x11,0x22,0x33,0x44 }; -+ static const struct -+ { -+ struct { const BYTE *data; DWORD length; } blocks[5]; -+ struct { LONG status; BOOL todo; } t1; -+ struct { LONG status; BOOL todo; } t2; -+ } -+ tests[] = -+ { -+ /* 32-bit tests */ -+ { -+ {{ SelfSignedFile32, sizeof(SelfSignedFile32) }}, -+ { CERT_E_CHAINING, TRUE }, { S_OK, FALSE } -+ }, -+ { -+ {{ SelfSignedFile32, 19 }, -+ { Dummy, sizeof(Dummy) }, -+ { SelfSignedFile32 + 19 + sizeof(Dummy), sizeof(SelfSignedFile32) - 19 - sizeof(Dummy) }}, -+ { TRUST_E_BAD_DIGEST, TRUE }, { TRUST_E_NOSIGNATURE, TRUE } -+ }, -+ { -+ {{ SelfSignedFile32, sizeof(IMAGE_DOS_HEADER) }}, -+ { TRUST_E_SUBJECT_FORM_UNKNOWN, TRUE }, { TRUST_E_NOSIGNATURE, FALSE } -+ }, -+ { -+ {{ SelfSignedFile32, sizeof(IMAGE_DOS_HEADER) + sizeof(IMAGE_NT_HEADERS32) * 2 }}, -+ { TRUST_E_NOSIGNATURE, FALSE }, { TRUST_E_NOSIGNATURE, FALSE } -+ }, -+ -+ /* 64-bit tests */ -+ { -+ {{ SelfSignedFile64, sizeof(SelfSignedFile64) }}, -+ { CERT_E_CHAINING, TRUE }, { S_OK, FALSE } -+ }, -+ { -+ {{ SelfSignedFile64, 19 }, -+ { Dummy, sizeof(Dummy) }, -+ { SelfSignedFile64 + 19 + sizeof(Dummy), sizeof(SelfSignedFile64) - 19 - sizeof(Dummy) }}, -+ { TRUST_E_BAD_DIGEST, TRUE }, { TRUST_E_NOSIGNATURE, TRUE } -+ }, -+ { -+ {{ SelfSignedFile64, sizeof(IMAGE_DOS_HEADER) }}, -+ { TRUST_E_SUBJECT_FORM_UNKNOWN, TRUE }, { TRUST_E_NOSIGNATURE, FALSE } -+ }, -+ { -+ {{ SelfSignedFile64, sizeof(IMAGE_DOS_HEADER) + sizeof(IMAGE_NT_HEADERS64) * 2 }}, -+ { TRUST_E_NOSIGNATURE, FALSE }, { TRUST_E_NOSIGNATURE, FALSE } -+ }, -+ }; -+ WCHAR pathW[MAX_PATH]; -+ DWORD written; -+ HANDLE file; -+ LONG status; -+ BOOL ret; -+ int i, j; -+ -+ for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++) -+ { -+ file = create_temp_file(pathW); -+ ok(file != INVALID_HANDLE_VALUE, "failed to create temporary file\n"); -+ -+ for (j = 0; tests[i].blocks[j].data; j++) -+ { -+ ret = WriteFile(file, tests[i].blocks[j].data, tests[i].blocks[j].length, &written, NULL); -+ ok(ret && written == tests[i].blocks[j].length, "WriteFile failed with %u\n", GetLastError()); -+ } -+ -+ CloseHandle(file); -+ -+ call_winverify(pathW, &status, FALSE); -+ todo_wine_if(tests[i].t1.todo) -+ ok(status == tests[i].t1.status, "test %d/1: expected %08x, got %08x\n", i, tests[i].t1.status, status); -+ -+ call_winverify(pathW, &status, TRUE); -+ todo_wine_if(tests[i].t2.todo) -+ ok(status == tests[i].t2.status, "test %d/2: expected %08x, got %08x\n", i, tests[i].t2.status, status); -+ -+ DeleteFileW(pathW); -+ } -+} -+ - static void test_get_known_usages(void) - { - BOOL ret; -@@ -939,5 +1290,6 @@ START_TEST(softpub) - test_provider_funcs(); - test_sip_create_indirect_data(); - test_wintrust(); -+ test_wintrust_digest(); - test_get_known_usages(); - } --- -2.7.1 - diff --git a/patches/wintrust-WinVerifyTrust/0002-wintrust-tests-Add-some-additional-tests.patch b/patches/wintrust-WinVerifyTrust/0002-wintrust-tests-Add-some-additional-tests.patch deleted file mode 100644 index a2097606..00000000 --- a/patches/wintrust-WinVerifyTrust/0002-wintrust-tests-Add-some-additional-tests.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0563e84a0e506bcbb6cf989d57bf74264cfb5ed7 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 2 Apr 2016 02:50:59 +0200 -Subject: wintrust/tests: Add some additional tests. - ---- - dlls/wintrust/tests/softpub.c | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/dlls/wintrust/tests/softpub.c b/dlls/wintrust/tests/softpub.c -index 2b51c30..a2fa764 100644 ---- a/dlls/wintrust/tests/softpub.c -+++ b/dlls/wintrust/tests/softpub.c -@@ -1154,6 +1154,16 @@ static void test_wintrust_digest(void) - { CERT_E_CHAINING, TRUE }, { S_OK, FALSE } - }, - { -+ {{ SelfSignedFile32, sizeof(SelfSignedFile32) }, -+ { Dummy, sizeof(Dummy) }}, -+ { TRUST_E_NOSIGNATURE, TRUE }, { TRUST_E_NOSIGNATURE, TRUE } -+ }, -+ { -+ {{ Dummy, sizeof(Dummy) }, -+ { SelfSignedFile32 + sizeof(Dummy), sizeof(SelfSignedFile32) - sizeof(Dummy) }}, -+ { TRUST_E_SUBJECT_FORM_UNKNOWN, FALSE }, { TRUST_E_NOSIGNATURE, TRUE } -+ }, -+ { - {{ SelfSignedFile32, 19 }, - { Dummy, sizeof(Dummy) }, - { SelfSignedFile32 + 19 + sizeof(Dummy), sizeof(SelfSignedFile32) - 19 - sizeof(Dummy) }}, -@@ -1174,6 +1184,16 @@ static void test_wintrust_digest(void) - { CERT_E_CHAINING, TRUE }, { S_OK, FALSE } - }, - { -+ {{ SelfSignedFile64, sizeof(SelfSignedFile64) }, -+ { Dummy, sizeof(Dummy) }}, -+ { TRUST_E_NOSIGNATURE, TRUE }, { TRUST_E_NOSIGNATURE, TRUE } -+ }, -+ { -+ {{ Dummy, sizeof(Dummy) }, -+ { SelfSignedFile64 + sizeof(Dummy), sizeof(SelfSignedFile64) - sizeof(Dummy) }}, -+ { TRUST_E_SUBJECT_FORM_UNKNOWN, FALSE }, { TRUST_E_NOSIGNATURE, TRUE } -+ }, -+ { - {{ SelfSignedFile64, 19 }, - { Dummy, sizeof(Dummy) }, - { SelfSignedFile64 + 19 + sizeof(Dummy), sizeof(SelfSignedFile64) - 19 - sizeof(Dummy) }}, --- -2.7.1 -