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

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

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

C++
    CADES_SIGN_PARA cadesSignPara = { sizeof(cadesSignPara) };
    cadesSignPara.dwCadesType = CADES_X_LONG_TYPE_1;

    CADES_ENHANCE_MESSAGE_PARA para = { sizeof(para) };
    para.dwMsgEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
    para.pCadesSignPara = &cadesSignPara;

    PCRYPT_DATA_BLOB pSignedMessage = 0;
    if(!CadesEnhanceMessage(&para, 0, &message[0],(DWORD)message.size(),
        &pSignedMessage))
    {
        std::cout << "CadesEnhanceMessage() failed" << std::endl;
        return empty;
    }

    message.resize(pSignedMessage->cbData);
    std::copy(pSignedMessage->pbData,
        pSignedMessage->pbData + pSignedMessage->cbData,message.begin());

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

    std::cout << "Signature was enhanced successfully." << std::endl;

    return message;