КріптоПро bat файл створення ЕЦП, блог доброго програміста

Сьогоднішню невелику запис я вирішив присвятити темі створення електронного цифрового підпису засобами криптопровайдера «КріптоПро». Йтиметься про Bat файлі, який можна буде використовувати для автоматизації підпису електронних документів.







Для того що б автоматизувати процес підписування електронних документів нам знадобиться:
1) Кріпто-ПРО CSP;
2) USB Ключ (наприклад рутокен), вставлений в USB порт;
3) Блокнот (Notepad.exe);
4) Встановлені сертифікати для Вашого ключа;

Каменем спотикання у всій цій історії є файл csptest.exe який знаходиться в директорії КріптоПро (за замовчуванням C: \ Program Files \ Crypto Pro \ CSP \ csptest.exe).

Відкриємо командний рядок і виконаємо команду:

Ми побачимо всі можливі параметри даного exe файлу.

Для того, щоб побачити запропонований параметри тієї чи іншої глобальної опції, досить викликати даний файл з цією опцією, наприклад

Таким чином, щоб підписати файл через cmd засобами csptest.exe потрібно викликати команду:

де:






-my - Вказує власника ключа;
-in - Вказує який файл потрібно підписувати. Якщо файл знаходиться не в папці з csptest то потрібно вказувати повний шлях .;
-out - Вказує ім'я файлу підпису;

Перевірити підпис можна на сайті Госулсуг за цим посиланням.

Більш за все. Якщо зараз завантажити даний файл на сайті держпослуги, то з'явиться помилка. Викликано це тим, що необхідна інформація про засвідчувальний центр. Так само не буде зайвою дата і час підпису документів. Для цього до нашої команди потрібно додати два параметри:

Якщо ж нам потрібен підпис в осоедіненном форматі, то додамо ще один параметр:

Примітка: Якщо підпис документа виконується з помилкою
Unable to open file
An error occurred in running the program.
.\ Signtsf.c: 321: Can not open input file.
Error number 0x2 (2).
Неможливо знайти вказаний файл.
при виклику, як в останньому прикладі, і Ви впевнені в правильності шляхів в параметрі -in і -out, спробуйте створити підпис по першому прикладу, а після виконати команду з повним набором параметрів.

Основну команду для підпису ми отримали. Тепер трохи спростимо процедуру. Зробимо bat файл, при запуску якого буде підписувати файл Secret.txt, що знаходиться в тойже папці що і bat файл. Відкриємо блокнот і запишемо Слуда код:

Натискаємо «Файл» -> «Зберегти як» -> ЗадаемІмя з .bat -> «Зберегти»
Собсвенно і все. Для довідки:
chcp тисячу двісті п'ятьдесят одна - Задає кодування для CMD. Необхідно для валидной обробки українських букв в коді;
set CurPath =% cd% - Зберігає шлях поточної директорії CMD в змінну CurPath;
cd - Задає поточний шлях CMD;
call - Запускає програму;