Пример проверки подписанного сообщения с помощью низкоуровневых функций КриптоПро ЭЦП SDK
C++
HCRYPTMSG hMsg = CryptMsgOpenToDecode(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
0,0,0,0,0);
if(!hMsg)
{
std::cout << "CryptMsgOpenToDecode() failed" << std::endl;
return;
}
if(!CryptMsgUpdate(hMsg,&message[0],(DWORD)message.size(),TRUE))
{
CryptMsgClose(hMsg);
std::cout << "CryptMsgUpdate() failed" << std::endl;
return;
}
PCADES_VERIFICATION_INFO pInfo = 0;
if(!CadesMsgVerifySignature(hMsg,0,0,&pInfo))
{
CadesFreeVerificationInfo(pInfo);
CryptMsgClose(hMsg);
std::cout << "CadesMsgVerifySignature() failed" << std::endl;
return;
}
if(pInfo->dwStatus != CADES_VERIFY_SUCCESS )
std::cout << "Message is not verified successfully." << std::endl;
else
std::cout << "Message verified successfully." << std::endl;
if(!CadesFreeVerificationInfo(pInfo))
{
CryptMsgClose(hMsg);
std::cout << "CadesFreeVerificationInfo() failed" << std::endl;
return;
}
if(!CryptMsgClose(hMsg))
{
std::cout << "CryptMsgGetParam() failed" << std::endl;
return;
}
// Конец проверки сообщения