Skip to content

Commit

Permalink
Release 0.0.4
Browse files Browse the repository at this point in the history
  • Loading branch information
bankrot committed Sep 25, 2015
1 parent 5fc4c1b commit bc63d6f
Show file tree
Hide file tree
Showing 8 changed files with 125 additions and 77 deletions.
108 changes: 100 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,110 @@
# Cadesplugin
# Cadesplugin (В разработке, не для продакшна)

Альтернативная библиотека для работы с [плагином от КриптоПРО](https://www.cryptopro.ru/sites/default/files/products/cades/demopage/main.html).
### Альтернативная библиотека для работы с [браузерным плагином от КриптоПРО](https://www.cryptopro.ru/sites/default/files/products/cades/demopage/main.html).

Поддерживает плагин начиная с версии 2

Последняя протестированная версия 2.0.12245
Последняя версия библиотеки протестирована с плагином версии 2.0.12245

Заменяет родную библиотеку [cadesplugin_api.js](http://www.cryptopro.ru/sites/default/files/products/cades/cadesplugin_api.js)

Отличия от родной библиотеки
--------------------------------------
### Отличия от родной библиотеки

1. Не запускает проверку плагина сразу при загрузке файла
2. Использует jQuery.Deferred вместо нативных промисов
3. Не создает лишних переменных в глобальной области видимости
4. Может подключаться к проекту как обычная библиотека, а также как amd/commonjs/node модуль
5. Более удобный доступ к параметрам плагина
3. Может подключаться к проекту как обычная библиотека, а также как amd/commonjs/node модуль

### Как использовать

#### Загрузить скрипт можно напрямую из репозитория или с помощью bower

В репозитории библитека находится в папке 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>

#### Зависимости

Для корректной работы скрипта нужна библиотека jQuery

#### Использование

Для начала надо создать экземпляр класса 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]});
});

## Как запустить тестовый сервер для проверки

1. Скачиваем весь репозиторий или клонируем (git clone ...)
2. Устанавливаем (если не установлена) node.js
3. Устанавливаем глобально следующие npm-пакеты: gulp, gulp-cli

`npm install -g gulp`

`npm install -g gulp-cli`

4. Устанавливаем зависимости проекта

`npm install`

5. Запускаем сборку

`gulp build`

6. Запускаем сервер

`gulp webserver`

7. Тестовая страница будет доступна по адресу: http://localhost:8080/
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cadesplugin",
"version": "0.0.3",
"version": "0.0.4",
"homepage": "https://github.com/bankrot/cadesplugin",
"description": "CryptoPRO plugin api library (Крипто ПРО)",
"main": "src/alt_cadesplugin_api.js",
Expand Down
20 changes: 4 additions & 16 deletions src/alt_cadesplugin_api.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -123,21 +123,6 @@ AltCadesPlugin = class

return deferred

###*
Создает объект плагина по названию
@method createObject
@param name {String} Название объекта
@return {jQuery.Deferred} Deferred объект с разультатом выполнения в качестве аргумента колбэка
###
createObject: (name)=>
deferred = $.Deferred()
@pluginObject.CreateObjectAsync name
.then (value)->
deferred.resolve value
, (value)->
deferred.reject value
return deferred

###*
Возвращает параметр из объекта
@method getParam
Expand All @@ -160,7 +145,10 @@ AltCadesPlugin = class
if typeof objectName is 'string'
chain = @pluginObject.CreateObjectAsync objectName
.then (object)->
param object, paramName
if paramName
param object, paramName
else
return object
else
chain = param objectName, paramName

Expand Down
26 changes: 5 additions & 21 deletions src/alt_cadesplugin_api.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ AltCadesPlugin = (function() {
}
this.get = bind(this.get, this);
this.getParam = bind(this.getParam, this);
this.createObject = bind(this.createObject, this);
this.nonNpapiInit = bind(this.nonNpapiInit, this);
if (window.altCadespluginApiInstance) {
return window.altCadespluginApiInstance;
Expand Down Expand Up @@ -167,25 +166,6 @@ AltCadesPlugin = (function() {
};


/**
Создает объект плагина по названию
@method createObject
@param name {String} Название объекта
@return {jQuery.Deferred} Deferred объект с разультатом выполнения в качестве аргумента колбэка
*/

_Class.prototype.createObject = function(name) {
var deferred;
deferred = $.Deferred();
this.pluginObject.CreateObjectAsync(name).then(function(value) {
return deferred.resolve(value);
}, function(value) {
return deferred.reject(value);
});
return deferred;
};


/**
Возвращает параметр из объекта
@method getParam
Expand All @@ -209,7 +189,11 @@ AltCadesPlugin = (function() {
deferred = $.Deferred();
if (typeof objectName === 'string') {
chain = this.pluginObject.CreateObjectAsync(objectName).then(function(object) {
return param(object, paramName);
if (paramName) {
return param(object, paramName);
} else {
return object;
}
});
} else {
chain = param(objectName, paramName);
Expand Down
2 changes: 1 addition & 1 deletion src/alt_cadesplugin_api.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions test/coffee/main.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ init = =>
installedCspVersion = majorVersion + '.' + minorVersion + '.' + buildVersion
$logBlock.append '<p>Версия CSP (' + installedCspVersion + ')<p>'

altCadesPlugin.createObject 'CAdESCOM.Store'
altCadesPlugin.get 'CAdESCOM.Store'
.then (_store)->
store = _store
altCadesPlugin.get store, {method: 'Open', args: []}
Expand Down Expand Up @@ -133,8 +133,8 @@ signData = ->
alert 'Введите данные для подписывания'
return
$.when(
altCadesPlugin.createObject 'CAdESCOM.CPSigner'
altCadesPlugin.createObject 'CADESCOM.CPAttribute'
altCadesPlugin.get 'CAdESCOM.CPSigner'
altCadesPlugin.get 'CADESCOM.CPAttribute'
).then (signer_, attribute_)->
signer = signer_
attribute = attribute_
Expand All @@ -144,7 +144,7 @@ signData = ->
.then ->
altCadesPlugin.get signer, 'AuthenticatedAttributes2', {method: 'Add', args: [attribute]}
.then ->
altCadesPlugin.createObject 'CADESCOM.CPAttribute'
altCadesPlugin.get 'CADESCOM.CPAttribute'
.then (attribute2_)->
attribute2 = attribute2_
altCadesPlugin.get attribute2, {method: 'propset_Name', args: [1]}
Expand All @@ -155,7 +155,7 @@ signData = ->
.then ->
altCadesPlugin.get signer, {method: 'propset_Certificate', args: [certificatesList[certificateIndex].certificate]}
.then ->
altCadesPlugin.createObject 'CAdESCOM.CadesSignedData'
altCadesPlugin.get 'CAdESCOM.CadesSignedData'
.then (signedData_)->
signedData = signedData_
altCadesPlugin.get signedData, {method: 'propset_Content', args: [data]}
Expand Down
26 changes: 5 additions & 21 deletions test/js/alt_cadesplugin_api.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ AltCadesPlugin = (function() {
}
this.get = bind(this.get, this);
this.getParam = bind(this.getParam, this);
this.createObject = bind(this.createObject, this);
this.nonNpapiInit = bind(this.nonNpapiInit, this);
if (window.altCadespluginApiInstance) {
return window.altCadespluginApiInstance;
Expand Down Expand Up @@ -167,25 +166,6 @@ AltCadesPlugin = (function() {
};


/**
Создает объект плагина по названию
@method createObject
@param name {String} Название объекта
@return {jQuery.Deferred} Deferred объект с разультатом выполнения в качестве аргумента колбэка
*/

_Class.prototype.createObject = function(name) {
var deferred;
deferred = $.Deferred();
this.pluginObject.CreateObjectAsync(name).then(function(value) {
return deferred.resolve(value);
}, function(value) {
return deferred.reject(value);
});
return deferred;
};


/**
Возвращает параметр из объекта
@method getParam
Expand All @@ -209,7 +189,11 @@ AltCadesPlugin = (function() {
deferred = $.Deferred();
if (typeof objectName === 'string') {
chain = this.pluginObject.CreateObjectAsync(objectName).then(function(object) {
return param(object, paramName);
if (paramName) {
return param(object, paramName);
} else {
return object;
}
});
} else {
chain = param(objectName, paramName);
Expand Down
8 changes: 4 additions & 4 deletions test/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ init = (function(_this) {
var installedCspVersion;
installedCspVersion = majorVersion + '.' + minorVersion + '.' + buildVersion;
$logBlock.append('<p>Версия CSP (' + installedCspVersion + ')<p>');
return altCadesPlugin.createObject('CAdESCOM.Store').then(function(_store) {
return altCadesPlugin.get('CAdESCOM.Store').then(function(_store) {
store = _store;
return altCadesPlugin.get(store, {
method: 'Open',
Expand Down Expand Up @@ -152,7 +152,7 @@ signData = function() {
alert('Введите данные для подписывания');
return;
}
return $.when(altCadesPlugin.createObject('CAdESCOM.CPSigner'), altCadesPlugin.createObject('CADESCOM.CPAttribute')).then(function(signer_, attribute_) {
return $.when(altCadesPlugin.get('CAdESCOM.CPSigner'), altCadesPlugin.get('CADESCOM.CPAttribute')).then(function(signer_, attribute_) {
signer = signer_;
attribute = attribute_;
return altCadesPlugin.get(attribute, {
Expand All @@ -170,7 +170,7 @@ signData = function() {
args: [attribute]
});
}).then(function() {
return altCadesPlugin.createObject('CADESCOM.CPAttribute');
return altCadesPlugin.get('CADESCOM.CPAttribute');
}).then(function(attribute2_) {
attribute2 = attribute2_;
return altCadesPlugin.get(attribute2, {
Expand All @@ -193,7 +193,7 @@ signData = function() {
args: [certificatesList[certificateIndex].certificate]
});
}).then(function() {
return altCadesPlugin.createObject('CAdESCOM.CadesSignedData');
return altCadesPlugin.get('CAdESCOM.CadesSignedData');
}).then(function(signedData_) {
signedData = signedData_;
return altCadesPlugin.get(signedData, {
Expand Down

0 comments on commit bc63d6f

Please sign in to comment.