Skip to content

Commit

Permalink
Add separated signature files
Browse files Browse the repository at this point in the history
  • Loading branch information
diev committed Sep 12, 2019
1 parent 04c4296 commit fa52e8b
Show file tree
Hide file tree
Showing 13 changed files with 381 additions and 48 deletions.
63 changes: 45 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# [Verba-OW-Automation](http://diev.github.io/Verba-OW-Automation)
# [Verba-OW-Automation]

[![Build status](https://ci.appveyor.com/api/projects/status/rhukdxrkjsw5dud7?svg=true)](https://ci.appveyor.com/project/diev/verba-ow-automation)
[![GitHub Release](https://img.shields.io/github/release/diev/Verba-OW-Automation.svg)](https://github.com/diev/Verba-OW-Automation/releases/latest)
[![Build status]][appveyor]
[![GitHub Release]][releases]

Скрипты автоматизации ПО *Верба-OW*.
Не встраивание, а именно скрипты - с открытым кодом, используя только
Expand All @@ -18,7 +18,7 @@
* Из этого ПО для взаимодействия требуется только библиотека **wbotho.dll**.
* **.NET** штатной версии **3.5** или выше.
* **PowerShell** штатной версии **2.0** или выше - опционально.
Потому что можно и просто на [cmd](samples/cmd).
Потому что можно и просто на [cmd].

## Что не требуется

Expand All @@ -30,60 +30,87 @@
содержащий неточности и не предназначенный для промышленного применения.
* **Vb** (VbO) - исполняемый модуль командной строки от создателей Верба-W/OW,
но против покупки и использования которого Банк России.
* **Visual Studio** - прилагаемый здесь в папке [vs](vs) проект служит лишь
* **Visual Studio** - прилагаемый здесь в папке [vs] проект служит лишь
для удобства написания программных текстов в нем и проверки их запускаемости.
Эти тексты можно написать в любом подручном редакторе и проверить с помощью
системных компиляторов ```csc``` из состава установленных библиотек .NET.
Примеры их использования есть в папке [test](test):
Примеры их использования есть в папке [test]:
* ```csc.cmd``` - для .NET 3.5
* ```csc4.cmd``` - для .NET 4+
* Знания C# свежее 2008 года - скрипт на PowerShell будет использовать
тот .NET, который установлен в Вашей системе. Если он там версии 3.5,
например, то и набранный в редакторе текст не должен содержать те
нововведения языка C#, которые умеет применять Visual Studio наших дней.
* Знания, как запускать PowerShell - используйте ```run.cmd``` в
папке [posh](samples/posh).
папке [posh].

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

Написать какой-либо свой обработчик массы файлов, требующих обработки
с помощью ПО Верба-OW, на любом скриптовом языке типа PowerShell, CMD,
JavaScript или HTA и запускать функции из файла ```Verba.cs``` (в папке
[verba](verba)) так, как это показано в примерах в [samples](samples).
[verba]) так, как это показано в примерах в [samples].
Никакого постороннего ПО или недоверенных бинарных модулей не требуется.

В папке [work](work) собраны некоторые скрипты обработки обмена ПТК ПСД.
В папке [work] собраны некоторые скрипты обработки обмена ПТК ПСД.

В отличие от штатного АРМ РМП можно использовать несколько загруженных
в память драйвера ключей одновременно, убрав при этом ключевые носители
после загрузки с них. Для этого надо лишь сформировать штатными средствами
общий справочник, как показано в папке [pub](pub).
общий справочник, как показано в папке [pub].

Для проверки функционирования скриптов можно использовать как запускаемый
PowerShell скриптовый код на языке C#, так и скомпилированный под Ваш
.NET ```VerbaTest.exe``` ([пример](samples/VerbaTest)). Синтаксис команд у
него почти такой же, как у общеизвестной программы из SDK ```Wftesto.exe```.
.NET ```VerbaTest.exe``` ([пример]).
Синтаксис команд у него почти такой же, как у общеизвестной программы из
SDK ```Wftesto.exe```.
Сделаны лишь несколько улучшений:

* возврат кода 0 (успешно) или 1+ (были ошибки);
* очистка всех слотов в драйвере разом (команда ```r``` без параметров);
* добавлены функции по работе с подписями в отдельном файле.

Это готовый wrapper для запуска функций DLL из любого языка .NET или просто
из командной строки [cmd](samples/cmd) - этот вариант сейчас развивается
больше всего.
из командной строки [cmd] - этот вариант сейчас развивается больше всего.

## Благодарности

Спасибо всем, чьи идеи мне удалось встретить на форуме
[BANKIR.RU](http://bankir.ru/dom/forum/) на стыке Автоматизации и ИБ.
Спасибо всем, чьи идеи мне удалось встретить на форуме [BANKIR.RU]
на стыке Автоматизации и ИБ.

## Лицензионное соглашение

Licensed under the [Apache License,
Version 2.0](http://www.apache.org/licenses/LICENSE-2.0 "LICENSE").
Licensed under the [Apache License, Version 2.0].
Вы можете использовать этот код совершенно свободно без всяких ограничений
с моей стороны и без претензий с Вашей.

Если Вы захотите встроить что-то в свои приложения, то Вам необходимо
будет проверить необходимость применения правил лицензирования по работе
с таким ПО, принятых в Вашем государстве.

[Wiki]: https://github.com/diev/Verba-OW-Automation/wiki
[Идеи]: https://github.com/diev/Verba-OW-Automation/projects/1
[Issues]: https://github.com/diev/Verba-OW-Automation/issues
[releases]: https://github.com/diev/Verba-OW-Automation/releases/latest

[samples]: samples
[cmd]: samples/cmd
[posh]: samples/posh
[пример]: samples/VerbaTest
[verba]: verba
[vs]: vs
[test]: test
[work]: work
[pub]: pub

[BANKIR.RU]: http://bankir.ru/dom/forum/

[CHANGELOG]: CHANGELOG.md
[Apache License, Version 2.0]: LICENSE

[Verba-OW-Automation]: http://diev.github.io/Verba-OW-Automation

[appveyor]: https://ci.appveyor.com/project/diev/verba-ow-automation

[Build status]: https://ci.appveyor.com/api/projects/status/rhukdxrkjsw5dud7?svg=true
[GitHub Release]: https://img.shields.io/github/release/diev/Verba-OW-Automation.svg
32 changes: 24 additions & 8 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Verba-OW-Automation

[![Build status](https://ci.appveyor.com/api/projects/status/rhukdxrkjsw5dud7?svg=true)](https://ci.appveyor.com/project/diev/verba-ow-automation)
[![GitHub Release](https://img.shields.io/github/release/diev/Verba-OW-Automation.svg)](https://github.com/diev/Verba-OW-Automation/releases/latest)
[![Build status]][appveyor]
[![GitHub Release]][releases]

Скрипты автоматизации ПО *Верба-OW*.
Не встраивание, а именно скрипты - с открытым кодом. Без постороннего ПО.
Expand Down Expand Up @@ -68,23 +68,39 @@ PowerShell скриптовый код на языке C#, так и скомп
.NET ```VerbaTest.exe```. Синтаксис команд у него почти такой же, как
у общеизвестной программы ```Wftesto.exe```.
Сделаны лишь несколько улучшений:
* возврат кода 0 (успешно) или 1 (были ошибки);
* очистка всех слотов в драйвере разом (команда ```r``` без параметров);

* возврат кода 0 (успешно) или 1 (были ошибки);
* очистка всех слотов в драйвере разом (команда ```r``` без параметров);
* добавлены функции по работе с подписями в отдельном файле.

Это готовый wrapper для запуска функций DLL из любого языка .NET.

## Благодарности

Спасибо всем, чьи идеи мне удалось встретить на форуме
[BANKIR.RU](http://bankir.ru/dom/forum/) на стыке Автоматизации и ИБ.
Спасибо всем, чьи идеи мне удалось встретить на форуме [BANKIR.RU]
на стыке Автоматизации и ИБ.

## Лицензионное соглашение

Licensed under the [Apache License,
Version 2.0](http://www.apache.org/licenses/LICENSE-2.0 "LICENSE").
Licensed under the [Apache License, Version 2.0].
Вы можете использовать этот код совершенно свободно без всяких ограничений
с моей стороны и без претензий с Вашей.

Если Вы захотите встроить что-то в свои приложения, то Вам необходимо
будет проверить необходимость применения правил лицензирования по работе
с таким ПО, принятых в Вашем государстве.

[Wiki]: {{ site.github.wiki_url }}
[Идеи]: {{ site.github.repository_url }}/projects/1
[Issues]: {{ site.github.issues_url }}
[releases]: {{ site.github.releases_url }}/latest

[BANKIR.RU]: http://bankir.ru/dom/forum/

[CHANGELOG]: {{ site.github.repository_url }}/blob/master/CHANGELOG.md
[Apache License, Version 2.0]: http://www.apache.org/licenses/LICENSE-2.0 "LICENSE"

[appveyor]: https://ci.appveyor.com/project/{{ site.github.repository_nwo }}

[Build status]: https://ci.appveyor.com/api/projects/status/rhukdxrkjsw5dud7?svg=true
[GitHub Release]: https://img.shields.io/github/release/{{ site.github.repository_nwo }}.svg
20 changes: 17 additions & 3 deletions samples/VerbaTest/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

Эти скрипты используют тестовую утилиту, собранную с помощью
системных компиляторов *csc* из состава установленных библиотек .NET.
Примеры этого есть в папке [test](../../test):
Примеры этого есть в папке [test]:

* ```csc.cmd``` - для .NET 3.5
* ```csc4.cmd``` - для .NET 4+
Expand All @@ -20,7 +20,7 @@

Для скриптов создается общий справочник, для которого не требуется
переставлять ключи для каждой операции.
Подробнее о таком справочнике в [pub](../../pub).
Подробнее о таком справочнике в [pub].

## Настройки

Expand All @@ -37,9 +37,15 @@
verify in\* out\
unsign in\* out\

sign2 in\* out\ XXXXSSSSSSYY sig
verify2 in\* out\ sig

Если указано *ext*, то расширение файла после обработки меняется на
указанное.

При использовании подписи в отдельном файле, *sig* указывает расширение
этого файла.

В случае успешной обработки исходные файлы перемещаются в создаваемую
папку *in\ok\YYYYMMDD*, в случае любой ошибки - в *in\bad\YYYYMMDD*.
Это позволяет постоянно подкидывать новые файлы для обработки и не
Expand All @@ -51,7 +57,15 @@
В файле *_test.cmd* пример использования, где создается папка *test* с
тестовым файлом, а затем он подписывается в создаваемую папку *s*, затем
зашифровывается в *e*, расшифровывается в *d*, проверяется подпись в *v* и
снимается в *u*. Разумеется, предварительно надо задать идентификаторы в
снимается в *u*.

С подписью в отдельном файле пример подписывается в создаваемую папку *s2*,
затем проверяется в *v2*, а снимать уже отдельную подпись незачем.

Разумеется, предварительно надо задать идентификаторы в
*init.cmd*, иметь подготовленный общий справочник в *C:\Pub* и все эти
ключи, загруженные в память драйвера *asrkeyw* (ключевые носители после
этого не требуются).

[test]: ../../test
[pub]: ../../pub
6 changes: 6 additions & 0 deletions samples/VerbaTest/_test.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ echo. >>test\test.txt
if not exist s md s
call sign test\* s\ %D5%

if not exist s2 md s2
call sign2 test\* s\ %D5% sig

if not exist e md e
call encrypt s\* e\ %D1:~0,10% %TOFNS% vrb

Expand All @@ -18,5 +21,8 @@ call decrypt e\* d\ %D1:~0,4% txt
if not exist v md v
call verify d\* v\

if not exist v2 md v2
call verify2 s2\* v2\ sig

if not exist u md u
call unsign v\* u\
31 changes: 31 additions & 0 deletions samples/VerbaTest/sign2.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@echo off
rem sign2 in\* out\ XXXXSSSSSSYY sig

if not defined init call init

for %%f in (%1) do call :sign2_1 %%f %2%%~nf.%4 %3 %2
goto :eof

:sign2_1
set ok=%~dp1ok\%lymd%
set bad=%~dp1bad\%lymd%

set cmd=%VRB% s2 %1 %2 %Pub% %3
echo %cmd%
%cmd%
if errorlevel 1 (
call log S2 error %errorlevel% %1
if not exist %bad% md %bad%
move %1 %bad%\
) else if not exist %2 (
call log S2 bad %1
if not exist %bad% md %bad%
move %1 %bad%\
) else (
call log S2 %1
if not exist %ok% md %ok%
copy %1 %4
move %1 %ok%\
)
echo.
goto :eof
28 changes: 28 additions & 0 deletions samples/VerbaTest/verify2.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
@echo off
rem verify2 in\* out\ sig

if not defined init call init

for %%f in (%1) do call :verify2_1 %%f %%f.%3 %2
goto :eof

:verify2_1
set ok=%~dp1ok\%lymd%
set bad=%~dp1bad\%lymd%

set cmd=%VRB% v2 %1 %2 %Pub%
echo %cmd%
%cmd%
if errorlevel 1 (
call log V2 error %errorlevel% %1
if not exist %bad% md %bad%
move %1 %bad%\
) else (
copy %1 %3>nul
call log V2 %1
if not exist %ok% md %ok%
move %1 %ok%\
copy %2 %ok%\
)
echo.
goto :eof
25 changes: 17 additions & 8 deletions samples/cmd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,21 @@
Этот скрипт генерирует набор исполняемых утилит в создаваемой
папке *bin* с помощью системного компилятора *csc* из состава
установленных библиотек .NET.
Примеры этого есть в папке [test](../../test):
Примеры этого есть в папке [test]:

* ```csc.cmd``` - для .NET 3.5
* ```csc4.cmd``` - для .NET 4+

Для сборки не требуется ничего больше - даже не нужно полного
исходного кода [Verba.cs](../../verba/Verba.cs) - весь
необходимый для генерации утилит минимум кода содержится в
тексте самого *make.cmd* как скрипта - никаких подозрительных
побочных файлов.
исходного кода [Verba.cs] - весь необходимый для генерации утилит
минимум кода содержится в тексте самого *make.cmd* как скрипта -
никаких подозрительных побочных файлов.

## Общий справочник

Для выполнения данных утилит нужен общий справочник, для которого
не требуется переставлять ключи для каждой операции.
Подробнее о таком справочнике в [pub](../../pub).
Подробнее о таком справочнике в [pub].

## Настройки

Expand All @@ -37,6 +36,7 @@
set out=bin
set pub=c:\pub
set ka=206194104001
set sig=sig

set log1=logs\{0:yyyyMMdd}.log
set log2=P:\PTK PSD\LOG\test_{0:yyyyMMdd}.log
Expand All @@ -55,7 +55,12 @@
verify in\[*] out\
unsign in\[*] out\

Обязательные параметры:
sign2 in\[*] out\ [XXXXSSSSSSYY]
verify2 in\[*] out\

Последняя пара функция для операций с подписями в отдельных файлах.

### Обязательные параметры:

* *in\\* - папка исходных файлов.
* *\** - фильтр исходных файлов (опционально).
Expand All @@ -65,7 +70,7 @@
ее можно не указывать). Если при шифровании указан полный идентификатор
КА, то будет использовано 10 символов ключа шифрования.

Опциональные параметры:
### Опциональные параметры:

* *XXXSSSSSSYY* - идентификатор ключа КА (по умолчанию - своей
подписи, указанной в *make.cmd* при генерации).
Expand All @@ -80,3 +85,7 @@
Утилиты не возвращают никакого кода возврата во избежание необходимости
контроля встраивания. Весь результат - появление или отсутствие файла
в папке назначения, обработанного штатными функциями ядра.

[test]: ../../test
[pub]: ../../pub
[Verba.cs]: ../../verba/Verba.cs
Loading

0 comments on commit fa52e8b

Please sign in to comment.