Я получаю TRUST_E_NO_SIGNER_CERT от WinVerifyTrustEx . Код ошибки: «0x80096002» и сообщение «Сертификат для подписавшего сообщения является недействительным или не найден».
Я проверил, что сертификат в порядке, и ему доверяют. Экспортируя и открывая сертификат подписи, я вижу, что сертификат в порядке. Может кто-нибудь помочь мне понять, что может заставить WinVerifyTrustEx возвращать TRUST_E_NO_SIGNER_CERT?
WINTRUST_FILE_INFO fileInfo;
ZeroMemory(&fileInfo, sizeof(fileInfo));
fileInfo.cbStruct = sizeof(fileInfo);
fileInfo.pcwszFilePath = filePath;
CERT_STRONG_SIGN_PARA strongSignParam;
ZeroMemory(&strongSignParam, sizeof(strongSignParam));
strongSignParam.cbSize = sizeof(strongSignParam);
strongSignParam.dwInfoChoice = CERT_STRONG_SIGN_OID_INFO_CHOICE;
strongSignParam.pszOID = szOID_CERT_STRONG_SIGN_OS_1;
WINTRUST_SIGNATURE_SETTINGS signatureSettings;
ZeroMemory(&signatureSettings, sizeof(signatureSettings));
signatureSettings.cbStruct = sizeof(signatureSettings);
signatureSettings.pCryptoPolicy = &strongSignParam;
WINTRUST_DATA_WIN8 wintrustData;
ZeroMemory(&wintrustData, sizeof(wintrustData));
wintrustData.cbStruct = sizeof(wintrustData);
wintrustData.pSignatureSettings = &signatureSettings;
wintrustData.dwUIChoice = WTD_UI_NONE;
wintrustData.fdwRevocationChecks = WTD_REVOKE_WHOLECHAIN;
wintrustData.dwUnionChoice = WTD_CHOICE_FILE;
wintrustData.pFile = &fileInfo;
wintrustData.dwStateAction = WTD_STATEACTION_VERIFY;
wintrustData.dwProvFlags = WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT;
GUID guidGenericVerifyV2 = WINTRUST_ACTION_GENERIC_VERIFY_V2;
HRESULT hr = WinVerifyTrustEx(static_cast<HWND>(INVALID_HANDLE_VALUE), &guidGenericVerifyV2, &wintrustData);