Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline vivalinux  
#1 Оставлено : 9 декабря 2015 г. 16:04:50(UTC)
vivalinux

Статус: Участник

Группы: Участники
Зарегистрирован: 26.10.2015(UTC)
Сообщений: 11

Сказал(а) «Спасибо»: 2 раз
Добрый день!

Мне нужно добавить еще одну подпись уже подписанному документу.

В примере со страницы https://www.cryptopro.ru...ge/cades_bes_sample.html есть функция для подписания документа SignFileBES_Async, вся суть которой в этом фрагменте:

Код:

var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
var CADES_BES = 1;

if (dataToSign) {
    // Данные на подпись ввели
    yield oSignedData.propset_Content(dataToSign);
    yield oSigner.propset_Options(1); //CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
    try {
        Signature = yield oSignedData.SignCades(oSigner, CADES_BES);
    }
    catch (err) {
        errormes = "Не удалось создать подпись из-за ошибки: " + GetErrorMessage(err);
        throw errormes;
    }
}


я делаю так: перекодировал dataToSign в base64, и доработал этот участок кода (показал стрелками что именно):

Код:

var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
var CADES_BES = 1;
var CADESCOM_BASE64_TO_BINARY = 1; // <======

if (dataToSign) {
    // Данные на подпись ввели
    yield oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY); // <======
    yield oSignedData.propset_Content(dataToSign);
    yield oSigner.propset_Options(1); //CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
    try {
        Signature = yield oSignedData.CoSignCades(oSigner, CADES_BES); // <======
    }
    catch (err) {
        errormes = "Не удалось создать подпись из-за ошибки: " + GetErrorMessage(err);
        throw errormes;
    }
}



То есть по сути заменил "SignCades" (проверено, работает) на "CoSignCades", и ожидаю что будет добавлена еще одна подпись.

Получаю такой ответ:

Код:
Не удалось создать подпись из-за ошибки: No signature was present in the subject. (0x800B0100)


Что я делаю не так?

Может указать какой-то доп. параметр для "CAdESCOM.CadesSignedData"? Документации по "CoSignCades" для JavaScript не нашел...
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.