Электронно-цифровая подпись¶
Описание¶
Электронно-цифровая подпись (ЭЦП) - это реквизит электронного документа, предназначенный для защиты данного электронного документа от подделки, полученный в результате криптографического преобразования информации с использованием закрытого ключа электронной цифровой подписи. Он позволяет идентифицировать владельца сертификата ключа подписи и установить отсутствие искажения информации в электронном документе.
Цель использования¶
В приложении ЭЦП может быть нужна для:
- Проверки целостности данных
- Определения авторства данных
Существует три вида электронной цифровой подписи, которые отличаются по своему применению:
- Простая электронно-цифровая подпись
- для определения авторства данных
- создается с использованием кодов, паролей или иных средств
- Усиленная неквалифицированная электронно-цифровая подпись
- для проверки целостности данных
- для определения авторства данных
- создается с использованием средств электронной подписи
- Усиленная квалифицированная электронно-цифровая подпись
- для проверки целостности данных
- для определения авторства данных
- для создания и проверки электронной подписи используются средства электронной подписи, получившие подтверждение соответствия требованиям законодательства
Специфика работы¶
Работает утилита ЭЦП на основе КриптоПро, поэтому он должен быть установлен на одном компьютере:
- ставим крипто про
- ставим плагин
- для тестирования, выпускаем сертификат
Реализация¶
ЭЦП можно отнести к утилитам для приложения, так как основная ее реализация находится в приложении. Обычно реализация ЭЦП находиться в папке приложения lib/digest
(на примере приложения project-management):
lib/digest/digestData.js
- проверка при загрузке формы объекта на необходимость в электронной подписи (_applicable) и процесс подписи при выполнении перехода БП (_process)lib/digest/signSaver.js
- прикрепление подписи к объекту
Для того, чтобы статус ЭП запрашивался/отображался, для registry добавляем в deploy
настройку signedClasses.
Пример¶
"modules": {
"registry": {
"globals": {
"signedClasses": [
"class@application"
],
...
В БП workflows/indicatorValueBasic.wf.json
добавляем переход со свойством "signBefore": true
.
Пример¶
{
"name": "needAppTrs_sign",
"caption": "На утверждение",
"startState": "edit",
"finishState": "onapp",
"signBefore": true,
"signAfter": false,
"roles": [],
"assignments": [
{
"key": "state",
"value": "onapp"
}
],
"conditions": []
}