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

Уведомление

Icon
Error

23 Страницы«<56789>»
Опции
К последнему сообщению К первому непрочитанному
Offline VoimiX  
#61 Оставлено : 29 августа 2015 г. 12:33:12(UTC)
VoimiX

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 5 раз в 2 постах
Автор: Смирнов Перейти к цитате
Автор: VoimiX Перейти к цитате
Я написал ф-ию sign, которая подписывает данные используя новый асинхронный api.
Но как вызывать её, чтоб получить значение подписи на выходе?


Например, с помощью того же Promise:

...

Только по-хорошему надо ещё с reject разобраться.


Спасибо. С подписью получилось. Возвращает то, что нужно в случае успеха.

Но с reject почему-то не получилось

Вот новое описание ф-ии
Код:

function sign(dataToSign, thumbprint) {
    
    var sign_resolve;
    var sign_reject;
    var result = new Promise(function(resolve, reject)
    {
        sign_resolve = resolve;
        sign_reject = reject;
    });

    cadesplugin.async_spawn(function*(arg) {
        
        if (thumbprint == null) {
            thumbprint = 'a145929a81885726e8ddfe73d6ae4fd5429b734d';//d
            // thumbprint = $('#CertificateThumbprint').val();
        }
           
        if (thumbprint == null || thumbprint == '') {
            return  sign_reject('Отпечаток не задан');
        }

        try {
            var oStore = yield cadesplugin.CreateObjectAsync("CAPICOM.store");
            yield oStore.Open();
        } catch (err) {
            //alert('Failed to create CAPICOM.store: ' + err.number);
            return  sign_reject('Failed to create CAPICOM.store: ' + err.number);
            //return "";
        }

        var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
        var all_certs = yield oStore.Certificates;
        var oCerts = yield all_certs.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);

        if (yield oCerts.Count == 0) {
            //alert("Certificate not found");
            //return ;
            return  sign_reject('Certificate not found');
        }
        var certificate = yield oCerts.Item(1);
        
        var Signature;
        try
        {
            var errormes = "";
            try {
                var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
            } catch (err) {
                errormes = "Failed to create CAdESCOM.CPSigner: " + err.number;
                throw errormes;
            }
            var oSigningTimeAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");

            var CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
            yield oSigningTimeAttr.propset_Name(CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME);
            var oTimeNow = new Date();
            yield oSigningTimeAttr.propset_Value(oTimeNow);
            var attr = yield oSigner.AuthenticatedAttributes2;
            yield attr.Add(oSigningTimeAttr);


            var oDocumentNameAttr = yield cadesplugin.CreateObjectAsync("CADESCOM.CPAttribute");
            var CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
            oDocumentNameAttr.propset_Name(CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME);
            oDocumentNameAttr.propset_Value("Document Name");
            yield attr.Add(oDocumentNameAttr);

            if (oSigner) {
                oSigner.propset_Certificate(certificate);
            }
            else {
                errormes = "Failed to create CAdESCOM.CPSigner";
                throw errormes;
            }
            
            var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
            var CADES_BES = 1;
            var CADESCOM_BASE64_TO_BINARY = 1;

            if (dataToSign) {

                oSignedData.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
                oSignedData.propset_Content(dataToSign);
                oSigner.propset_Options(1); //CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
                try {
                    Signature = yield oSignedData.SignCades(oSigner, CADES_BES);
                    //alert('Signature OK-' + Signature);
                   
                    return sign_resolve(Signature);
                }
                catch (err) {
                    errormes = "Не удалось создать подпись из-за ошибки: " + GetErrorMessage(err);
                    throw errormes;
                }
            }
        }
        catch(err)
        {
            //alert('Signature Error:' + err);
            return  sign_reject('Signature Error:' + err);
        }
        
        //alert('Signature OK-' + Signature);
        //return Signature;
        return sign_resolve(Signature);
     
    }); //cadesplugin.async_spawn
    
    return result;
}



Вызываю так

Код:

sign('hello').then(function (data) {

                //    console.log(data);
                alert('signature from sign()=' + data);
            },
            function (err) {
                alert('error=' + err);
            }
 );


Я специально сделал неправильный отпечаток, чтобы сертификат не нашёлся. И ожидалось, что вызовется
Код:

 function (err) {
                alert('error=' + err);
            }


Но ничего не происходит, только в консоли браузера ошибка "Uncaught (in promise) Object {message: "Cannot find object or property. (0x80092004)", requestid: 9, type: "error"}"



У предыдущего комментатора такая же проблема видимо


Автор: ve2 Перейти к цитате
Не уверен, что в эту ветку, но обнаружилась эта проблема при тестировании нового плагина.
Берем условный код

var oStore = yield cadesplugin.CreateObjectAsync("CAPICOM.store");
yield oStore.Open();
var certs = yield oStore.Certificates; /* здесь */
var certCnt = yield certs.Count;

если нет ни одного сертификата при получении списка происходит исключение
Cannot find object or property при получении списка
то есть объект certs не возвращается.
В версии NPAPI на Firefox поведение аналогично.

Но в Explorer, при использовании объекта ActiveXObject("CAPICOM.store"),
который является прототипом для функции вашего плагина,
в аналогичном коде объект списка возвращается, а вот его свойство Count равно нулю.
И это поведение представляется логичным, поскольку пустой список
это не то же самое, что его отсутствие или ошибка доступа к списку.

Отредактировано пользователем 29 августа 2015 г. 13:12:17(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#62 Оставлено : 29 августа 2015 г. 15:11:21(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Автор: VoimiX Перейти к цитате
Но с reject почему-то не получилось
У предыдущего комментатора такая же проблема видимо

Эту проблему мы проверим. Но в любом случае, в Вашей функции sign() лучше обернуть в try/catch все вызовы плагина. Тогда вы в любом случае получите информацию об ошибке.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline paradoxm  
#63 Оставлено : 31 августа 2015 г. 13:01:29(UTC)
paradoxm

Статус: Активный участник

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

Сказал «Спасибо»: 1 раз
Код:
navigator.userAgent
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 YaBrowser/15.2.2214.3645 Safari/537.36"


Неверное определяет яндекс браузер. Думает хром. Плагин не работает



Решена проблема. Для этого браузера тоже надо было ставить расширения Хрома.

Отредактировано пользователем 31 августа 2015 г. 13:14:21(UTC)  | Причина: Не указана

Offline cross  
#64 Оставлено : 31 августа 2015 г. 15:56:43(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Цитата:
Неверное определяет яндекс браузер. Думает хром.

да он и есть Chrome, только рюшечки от яндекса ))
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline paradoxm  
#65 Оставлено : 1 сентября 2015 г. 9:49:31(UTC)
paradoxm

Статус: Активный участник

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

Сказал «Спасибо»: 1 раз
Скажите на сколько совместим этот пагин с ViPNet CSP? Сегодня столкнулись с тем, что клиент наш некоторые документы может подписать, а некоторые нет. Закономерность пока не удалось получить. Оказалось, что у него стоит ViPNet CSP. И плагин выходит как то на половину дружит с ViPNet CSP. Это нормальное явление?
Offline Павел Смирнов  
#66 Оставлено : 1 сентября 2015 г. 9:52:15(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Автор: paradoxm Перейти к цитате
Скажите на сколько совместим этот пагин с ViPNet CSP? Сегодня столкнулись с тем, что клиент наш некоторые документы может подписать, а некоторые нет. Закономерность пока не удалось получить. Оказалось, что у него стоит ViPNet CSP. И плагин выходит как то на половину дружит с ViPNet CSP. Это нормальное явление?

Нормальное. Мы не можем гарантировать совместимость со сторонними CSP.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Андрей Писарев  
#67 Оставлено : 1 сентября 2015 г. 10:04:26(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,785
Мужчина
Российская Федерация

Сказал «Спасибо»: 582 раз
Поблагодарили: 2311 раз в 1810 постах
Автор: paradoxm Перейти к цитате
Скажите на сколько совместим этот пагин с ViPNet CSP? Сегодня столкнулись с тем, что клиент наш некоторые документы может подписать, а некоторые нет. Закономерность пока не удалось получить. Оказалось, что у него стоит ViPNet CSP. И плагин выходит как то на половину дружит с ViPNet CSP. Это нормальное явление?


Еще есть вариант - использовать для таких пользователей ViPNet Local Signature Service.
Техническую поддержку оказываем тут
Наша база знаний
Offline paradoxm  
#68 Оставлено : 1 сентября 2015 г. 10:49:04(UTC)
paradoxm

Статус: Активный участник

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

Сказал «Спасибо»: 1 раз
Где брать свежую версию плагина? По тем ссылкам что были раньше качается старая версия и она не работает. 2.012
Offline Павел Смирнов  
#69 Оставлено : 1 сентября 2015 г. 10:54:35(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Автор: paradoxm Перейти к цитате
Где брать свежую версию плагина? По тем ссылкам что были раньше качается старая версия и она не работает. 2.012

Здесь:
Автор: cross Перейти к цитате
Для установки требуется удаление предыдущей версии, обновляться пока не умеет.
Изменения:
1) Win версия не требует флага для установки Native Message
2) Исправлена страница настройки доверенных сайтов.
3) Исправлена ошибка медленного декодирования больших base64 данных на Windows.


Версия для windows
Версия для Linux amd64

Это еще бета-версия, перед тем как рекомендовать ее пользователям проверьте на вашем приложении.

Не рекомендуется распространять эту версию пользователям. Релизная версия, скорее всего, не сможет корректно обновить эту бета-версию.


Также добавил в шапку темы.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline spider  
#70 Оставлено : 1 сентября 2015 г. 16:38:22(UTC)
spider

Статус: Активный участник

Группы: Участники
Зарегистрирован: 11.02.2011(UTC)
Сообщений: 49
Мужчина
Российская Федерация
Откуда: E-burg

Сказал «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Добрый день!

Столкнулись с аналогичной ошибкой при подписании с помощью последней версии плагина (2.0.12203) и последней версией браузера (Google Chrome 44.0.2403.157 m). При этом сценарий не стандартный, т.е. маленькие файлы (1-5 КБ) подписывает нормально. А при попытке подписать большие файлы (800-900 КБ) возникает ошибка в nmcades.exe (как на 1 странице этой темы)

Подскажите, какую информацию нужно для Вас собрать, чтобы Вы смогли проанализировать её?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
23 Страницы«<56789>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.