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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline nick13145  
#1 Оставлено : 7 ноября 2017 г. 11:01:42(UTC)
nick13145

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

Группы: Участники
Зарегистрирован: 07.11.2017(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Делаю глобальную переменную linkPrivateKey

Делаю мультиподписание, при первом проходе сохраняю Приватный ключ.

linkPrivateKey = yield certificate.PrivateKey;
linkPrivateKey.propset_CachePin(true);

Мульти-подписание проходит на УРА, и под конец выставляю null для linkPrivateKey, но если я без перезагрузки еще раз пытаюсь подписать, то уже пароль не спрашивается. Может кто сможет подсказать как правильно сбрасывать
Offline cross  
#2 Оставлено : 7 ноября 2017 г. 11:43:58(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Для асинхронного плагина можно принудительно удалить все обьекты вызвав метод ReleasePluginObjects у обьекта cadesplugin.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline nick13145  
#3 Оставлено : 7 ноября 2017 г. 11:51:06(UTC)
nick13145

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

Группы: Участники
Зарегистрирован: 07.11.2017(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
cpcsp_chrome_nmcades && cpcsp_chrome_nmcades.ReleasePluginObjects();

Я вызываю данную функцию, она сбрасывает, но при повторном вызове и подписании опять вызывая ReleasePluginObjects вылетает виндовая ошибка

Автор: cross Перейти к цитате
Для асинхронного плагина можно принудительно удалить все обьекты вызвав метод ReleasePluginObjects у обьекта cadesplugin.


Offline nick13145  
#4 Оставлено : 7 ноября 2017 г. 12:01:59(UTC)
nick13145

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

Группы: Участники
Зарегистрирован: 07.11.2017(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
У меня сам объект cadesplugin не содержит данную функцию ReleasePluginObjects.

Я использую cadesplugin_api.js....ранее монтирую её на страницу. Поэтому ReleasePluginObjects вызываю через cpcsp_chrome_nmcades
Offline cross  
#5 Оставлено : 7 ноября 2017 г. 14:18:40(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Вам нужно обновить cadesplugin_api.js.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline nick13145  
#6 Оставлено : 7 ноября 2017 г. 14:55:54(UTC)
nick13145

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

Группы: Участники
Зарегистрирован: 07.11.2017(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
https://www.cryptopro.ru...0/cadesplugin_api.js.zip
Обновил, ReleasePluginObjects появился, но проблему не решил, всё также падает виндовая ошибка

В логах всё чисто, точнее для последней reset команды ответ не пришел, из-за этого и ошибка виндовая.

При первой очистки всё норм проходило




2017-11-07_14-53-23.png (20kb) загружен 14 раз(а). 2017-11-07_14-53-46.png (18kb) загружен 14 раз(а).

Автор: cross Перейти к цитате
Вам нужно обновить cadesplugin_api.js.


Offline cross  
#7 Оставлено : 9 ноября 2017 г. 11:08:29(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Можно пример кода который вызывает такое поведение?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline nick13145  
#8 Оставлено : 14 ноября 2017 г. 9:22:17(UTC)
nick13145

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

Группы: Участники
Зарегистрирован: 07.11.2017(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Автор: cross Перейти к цитате
Можно пример кода который вызывает такое поведение?



Функция подписания выглядит таким образом
Код:
function signXML_async(data) {
    return cadesplugin.async_spawn(function* (args) {
        var data = args[0];
        var CADESCOM_CADES_BES = 1;
        var CAPICOM_CURRENT_USER_STORE = 2;
        var CAPICOM_MY_STORE = "My";
        var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
        var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
        var CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0;
        var XmlDsigGost3410Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411";
        var XmlDsigGost3411Url = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411";


        var oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
        yield oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
            CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);

        //get all certificates
        var all_certs = yield oStore.Certificates;
        var fio = [ws[0].card.fio1, ws[0].card.fio2, ws[0].card.fio3].join(' ');

        var fio = 'XXXX XXXX XXXX';//todo need delete line
        //get necessary certificate by name
        var oCerts = yield all_certs.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, fio, true);
        //get count of certificates
        var cnt = yield oCerts.Count;
        //todo check cnt
        var certificate = yield oCerts.Item(1);
        //get certificate name
        var nameCert = yield certificate.SubjectName;
        if (!linkPrivateKey) {
            linkPrivateKey = yield certificate.PrivateKey;
            linkPrivateKey.propset_CachePin(true);
        }

        // Создаем объект CAdESCOM.CPSigner
        var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
        yield oSigner.propset_Certificate(certificate);
        var oSignedXML = yield cadesplugin.CreateObjectAsync("CAdESCOM.SignedXML");
        var sContent =
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
            "<!-- \n" +
            " Original XML doc file for sign example. \n" +
            "-->\n" +
            "<Envelope xmlns=\"urn:envelope\">\n" +
            "  <Data>\n" +
            `   ${JSON.stringify(data)}\n` +
            "  </Data>\n" +
            "  <Node xml:id=\"nodeID\">\n" +
            "   Hello, Node!\n" +
            "  </Node>\n" +
            " \n" +
            "</Envelope>";

        yield oSignedXML.propset_Content(sContent);
        yield oSignedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED);
        yield oSignedXML.propset_SignatureMethod(XmlDsigGost3410Url);
        yield oSignedXML.propset_DigestMethod(XmlDsigGost3411Url);

        try {
            sSignedMessage = yield oSignedXML.Sign(oSigner);
        } catch (err) {
            alert("Failed to create signature. Error: " + cadesplugin.getLastError(err));
            resolve('');
        }

        yield oStore.Close();

        return ({id: data.id, signature: sSignedMessage});
    }, data);
}


Здесь глобальная переменная linkPrivateKey

function* resetCadesPlugin() {
yield cadesplugin.ReleasePluginObjects();
return true
}



Вызываю функция подписи таким вот образом примерно.
Т.е. при первом массовой подписи всё норм, но если не перезагружия страницу... еще раз попробовать массово подписывать другой стек данных, то валится при сбросе (resetCadesPlugin();)
Код:

promise = Promise.resolve();
                            $.each(store.milk_statistics, function (index, milk_stat) {
                                promise = promise.then(function () {
                                    return signXML_async(milk_stat);
                                }).then(function (result) {
                                    return doPostSignatureReleased({id: result.id, signature: result.signature, releaseddt:today(2)});
                                }).then(function (result) {
                                    console.log("Signed!");
                                });
                            });
                            promise.then(function () {
                                linkPrivateKey.propset_CachePin(false);
                                linkPrivateKey = null;
                                delete linkPrivateKey;
                                resetCadesPlugin();
                                mask.unmask();
                                b.hide();
                                renderBody(releasedDate)
                            });


Offline nick13145  
#9 Оставлено : 20 ноября 2017 г. 17:51:19(UTC)
nick13145

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

Группы: Участники
Зарегистрирован: 07.11.2017(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Коллеги, есть вариант решения данной проблемы?
Offline cross  
#10 Оставлено : 21 ноября 2017 г. 11:12:16(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
К сожалению при двойном вызове метода удаления обьектов есть ошибка. Будет исправлена в след версии. Но если вы вызываете его однократно и потом не используете ранее созданных обьектов, по идее должно работать. Проверял на нашей тестовой странице https://www.cryptopro.ru...ge/cades_bes_sample.html . Нажимаю кнопку подписать, после этого в console выполняю cadesplugin.ReleasePluginObjects(), после этого еще раз нажимаю кнопку подписать и все подписывается.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.