285{
290
291 static const GUID unknown = { 0xC689AAB8, 0x8E78, 0x11D0, { 0x8C,0x47,0x00,0xC0,0x4F,0xC2,0x95,0xEE }};
292 static const GUID cabGUID = { 0xc689aaba, 0x8e78, 0x11d0, {0x8c,0x47,0x00,0xc0,0x4f,0xc2,0x95,0xee }};
293 static const GUID catGUID = { 0xDE351A43, 0x8E59, 0x11D0, { 0x8C,0x47,0x00,0xC0,0x4F,0xC2,0x95,0xEE }};
295 static const BYTE cabHdr[] = {
'M',
'S',
'C',
'F' };
299
301
302 if (!pgSubject || (!
FileName && !hFileIn))
303 {
306 }
307
308
310
311 if (hFileIn)
312
314 else
315 {
317
319 }
320
326
328 {
331 }
332
334
335 if (!
memcmp(
hdr, &dosHdr,
sizeof(dosHdr)))
336 {
341 }
342
343 if (!
memcmp(
hdr, cabHdr,
sizeof(cabHdr)))
344 {
349 }
350
352 {
354
355 TRACE(
"fileLen = %ld\n", fileLen);
356
357 if (
hdr[1] < 0x80 && fileLen == 2 +
hdr[1])
358 {
363 }
364 else if (
hdr[1] == 0x80)
365 {
366
367
368
373 }
374 else
375 {
377
378 if (lenBytes == 1 && fileLen == 2 + lenBytes +
hdr[2])
379 {
384 }
385 else if (lenBytes == 2 && fileLen == 2 + lenBytes +
387 {
392 }
393 else if (fileLen > 0xffff)
394 {
395
396
397
402 }
403 }
404 }
405
406
409 {
412
413 do {
418 {
420
423 {
426 &lib);
427
428 if (isMy)
429 {
430 bRet = isMy(
hFile, pgSubject);
432 }
434 }
435 }
438 }
439
440
441 if (!bRet)
442 {
445 {
448
449 do {
454 {
456
459 {
463
464 if (isMy2)
465 {
468 }
470 }
471 }
474 }
475 }
476
477 if (!bRet)
479
481
482
483
484 if (!hFileIn)
486 else
488
489 return bRet;
490}
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
static void * CRYPT_LoadSIPFuncFromKey(HKEY key, HMODULE *pLib)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
static void cleanup(void)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL WINAPI SetFilePointerEx(HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
static const GUID catGUID
static const GUID cabGUID
GLuint GLuint GLsizei count
BOOL(WINAPI * pfnIsFileSupportedName)(WCHAR *, GUID *)
BOOL(WINAPI * pfnIsFileSupported)(HANDLE, GUID *)
#define SIP_MAX_MAGIC_NUMBER
#define IMAGE_DOS_SIGNATURE
#define TRUST_E_SUBJECT_FORM_UNKNOWN
#define HKEY_LOCAL_MACHINE