Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Depish  
#1 Оставлено : 25 октября 2021 г. 11:36:29(UTC)
Depish

Статус: Активный участник

Группы: Участники
Зарегистрирован: 12.07.2021(UTC)
Сообщений: 39
Российская Федерация

Сказал(а) «Спасибо»: 10 раз
Необходимо проверить присединеные/отсоединеные подписи, в одном документе может содержаться от одной до нескольких подписей, с проверкой одной подписи вопросов нет, но как проверить несколько если она там есть?
Написал вот такое:
В файле есть 2 подписи, но проверяется только одна, до второй не доходит.

Код:

bool VerifyCadesBesSign(const std::string& file) {
    CRYPT_VERIFY_MESSAGE_PARA cryptVerifyPara = { sizeof(cryptVerifyPara) };
    cryptVerifyPara.dwMsgAndCertEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;

    CADES_VERIFICATION_PARA cadesVerifyPara = { sizeof(cadesVerifyPara) };
    cadesVerifyPara.dwCadesType = CADES_BES;

    CADES_VERIFY_MESSAGE_PARA verifyPara = { sizeof(verifyPara) };
    verifyPara.pVerifyMessagePara = &cryptVerifyPara;
    verifyPara.pCadesVerifyPara = &cadesVerifyPara;
    
    PCADES_VERIFICATION_INFO pVerifyInfo = 0;

    std::vector<unsigned char> data;
    ReadFileToVector(file.c_str(), data);

    PCRYPT_DATA_BLOB pContent = 0;
    DWORD signerIndex = 0;


    while (CadesVerifyMessage(&verifyPara, signerIndex, &data[0], (DWORD)data.size(), &pContent, &pVerifyInfo)) {
        if (pVerifyInfo->dwStatus == CADES_VERIFY_SUCCESS) {

            auto *pCert = pVerifyInfo->pSignerCert->pCertInfo;
            cout << std::string((char*)pCert->Issuer.pbData, pCert->Issuer.cbData);
        
        } else {
            std::cout << "CAdES-BES message verified failed." << std::endl;
        }

        if (!CadesFreeVerificationInfo(pVerifyInfo)) {
            CadesFreeBlob(pContent);
            std::cout << "CadesFreeVerificationInfo() failed" << std::endl;
        }
    }

    return true;
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.