设为首页 加入收藏

TOP

WinVerifyTrust signature verification sample(二)
2015-01-25 00:08:35 来源: 作者: 【 】 浏览:765
Tags:WinVerifyTrust signature verification sample
tf(L"Verifying primary signature... ");?
? ? Error = WinVerifyTrust(NULL, &GenericActionId, &WintrustData);?
? ? WintrustCalled = true;?
? ? if (Error != ERROR_SUCCESS) ?
? ? {?
? ? ? ? PrintError(Error); ? ? ? ??
? ? ? ? goto Cleanup;?
? ? }?
?
? ? wprintf(L"Success!\n");?
?
? ? wprintf(L"Found %d secondary signatures\n", WintrustData.pSignatureSettings->cSecondarySigs);?
?
? ? // Now attempt to verify all secondary signatures that were found?
? ? for(DWORD x = 1; x <= WintrustData.pSignatureSettings->cSecondarySigs; x++)?
? ? {?
? ? ? ? wprintf(L"Verify secondary signature at index %d... ", x);?
?
? ? ? ? // Need to clear the previous state data from the last call to WinVerifyTrust?
? ? ? ? WintrustData.dwStateAction = WTD_STATEACTION_CLOSE;?
? ? ? ? Error = WinVerifyTrust(NULL, &GenericActionId, &WintrustData);?
? ? ? ? if (Error != ERROR_SUCCESS) ?
? ? ? ? {?
? ? ? ? ? ? //No need to call WinVerifyTrust again?
? ? ? ? ? ? WintrustCalled = false;?
? ? ? ? ? ? PrintError(Error); ? ? ? ? ? ??
? ? ? ? ? ? goto Cleanup;?
? ? ? ? }?
?
? ? ? ? WintrustData.hWVTStateData = NULL;?
?
? ? ? ? // Caller must reset dwStateAction as it may have been changed during the last call?
? ? ? ? WintrustData.dwStateAction = WTD_STATEACTION_VERIFY;?
? ? ? ? WintrustData.pSignatureSettings->dwIndex = x;?
? ? ? ? Error = WinVerifyTrust(NULL, &GenericActionId, &WintrustData);?
? ? ? ? if (Error != ERROR_SUCCESS) ?
? ? ? ? {?
? ? ? ? ? ? PrintError(Error); ? ? ? ? ? ??
? ? ? ? ? ? goto Cleanup;?
? ? ? ? }?
?
? ? ? ? wprintf(L"Success!\n");?
? ? }?
?
Cleanup:?
?
? ? //?
? ? // Caller must call WinVerifyTrust with WTD_STATEACTION_CLOSE to free memory?
? ? // allocate by WinVerifyTrust?
? ? //?
? ? if (WintrustCalled != false)?
? ? {?
? ? ? ? WintrustData.dwStateAction = WTD_STATEACTION_CLOSE;?
? ? ? ? WinVerifyTrust(NULL, &GenericActionId, &WintrustData);?
? ? }?
?
? ? return Error; ? ? ?
}?
?
?
//----------------------------------------------------------------------------?
//?
// ?VerifyCatalogSignature?
// ?Looks up a file by hash in the system catalogs. ?
//?
//----------------------------------------------------------------------------?
DWORD VerifyCatalogSignature(_In_ HANDLE FileHandle,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?_In_ bool UseStrongSigPolicy)?
{?
? ? DWORD Error = ERROR_SUCCESS;?
? ? bool Found = false;?
? ? HCATADMIN CatAdminHandle = NULL;?
? ? HCATINFO CatInfoHandle = NULL;?
? ? DWORD HashLength = 0;?
? ? PBYTE HashData = NULL;?
? ? CERT_STRONG_SIGN_PARA SigningPolicy = {};?
?
? ? if (UseStrongSigPolicy != false)?
? ? {?
? ? ? ? SigningPolicy.cbSize = sizeof(CERT_STRONG_SIGN_PARA);?
? ? ? ? SigningPolicy.dwInfoChoice = CERT_STRONG_SIGN_OID_INFO_CHOICE;?
? ? ? ? SigningPolicy.pszOID = szOID_CERT_STRONG_SIGN_OS_CURRENT;?
? ? ? ? if (!CryptCATAdminAcquireContext2(?
? ? ? ? ? ? ? ? ? ? &CatAdminHandle,?
? ? ? ? ? ? ? ? ? ? NULL,?
? ? ? ? ? ? ? ? ? ? BCRYPT_SHA256_ALGORITHM,?
? ? ? ? ? ? ? ? ? ? &SigningPolicy,?
? ? ? ? ? ? ? ? ? ? 0))?
? ? ? ? {?
? ? ? ? ? ? Error = GetLastError();?
? ? ? ? ? ? goto Cleanup;?
? ? ? ? }?
? ? }?
? ? else?
? ? {?
? ? ? ? if (!CryptCATAdminAcquireContext2(?
? ? ? ? ? ? ? ? ? ? &CatAdminHandle,?
? ? ? ? ? ? ? ? ? ? NULL,?
? ? ? ? ? ? ? ? ? ? BCRYPT_SHA256_ALGORITHM,?
? ? ? ? ? ? ? ? ? ? NULL,?
? ? ? ? ? ? ? ? ? ? 0))?
? ? ? ? {?
? ? ? ? ? ? Error = GetLastError();?
? ? ? ? ? ? goto Cleanup;?
? ? ? ? }?
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇图像编程学习笔记3――图像旋转 下一篇图像编程学习笔记4――24位真彩色..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: