Пример создания подписанного XML сообщения с помощью функций КриптоПро ЭЦП SDK. Полный текст примера см. SDK файл SimplifiedSignVerifyXadesBes.cpp.
C++
XADES_SIGN_PARA xadesSignPara = { sizeof(xadesSignPara) }; xadesSignPara.dwSignatureType = XML_XADES_SIGNATURE_TYPE_ENVELOPED | XADES_BES; // Указываем тип усовершенствованной обернутой (ENVELOPED) подписи XADES_BES xadesSignPara.pSignerCert = context; XADES_SIGN_MESSAGE_PARA para = { sizeof(para) }; para.pXadesSignPara = &xadesSignPara; // Формируем данные для подписания DWORD cbToBeSigned = (DWORD)strlen(XML_DATA); BYTE *pbToBeSigned = (BYTE*)XML_DATA; PCRYPT_DATA_BLOB pSignedMessage = 0; // Создаем подписанное сообщение if (!XadesSign(¶, NULL, FALSE, pbToBeSigned, cbToBeSigned, &pSignedMessage)) { cout << "XadesSign() failed" << endl; return -1; } vector<unsigned char> message(pSignedMessage->cbData); copy(pSignedMessage->pbData, pSignedMessage->pbData + pSignedMessage->cbData, message.begin());