Развернуть все
Свернуть все

Проверка подписи CAdES-BES (упрощённые функции)

Пример проверки подписи CAdES-BES с помощью упрощённых функций КриптоПро ЭЦП SDK

C++
    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;

    PCRYPT_DATA_BLOB pContent = 0;
    if(!CadesVerifyMessage(&verifyPara,0,
        &message[0],(DWORD)message.size(),&pContent,&pVerifyInfo))
    {
        CadesFreeVerificationInfo(pVerifyInfo);
        std::cout << "CadesVerifyMessage() failed" << std::endl;
        return;
    }

    if(pVerifyInfo->dwStatus != CADES_VERIFY_SUCCESS )
        std::cout << "CAdES-BES message is not verified successfully." << std::endl;
    else
        std::cout << "CAdES-BES message verified successfully." << std::endl;

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

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

    // Конец проверки сообщения