GPLVote Sign Doc Direct API

Материал из Сервис Облачной Демократии
(Различия между версиями)
Перейти к: навигация, поиск
Строка 70: Строка 70:
 
     "dec_data": "<данные документа в открытом виде>"
 
     "dec_data": "<данные документа в открытом виде>"
 
   }
 
   }
 +
 +
=== Список URL API для сайта клиента ===
 +
 +
# URL POST, по которому будет присылаться регистрация подписи
 +
# URL GET, по которому будет выдаваться документ, требующий подписания
 +
# URL POST, по которому будет отправляться подпись документа

Версия 00:01, 25 января 2015

Содержание

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

В мобильном приложении встроена возможность взаимодействовать с сайтом клиента напрямую через 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": "<данные документа в открытом виде>"
 }

Список URL API для сайта клиента

  1. URL POST, по которому будет присылаться регистрация подписи
  2. URL GET, по которому будет выдаваться документ, требующий подписания
  3. URL POST, по которому будет отправляться подпись документа
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты