mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against 0e8401076679f337655e72fa1726f05fcd89e069
This commit is contained in:
parent
a02caca06d
commit
271835fcdd
@ -1,164 +0,0 @@
|
||||
From 2c16649c78bb8d3751b3fb8ac52c497380d1918b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
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 <limits.h>
|
||||
#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
|
||||
|
@ -1,404 +0,0 @@
|
||||
From a7ed2b13874bd662db8bf30df7b7f394e279e687 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
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
|
||||
|
@ -1,84 +0,0 @@
|
||||
From 2255200233c348e56b17330c4836c34e3e6b7854 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
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
|
||||
|
@ -1,2 +0,0 @@
|
||||
Fixes: Catch invalid memory accesses in imagehlp.CheckSumMappedFile
|
||||
Fixes: [23455] Properly implement imagehlp.ImageLoad and ImageUnload
|
@ -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"
|
||||
|
@ -1,389 +0,0 @@
|
||||
From f9908b1f5aeb5becfc29dbee476eab52e7b877c2 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Jansen <learn0more+wine@gmail.com>
|
||||
Date: Fri, 4 Mar 2016 20:54:56 +0100
|
||||
Subject: wintrust/tests: Add tests for WinVerifyTrust. (v2)
|
||||
|
||||
Includes various improvements by Sebastian Lackner <sebastian@fds-team.de>.
|
||||
---
|
||||
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
|
||||
|
@ -1,50 +0,0 @@
|
||||
From 0563e84a0e506bcbb6cf989d57bf74264cfb5ed7 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user