Робота з цифровою печаткою

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Основні сценарії

1.1. Підписання даних системним цифровим підписом (цифровою печаткою)

Діаграма послідовності накладання системного підпису:

Diagram

Обраховує значення хеша для даних що передані в сервіс з допомогою відповідної хеш функції та накладає цифрову печатку організації з міткою часу на отриманий хеш. Також добавляє до підпису цифровий сертифікат підпису.

Запит:

POST /api/eseal/sign --header 'X-Access-Token: token'

Тіло запиту:

{
  "data": "string"
}

Відповіді:

  • 200 OK Документ підписано

Тіло відповіді:

{
  "signature": "string"
}
  • 400 Bad request Невалідний запит

Тіло відповіді:

{
    "code": "string",
    "message": "string",
    "localizedMessage": "string"
}

1.2. Перевірка системної цифрової печатки та даних

Діаграма послідовності перевірки системного підпису:

Diagram

Ланцюг валідаційних перевірок реалізовано в наступних классах:

Diagram

Сервісом здійснюються наступні перевірки:

  • ЕЦП дійсний

  • ЕЦП містить мітку часу.

  • цілісність даних непорушена (Значення хеша з підпису відповідає хешу порахованому сервісом на основі отриманих даних)

  • документ був підписаний системним ключем (issuer та serial атрибути з ЕЦП містяться в списку дозволених системних цифрових печаток)

Запит:

POST /api/eseal/verify --header 'X-Access-Token: token'

Тіло запиту:

    {
        "signature": "string",
        "data": "string"
    }

Відповіді:

  • 200 OK Печатка валідна

Тіло відповіді:

{
    "isValid": true,
    "error": null
}
  • 200 OK Помилка перевірки печатки

Тіло відповіді:

{
    "isValid": false,
    "error": {
        "code": "ERROR_UNKNOWN_ESEAL",
        "message": "Signature key is not allowed",
        "localizedMessage": "Печатка не авторизована для накладання підпису"
    }
}
  • 400 Bad request Невалідний запит

Тіло відповіді:

{
    "code": "string",
    "message": "string",
    "localizedMessage": "string"
}