GPLVote Sign Doc Direct API

Материал из Сервис Облачной Демократии
Перейти к: навигация, поиск

Содержание

Общее описание

В мобильном приложении встроена возможность взаимодействовать с сайтом клиента напрямую через URL в ссылках или QR-кодах. При этом приложению передается информация о прямых ссылках на сайт-клиент и взаимодействие происходит минуя прокси-сервера.

Запрос на регистрацию подписи на сайте клиента

Для инициирования процедуры регистрации подписи на сайте клиента в приложение необходимо передать (например, с помощью QR-кода) следующий URL:

 signreg://<домен сайта-клиента>/<путь регистрации подписи на сайте клиента>?code=<одноразовый код для регистрации>&site=<идентификатор сайта клиента>

URL по которому приложение будет передавать регистрацию подписи, составляется в виде:

 http://<домен сайта-клиента>/<путь регистрации подписи на сайте клиента>

По этому URL будет выполнен POST запрос с передачей в нем следующего документа о регистрации подписи в виде JSON документа:

 {
   "type": "REGISTER",
   "site": "<идентификатор сайта клиента>",
   "code": "<одноразовый код для регистрации подписи>",
   "public_key": "<публичный ключ пользователя в кодировке Base64 без переводов строк>",
   "sign": "<подпись строки одноразового кода секретным ключем пользователя в кодировке BASE64 без переводов строк>"
 }

При удачной обработке URL должен вернуть JSON ответ со статусом 0:

 {
   "status": 0
 }

Запрос на подписание документа

Для инициирования подписания документа в приложение необходимо передать (например, с помощью QR-кода) следующий URL:

 signdoc://<URL без схемы по которому можно получить содержимое документа для подписания>

При получении данного URL, приложение подменяет схему на http и делает GET запрос по получившемуся URL и ожидает в ответе "content-type: application/json" и запрос на подписание в виде JSON в теле ответа.

Например, если исходный URL из QR кода будет вот таким:

 signdoc://client.site.ru/get_doc?id=TkhqUYuh

тогда приложение будет пытаться получить документ для подписания по адресу

 http://client.site.ru/get_doc?id=TkhqUYuh

При этом, документ может быть представлен в двух видах - персонифицированном и открытом виде. В персонифицированном виде данные документа шифруются публичным ключем пользователя, для которого этот документ предназначен. В открытом виде данные не шифруются и в документе отсутствуют атрибуты принадлежности документа конкретному пользователю.

Персонифицированный запрос на подписание документа

 {
   "type": "SIGN_REQUEST",
   "site": "<идентификатор сайта клиента>",
   "doc_id": "<внутренний идентификатор документа на сайте клиента>",
   "template": "<шаблон для показа данных документа>",
   "sign_url": "<URL на сайте клиента, на который следует отправить подпись данного документа>",
   "user_key_id": "<идентификатор публичного ключа пользователя, которому предназначен данный документ>",
   "data": "<данные документа, зашифрованные публичным ключем пользователя, для которого предназначен документ>"
 }

Публичный запрос на подписание документа

 {
   "type": "SIGN_REQUEST",
   "site": "<идентификатор сайта клиента>",
   "doc_id": "<внутренний идентификатор документа на сайте клиента>",
   "template": "<шаблон для показа данных документа>",
   "sign_url": "<URL на сайте клиента, на который следует отправить подпись данного документа>",
   "dec_data": "<данные документа в открытом виде>"
 }
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты