Пример проверки подписанного сообщения с помощью низкоуровневых функций КриптоПро ЭЦП 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; } // Конец проверки сообщения