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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline danbka  
#1 Оставлено : 5 февраля 2016 г. 13:05:43(UTC)
danbka

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Добрый день, уважаемые участники форума.

Подскажите, пожалуйста, каким образом я должен использовать API данного плагина?

Вот самая простая задача: я хочу получить версию КриптоПро CSP. Казалось бы даже есть пример, решающий именно эту задачу: http://cpdn.cryptopro.ru...gin-samples-version.html
Только что же это за пример, если он не работает? Если верить примеру, то достаточно подключить скрипт cadesplugin_api.js, скопировать в JS функции run() и get_version() и все должно работать. Но как же оно будет работать, если используемых в JS-коде элементов на странице просто нет:

Код:
var elem = document.getElementById("ProviderName");


Нет, я могу удалить данные куски кода, и оставить только то, что меня действительно интересует:
Код:

var oAbout = cadesplugin.CreateObject("CAdESCOM.About");

oVersion= oAbout.CSPVersion(ProviderName, parseInt(ProviderType, 10));

var Minor = oVersion.MinorVersion;
var Major = oVersion.MajorVersion;
var Build = oVersion.BuildVersion;
var Version = oVersion.toString();


вот только я сразу же получу ошибку:
Код:
cadesplugin.CreateObject is not a function


А если вызову
Код:
var oAbout = cadesplugin.CreateObjectAsync("CAdESCOM.About");


то получу ошибку в следующей строке:
Код:
oAbout.CSPVersion is not a function


Кто разобрался, подскажите, пожалуйста, как получить версию CSP? Просто вывести ее в консоль. С остальным уже разберусь сам, мне бы "идеологию" понять на простейшем примере.
Offline Андрей Писарев  
#2 Оставлено : 5 февраля 2016 г. 14:29:19(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Здравствуйте.

В примере 2 способа инициализации переменных для вызова get_version.
Используйте один из них, например, в котором явно указано имя и тип криптопровайдера.

Техническую поддержку оказываем тут
Наша база знаний
Offline danbka  
#3 Оставлено : 5 февраля 2016 г. 15:29:48(UTC)
danbka

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Здравствуйте.

В примере 2 способа инициализации переменных для вызова get_version.
Используйте один из них, например, в котором явно указано имя и тип криптопровайдера.



Я понимаю, что можно удалить несколько строк, и использовать значения переменных по умолчанию. Но проблема не в этом, т.к. ошибку я получаю дальше по коду, в функции get_version().

Чтобы говорить предметно - я максимально сократил код:
Код:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>	Пример использования КриптоПро ЭЦП Browser plug-in </title>
    <script language="javascript" src="cadesplugin_api.js"></script>
</head>
<body>
	<script>
		var canPromise = !!window.Promise;
		if(canPromise) {
			cadesplugin.then(function () {
					var oAbout = cadesplugin.CreateObject("CAdESCOM.About");
					console.log(oAbout);
			   },
			   function(error) {
				   console.log("Error");
			   }
		   );
		}
	</script>
</body>
</html>


Получаю ошибку:
Код:
Uncaught (in promise) TypeError: cadesplugin.CreateObject is not a function(…)


Браузер Chrome v.48
Offline Андрей Писарев  
#4 Оставлено : 5 февраля 2016 г. 15:39:55(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
На демо странице тоже не определяется версия CSP?
Техническую поддержку оказываем тут
Наша база знаний
Offline danbka  
#5 Оставлено : 5 февраля 2016 г. 22:06:04(UTC)
danbka

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
На демо странице тоже не определяется версия CSP?


На демо-странице все отлично. А стал разбираться - и завис в самом начале.
Offline danbka  
#6 Оставлено : 8 февраля 2016 г. 11:27:06(UTC)
danbka

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
По-прежнему буду рад помощи и идеям. Неужели никто не пользовался API? :-(
Offline cross  
#7 Оставлено : 8 февраля 2016 г. 11:32:07(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
В зависимости от браузера у вас будет доступен или метод CreateObject или метод CreateObjectAsync.
Первый вариант возвращает сразу создаваемый обьект, второй возвращает Promise который при успешном "resolve" станет обьектом нужного типа.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline larry7  
#8 Оставлено : 14 марта 2017 г. 16:58:46(UTC)
larry7

Статус: Новичок

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

Автор: cross Перейти к цитате
В зависимости от браузера у вас будет доступен или метод CreateObject или метод CreateObjectAsync.
Первый вариант возвращает сразу создаваемый обьект, второй возвращает Promise который при успешном "resolve" станет обьектом нужного типа.


Так получается нужно разный код для разных браузеров писать?
Есть какой-то способ приведения к единому js коду?
Offline RinatGilmanov  
#9 Оставлено : 20 марта 2017 г. 11:09:31(UTC)
RinatGilmanov

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

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

разный код нужно не для разных браузеров писать, а для разных реализаций api - синхронной и асинхронной.
я делал фабрику, которая определяла, в каком режиме работать и возвращала асинхронную абстракцию с одной из двух реализаций. в итоге по приложению используется один и тот же контракт, но в зависимости от ситуации работает разная реализация.
и да, если хочется в асинхронной реализации использовать async/await, нужно быть готовым, что не все версии браузеров этот синтаксис понимают. я не парился и работал прям с Promise (который, кстати, тоже в зависимости от браузера есть нативный, либо нужно подключать либу).
Написал клиент к Browser plug-in для обёртки синхронной и асинхронной версий
--
STAR-PRO.RU
Offline larry7  
#10 Оставлено : 25 апреля 2017 г. 12:22:23(UTC)
larry7

Статус: Новичок

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

можете поделиться ссылочкой на чудодейственную фабрику?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.