NEW (ще не реалізовано)

Підписання документа (Створення ЕЦП)

ЕЦП накладається поза системою. Сервіс, за допомогою якого є можливість підписати документ залишається на розсуд користувача. 

Наприклад, ЕЦП є можливість накласти за допомогою сервісу ДІЯ https://sign.diia.gov.ua/

Інструкція "Як це зробити" тут


Завантаження в Документ.Сервіс

Вже сформований файл ЕЦП завантажується окремим файлом в Документ.Сервіс за стандартною логікою "Завантаження документа в Документ.Сервіс"

Найчастіше вживаний тип розширення файлу .p7s, але це може бути файл з іншим розширенням.

Ознака "публічності" документа (scope: public/private) вказується на етапі завантаження файла в Документ.Сервіс.

  • на ЦБД немає валідації на те, щоб "публічність" документа та його ЕЦП була однаковою, але бажано завантажувати саме так: якщо основний документ є private, то його ЕЦП також має бути private

Завантаживши файл ЕЦП у Документ.Сервіс користувач отримує token завантаженого документа (jwt).


Додавання до документу файлу з ЕЦП

Додати документ ЕЦП має бути можливість до будь-якого документа будь-якого Обʼєкта ЦБД, де це передбачено ТЗ. Якщо у сутності є документи, то до кожного документа має бути можливість додати ЕЦП (згідно статусів\періодів Обʼєкта)

Одразу при публікації в ЦБД Обʼєкта

При публікації Обʼєкта в ЦБД є можливість одразу надсилати документ із вкладеним файлом ЕЦП використовуючи POST запит створення відповідного Обʼєкта.

Модель документа із вкладеним документом ЕЦП виглядає наступним чином:

{
     "documentType": "illustration",
     "_ds_scope": "public",
     "format": "image/jpeg",
     "description": {"uk_UA": "Илюстрація опис[test]"},
     "index": 0,
     "dateModified": "2023-01-01T01:05:36.910000Z",
     "title": {"uk_UA": "Ілюстрація[test]"},
     "url": "https://procedure-dev.prozorro.sale/api/documents/public/f0b8084e8c1e4779bac0d9b7807fe945",
     "datePublished": "2023-01-01T01:05:36.910000Z",
     "id": "e1419dd9bbb546db8f34661a31920aa9",
     "hash": "md5:3f88d7127d67da040d400c6ea9f714eb",
     "documentOf": "auction",
     "_ds_id": "f0b8084e8c1e4779bac0d9b7807fe945",
     "digitalSignature": {
        "documentType": "digitalSignature",
        "_ds_scope": "public",
        "format": "pkcs/ps7",
        "description": {"uk_UA": "ЕЦП підпис[test]"},
        "dateModified": "2023-01-01T01:05:36.910000Z",
        "title": {"uk_UA": "ЕЦП підпис[test]"},
        "url": "https://procedure-dev.prozorro.sale/api/documents/public/f0b8084e8c1e4779bac0d9b7807fe945",
        "datePublished": "2023-01-01T01:05:36.910000Z",
        "id": "e1419dd9bbb546db8f34661a31920aa9",
        "hash": "md5:3f88d7127d67da040d400c6ea9f714eb",
        "_ds_id": "f0b8084e8c1e4779bac0d9b7807fe945"
     }
}


Тобто, документ з documentType: "digitalSignature" є вкладеним у документ до якого відноситься.

Додавання документа ЕЦП до вже існуючого документа Обʼєкта

Окремий endpoint (деталі нижче) дозволяє додати до документа Обʼєкта документ ЕЦП.

Використовується для ситуації, коли Обʼєкт вже опубліковано і протягом періода редагування Обʼєкта необхідно додати документ ЕЦП, який має бути обовʼязково вкладеною сутністью існуючого документа.



До одного документа - один ЕЦП!

Додавання ЕЦП до документа - необовʼязкова дія. Обовʼязковість зазначена з нормативній документації і в ТЗ, в тому випадку, якщо цього потребує нормативка.


Endpoint

До всіх груп endpoints по роботі з документами додається окремий endpoint для роботи з ЕЦП.

Приклади:

*./documents/{doc_id}/digitalSignature - GET - отримати ЕЦП
*./documents/{doc_id}/digitalSignature - POST - завантажити ЕЦП
*./documents/{doc_id}/digitalSignature - PATCH - замінити ЕЦП
*./documents/{doc_id}/digitalSignature - DELETE - видалити ЕЦП

Наприклад *./documents/{doc_id}/digitalSignature - GET повертає ЕЦП для документа без основного документу
{
     "documentType": "digitalSignature",
     "_ds_scope": "public",
     "format": "pkcs/ps7",
     "description": {"uk_UA": "ЕЦП підпис[test]"},
     "dateModified": "2023-01-01T01:05:36.910000Z",
     "title": {"uk_UA": "ЕЦП підпис[test]"},
     "url": "https://procedure-dev.prozorro.sale/api/documents/public/f0b8084e8c1e4779bac0d9b7807fe945",
     "datePublished": "2023-01-01T01:05:36.910000Z",
     "id": "e1419dd9bbb546db8f34661a31920aa9",
     "hash": "md5:3f88d7127d67da040d400c6ea9f714eb",
     "_ds_id": "f0b8084e8c1e4779bac0d9b7807fe945"
}


Відповідно, є можливість завантажувати до документу підпис окремо або одразу документ з підписом при публікації Обʼєкта.

Міграція


Буде реалізована Міграція існуючих документів на стороні ЦБД.
Особливості міграції:

Наразі, документ ЕЦП у relatedDocument може мати ID файла у Документ.Сервісі (_ds_id) АБО ID документа у Обʼєкті (id)

При міграції існуючих документів ЕЦП необхідно дивитись на ID, що вказана у relatedDocument:

  • якщо в Обʼєкті є декілька документів з одним _ds_id, і у документі ЕЦП relatedDocument вказано цей _ds_id, то підпис буде додано до кожного такого документа
  • якщо в Обʼєкті є один документ і декілька ЕЦП у яких в обох relatedDocument вказано _ds_id цього документа, то ... (!!!) брати тільки один у якого dateModified ближча до currentDate ("найсвіжіший")
    (приклад)
  • є приклади, де документ ЕЦП привʼязаний до іншого документа ЕЦП (!!!) В такому випадку ЕЦП, який привʼязаний до іншого ЕЦП буде видалено

Історія змін документів

При заміні документа (PATCH) його попередня версія зберігається в .../{{object_id}}/documents/history

Залежний (вкладений) ЕЦП також буде присутній в тій самій структурі в history, і якщо для нової версії документа при оновленні НЕ додали ЕЦП, то його, відповідно, не буде в новій версії документа (вкладений ЕЦП разом з залежним "старим" документом потрапляє в history)

Історію змін конкретного документа ЕЦП має бути можливість побачити тільки переглядаючи Історію "бітьківського" документа.




OLD

Публікація документа digitalSignature в Документ Сервіс не відрізняється від завантаження звичайного документа в Документ Сервіс.

Тобто, публікувати digitalSignature в Документ Сервіс треба БЕЗ привʼязки до якогось певного документа.

АЛЕ!

Коли публікується Процедура (чи інший Обʼєкт) з документом digitalSignature, то в API запиті на публікацію Процедури необхідно для документа digitalSignature вказувати relatedDocument.

Треба враховувати, що це вже не "публікація документа в Документ.Сервіс", а "публікація Процедури(Обʼєкта) з попередньо завантаженим в Документ.Сервіс документом digitalSignature".

Процедури:

Всі


Додавання попередньо завантаженого в Документ Сервіс документу digitalSignature до Процедури:

ХтоОрганізатор або Учасник 

Передумови

  • В користувача наявний дійсьний токен доступу (Токен Майданчика)
  • В DS завантажений документ до якого необхідно додати ЕЦП
Дії
  • Завантажує файл документу
  • Вказує тип документу документу documentType == digitalSignature
  • Вказує id документу до якого завантажується цифровий підпис
    • При створенні Процедури в relatedDocument для ЕЦП можна вказати _ds_id документа, до якого необхідно додати ЕЦП
    • Якщо Процедура вже існуюча, то в relatedDocuments можна вказати id документа Процедури

Запит:

При публікації Процедури: POST {{baseUrl}}/api/procedures

Додати ЕЦП до існуючого документа існуючої Процедури: POST {{baseUrl}}/api/procedures/{{procedure_id}}/documents?acc_token={{procedure_acc_token}}

Валідації:


Результат:

  • ЦБД вказує тип приватності документу scope (public або private) той, який задав користувач
  • ЦБД надсилає користувачеві токен доступу до документа (jwt)



  • No labels

3 Comments

  1. Приватність ЕЦП завжди співпадає з приватністю документа до якого він публікується - повинна співпадати

  2. До публічної іллюстрації завантажив 2 цифрових підписа (публічний + приватний)

    До приватного цифрового підписа завантажив публічний цифровий підпис