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

Проверка XAdES-подписи XML документа

Пример проверки подписанного XML сообщения с помощью функций КриптоПро ЭЦП SDK Полный текст примера см. SDK файл SimplifiedSignVerifyXadesBes.cpp.

C++
    XADES_VERIFICATION_PARA xadesVerifyPara = { sizeof(xadesVerifyPara) };
    xadesVerifyPara.dwSignatureType = XADES_BES; // Указываем тип проверяемой подписи XADES_BES

    XADES_VERIFY_MESSAGE_PARA verifyPara = { sizeof(verifyPara) };
    verifyPara.pXadesVerifyPara = &xadesVerifyPara;

    PXADES_VERIFICATION_INFO_ARRAY pVerifyInfo = 0;

    // Проверяем подпись
    if (!XadesVerify(&verifyPara, NULL, &message[0], (unsigned long)message.size(), &pVerifyInfo))
    {
        XadesFreeVerificationInfoArray(pVerifyInfo);
        cout << "XadesVerify() failed" << endl;
        return -1;
    }

    // Выводим результат проверки
    for (unsigned int i = 0; i < pVerifyInfo->cbCount; ++i) {
        if (pVerifyInfo->pXadesVerificationInfo[i].dwStatus != XADES_VERIFY_SUCCESS)
            cout << "XML signature #" << i << " is not verified successfully." << endl;
        else
            cout << "XML signature #" << i << " verified successfully." << endl;
    }

    // Освобождаем ресурсы
    if (!XadesFreeVerificationInfoArray(pVerifyInfo))
    {
        cout << "XadesFreeVerificationInfoArray() failed" << endl;
        return -1;
    }

    return 0;