Пример проверки подписанного сообщения с помощью упрощённых функций КриптоПро ЭЦП SDK
C++
CRYPT_VERIFY_MESSAGE_PARA cryptVerifyPara = { sizeof(cryptVerifyPara) };
cryptVerifyPara.dwMsgAndCertEncodingType =
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
CADES_VERIFY_MESSAGE_PARA verifyPara = { sizeof(verifyPara) };
verifyPara.pVerifyMessagePara = &cryptVerifyPara;
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 << "Message is not verified successfully." << std::endl;
else
std::cout << "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;
}
// Конец проверки сообщения