Альтернативная библиотека для работы с браузерным плагином от КриптоПРО.
Поддерживает плагин начиная с версии 2
Последняя версия библиотеки протестирована с плагином версии 2.0.12245
Заменяет родную библиотеку cadesplugin_api.js
- Не запускает проверку плагина сразу при загрузке файла
- Использует jQuery.Deferred вместо нативных промисов
- Может подключаться к проекту как обычная библиотека, а также как amd/commonjs/node модуль
В репозитории библитека находится в папке src
src/alt_cadesplugin_api.js
src/alt_cadesplugin_api.min.js
bower install cadesplugin
<script src="your_site_name/path_to_script/alt_cadesplugin_api.js"></script>
Для корректной работы скрипта необходимы следующие библиотеки
Для начала создаем экземпляр класса AltCadesPlugin
var altCadesPlugin;
altCadesPlugin = new AltCadesPlugin()
altCadesPlugin.nonNpapiInit()
.then(function(){
Следующий код уже будет в колбэках промисов
...
});
altCadesPlugin.get('CAdESCOM.About').then(function(aboutObject){
В этом колбэке доступна переменная aboutObject, в которой хранится только что созданный объект
});
altCadesPlugin.get('CAdESCOM.About', 'PluginVersion', 'MajorVersion').then(function(majorVersion){
В этом колбэке доступна переменная majorVersion, в которой хранится major-версия плагина
});
При использовании нативной библиотеки код выглядел бы так:
var about = yield cadesplugin.CreateObjectAsync('CAdESCOM.About');
var pluginVersion = yield about.PluginVersion;
var majorVersion = yield pluginVersion.MajorVersion;
Иногда чтобы получить очередной параметр надо вызвать метод, например (родной код):
var signingTimeAttr = yield cadesplugin.CreateObjectAsync('CADESCOM.CPAttribute');
yield signingTimeAttr.propset_Name(0);
yield signingTimeAttr.propset_Value(timeNow);
С этой библиотекой будет выглядеть так
var attribute;
altCadesPlugin.get('CADESCOM.CPAttribute').then(function(attribute_){
attribute = attribute_;
altCadesPlugin.get(attribute, {method: 'propset_Name', args: [0]});
}).then(function(){
altCadesPlugin.get(attribute, {method: 'propset_Value', args: [timeNow]});
});
Запишет значение 0 в параметр Name объекта CAdESCOM.CPAttribute
Если плагин работает без NPAPI то не надо заботиться о подставлении префикса propset_, это делается автоматически
altCadesPlugin.get('CAdESCOM.CPAttribute')
.then(function(attribute){
altCadesPlugin.set(attribute, 'Name', 0);
});
altCadesPlugin.getVersion()
.then(function(version){
version.major; // 2
version.minor; // 0
version.build; // 12245
version.full; // 2.0.12245
});
altCadesPlugin.getCSPVersion()
.then(function(version){
version.major; // 4
version.minor; // 0
version.build; // 9630
version.full; // 4.0.9630
});
altCadesPlugin.getCertificates()
.then(function(certificates){
certificates.subject; // владелец сертификата
certificates.issuer; // издатель сертификата
certificates.validFrom; // дата начала действия сертификата, дата выдачи
certificates.validTo; // дата окночания действия сертификата
certificates.algorithm; // алгоритм шифрования
certificates.hasPrivateKey; // наличие закрытого ключа
certificates.isValid; // валидность
certificates.thumbprint; // слепок, хэш
certificates.certificate; // объект сертификата
});
altCadesPlugin.getCertificates()
.then(function(certificates){
certificate = certificates[0].certificate;
altCadesPlugin.signData('Hello World!', certificate);
}).then(function(signature){
alert(signature);
});
-
Скачиваем весь репозиторий или клонируем (git clone ...)
-
Устанавливаем (если не установлена) node.js
-
Устанавливаем глобально следующие npm-пакеты: gulp, gulp-cli
npm install -g gulp
npm install -g gulp-cli
-
Устанавливаем зависимости проекта
npm install
-
Запускаем сервер
gulp webserver
-
Тестовая страница будет доступна по адресу: http://localhost:8080/