Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BOOL checkfile(PCWSTR lpFileName)
- {
- static GUID gActionID = WINTRUST_ACTION_GENERIC_VERIFY_V2;
- HCATADMIN hCatAdmin;
- BOOL fVerified = FALSE;
- if (CryptCATAdminAcquireContext(&hCatAdmin, 0, 0))
- {
- HANDLE hFile = CreateFileW(lpFileName, FILE_GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
- if (hFile != INVALID_HANDLE_VALUE)
- {
- BYTE bHash[20];
- CATALOG_INFO ci = { sizeof (CATALOG_INFO) };
- WINTRUST_CATALOG_INFO wci = {
- sizeof(WINTRUST_CATALOG_INFO), 0, ci.wszCatalogFile, 0,
- 0, hFile, bHash, sizeof(bHash)
- };
- WINTRUST_DATA wtd = {
- sizeof (WINTRUST_DATA),0,0,
- WTD_UI_NONE,WTD_REVOKE_NONE,
- WTD_CHOICE_CATALOG, (PWINTRUST_FILE_INFO)&wci
- };
- wtd.dwProvFlags=WTD_REVOCATION_CHECK_NONE;
- if (CryptCATAdminCalcHashFromFileHandle(hFile, &wci.cbCalculatedFileHash, bHash, 0))
- {
- HCATINFO CatInfo = 0;
- while (CatInfo = CryptCATAdminEnumCatalogFromHash(hCatAdmin, bHash, wci.cbCalculatedFileHash, 0, &CatInfo))
- {
- if (CryptCATCatalogInfoFromContext(CatInfo, &ci, 0))
- {
- DbgPrint("%S\n", ci.wszCatalogFile);
- if (fVerified = !WinVerifyTrust(0, &gActionID, &wtd)) break;
- }
- }
- if (CatInfo) CryptCATAdminReleaseCatalogContext(hCatAdmin, CatInfo, 0);
- }
- CloseHandle(hFile);
- }
- CryptCATAdminReleaseContext(hCatAdmin, 0);
- }
- return fVerified;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement