Функція signature_details()
1. Опис
Функція signature_details(String data, SignFormat container): SignatureInfoDto
використовується для отримання деталей підпису з підписаних даних. Ця функція приймає дані у форматі Base64 та тип контейнера підпису, і повертає об’єкт типу SignatureInfoDto
, що містить інформацію про підписантів.
2. Параметри
Аргумент |
Опис |
|
Дані, що включають підпис у форматі Base64. |
|
Тип контейнера підпису. |
3. Що повертає
Ця функція повертає об’єкт типу SignatureInfoDto
, що містить інформацію про підписантів.
Поле |
Опис |
|
Список всіх деталей підпису. |
|
Деталі останнього підпису. |
4. Алгоритм роботи
Функція працює за таким алгоритмом:
-
Приймає дані, що включають підпис у форматі Base64, та тип контейнера підпису.
-
Виконує запит до сервісу цифрового підпису для отримання деталей підпису.
-
Повертає об’єкт типу
SignatureInfoDto
, що містить список всіх деталей підпису та деталі останнього підпису.
5. Методи взаємодії
Функція надає наступні методи:
Метод |
Опис |
|
Повертає список всіх деталей підпису. |
|
Повертає деталі останнього підпису. |
6. Приклади використання
Цей розділ демонструє приклади використання JUEL-функції у Groovy-скриптах бізнес-процесу.
Змоделюйте Script Task та використайте скрипт, що збиратиме інформацію про підписантів отриманих файлів та виконуватиме перевірку на збіги персональних даних. Використайте у скрипті JUEL-функцію signature_details()
.
Скрипт отримання деталей цифрового підпису
var asicSignInfo = signature_details(animalResponse.prop('photos').value(),
validationAsicResult.container).getSignInfo()
var cadesSignInfo = signature_details(animalResponse.prop('mainPhoto').value(),
validationCadesResult.container).getSignInfo()
var isEqualFullName = asicSignInfo.getSubjFullName()
.equalsIgnoreCase(cadesSignInfo.getSubjFullName())
def signerPayload = S([:], 'application/json')
signerPayload.prop('fullName', cadesSignInfo.getSubjFullName())
signerPayload.prop('drfo', cadesSignInfo.getSubjDRFOCode())
signerPayload.prop('edrpou', cadesSignInfo.getSubjEDRPOUCode())
set_transient_variable('isEqualFullName', isEqualFullName)
set_transient_variable('signerPayload', signerPayload)
set_variable('validationCadesRes', validationCadesResult)
set_variable('validationAsicRes', validationAsicResult)
Поданий скрипт спрямований на роботу з деталями цифрового підпису і робить наступне:
-
Отримує деталі цифрових підписів для фотографій тварини.
-
Порівнює повні імена осіб, які підписали обидва документи.
-
Формує JSON-об’єкт з деталями підпису.
-
Зберігає отримані дані в змінних для подальшого використання.
Функція signature_details(…)
приймає два аргументи: контент, що підписується, та контейнер підпису. Вона повертає деталі про підпис (як про особу, яка підписала, так і технічні деталі підпису).
Розглянемо скрипт докладно:
-
Використання функції
signature_details(…)
:-
asicSignInfo:
var asicSignInfo = signature_details(animalResponse.prop('photos').value(), validationAsicResult.container).getSignInfo()
Функція
signature_details(…)
приймає два аргументи: контент для підпису (у цьому випадку — це фотографії тварини) та контейнер підпису. Ця функція повертає деталі про цифровий підписASIC
. Після цього за допомогою методу.getSignInfo()
ми отримуємо інформацію про підпис. -
cadesSignInfo:
var cadesSignInfo = signature_details(animalResponse.prop('mainPhoto').value(), validationCadesResult.container).getSignInfo()
Аналогічно попередньому пункту, але тут ми працюємо з основною фотографією тварини та контейнером підпису
CADES
.
Функція signature_details(…)
приймає лише контейнериASIC
таCAdES
. -
-
Порівняння імен у підписах:
var isEqualFullName = asicSignInfo.getSubjFullName() .equalsIgnoreCase(cadesSignInfo.getSubjFullName())
Скрипт порівнює повні імена суб’єктів (людей, які підписали документи) в обох підписах (
ASIC
таCADES
) і перевіряє, чи вони збігаються. Результат порівняння зберігається у зміннійisEqualFullName
. -
Формування JSON-об’єкта з деталями підпису:
def signerPayload = S([:], 'application/json') signerPayload.prop('fullName', cadesSignInfo.getSubjFullName()) signerPayload.prop('drfo', cadesSignInfo.getSubjDRFOCode()) signerPayload.prop('edrpou', cadesSignInfo.getSubjEDRPOUCode())
Тут ми створюємо порожній JSON-об’єкт (
signerPayload
) та наповнюємо його даними з підписуCADES
: повне ім’я, кодDRFO
та кодEDRPOU
. -
Збереження змінних:
set_transient_variable('isEqualFullName', isEqualFullName) set_transient_variable('signerPayload', signerPayload) set_variable('validationCadesRes', validationCadesResult) set_variable('validationAsicRes', validationAsicResult)
Результати обробки зберігаються у змінних, які будуть доступні для подальшого використання в бізнес-процесі.
Детальніше з використанням функції у бізнес-процесі ви можете ознайомитися на сторінці Перевірка підписаних даних, отриманих зі сторонньої системи: валідація КЕП та ідентифікація підписантів у файлах ASICS/CADES. |