Робота з цифровим підписом
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Основні сценарії
1.1. Перевірка цифрового підпису накладеного чиновником
Діаграма послідовності перевірки підпису:
Ланцюг валідаційних перевірок реалізовано в наступних классах:
Сервісом здійснюються наступні перевірки підпису чиновника:
-
ЕЦП дійсний
-
ЕЦП містить мітку часу
-
різниця в часі між моментом накладання підпису та поточним часом не перевищує значення заданого в timeout-ms параметрі, за замовчуванням 2 хвилини (120 000 ms)
-
цілісність даних непорушена (Значення хеша з підпису відповідає хешу порахованому сервісом на основі отриманих даних)
-
документ був підписаний ключем, який належить автентифікованому користувачу що його використовує. Дані користувача з ЕЦП відповідають даним в JWT токені доступу та містять ПІБ, РНОКПП, ЄДРПОУ.
Запит:
POST /api/esignature/officer/verify --header 'X-Access-Token: token'
Тіло запиту:
{
"signature": "string",
"data": "string"
}
Відповіді:
-
200 OK Підпис валідний
Тіло відповіді:
{
"isValid": true,
"error": null
}
-
200 OK Помилка перевірки підпису
Тіло відповіді:
{
"isValid": false,
"error": {
"code": "ERROR_EMPTY_EDRPOU",
"message": "Signature does not contain EDRPOU",
"localizedMessage": "Підпис не містить ЄДРПОУ код"
}
}
-
400 Bad request Невалідний запит
Тіло відповіді:
{
"code": "string",
"message": "string",
"localizedMessage": "string"
}
1.2. Перевірка цифрового підпису накладеного громадянином
Діаграма послідовності перевірки підпису:
Ланцюг валідаційних перевірок реалізовано в наступних классах:
Сервісом здійснюються наступні перевірки підпису громадянина:
-
ЕЦП дійсний
-
ЕЦП містить мітку часу
-
ЕЦП належить фізичній особі - містить ПІБ і РНОКПП та не містить ЄДРПОУ
-
JWT токен належить фізичній особі, містить ПІБ і РНОКПП та не містить ЄДРПОУ
-
різниця в часі між моментом накладання підпису та поточним часом не перевищує значення заданого в timeout-ms параметрі, за замовчуванням 2 хвилини (120 000 ms)
-
цілісність даних непорушена (Значення хеша з підпису відповідає хешу порахованому сервісом на основі отриманих даних)
-
документ був підписаний ключем, який належить автентифікованому користувачу що його використовує (дані користувача з ЕЦП відповідають даним в JWT токені доступу)
Запит:
POST /api/esignature/citizen/verify --header 'X-Access-Token: token'
Тіло запиту:
{
"allowedSubjects": ["CITIZEN"],
"signature": "string",
"data": "string"
}
allowedSubjects - пакет валідаційних правил для перевірки підпису, може містити [ CITIZEN, ENTREPRENEUR, LEGAL ]. У разі використання декількох правил підпис є валідним, якщо пройшла хоч одна з перевірок. В разі непрохдження перевірок по жодному з пакетів, повертається перша знайдена помилка. Перевірка для ENTREPRENEUR та LEGAL відбувається за допомогою валідатора того ж що й для чиновника.
Відповіді:
-
200 OK Підпис валідний
Тіло відповіді:
{
"isValid": true,
"error": null
}
-
200 OK Помилка перевірки підпису
Тіло відповіді:
{
"isValid": false,
"error": {
"code": "ERROR_SIGNATURE_NAME_MISMATCH",
"message": "Signature and current user full name mismatch",
"localizedMessage": "ПІБ підпису та користувача відрізняються"
}
}
-
400 Bad request Невалідний запит
Тіло відповіді:
{
"code": "string",
"message": "string",
"localizedMessage": "string"
}
1.3. Отримання данних про власника підпису
Отримання інформації, ким було накладено підпис відбувається шляхом перевірки чинності підпису з урахуванням дозволеного проміжку часу заданого в sign.auth.timeout-ms параметрі, за замовчуванням 1 хвилина (60 000 ms) Запит:
POST /api/esignature/owner --header 'X-Access-Token: token'
Тіло запиту:
{
"signature": "string",
"data": "string"
}
Відповіді:
-
200 OK Підпис перевірено та отримано дані про підписуючого
Тіло відповіді:
{
"fullName": "string",
"drfo": "string",
"edrpou": "string"
}