Получение TRUST_E_NO_SIGNER_CERT от WinVerifyTrust - PullRequest
0 голосов
/ 30 октября 2019

Я получаю 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...