GPLVote Sign Doc Direct API

Материал из Сервис Облачной Демократии
(Различия между версиями)
Перейти к: навигация, поиск
Строка 3: Строка 3:
 
В мобильном приложении встроена возможность взаимодействовать с сайтом клиента напрямую через URL в ссылках или QR-кодах. При этом приложению передается информация о прямых ссылках на сайт-клиент и взаимодействие происходит минуя прокси-сервера.
 
В мобильном приложении встроена возможность взаимодействовать с сайтом клиента напрямую через URL в ссылках или QR-кодах. При этом приложению передается информация о прямых ссылках на сайт-клиент и взаимодействие происходит минуя прокси-сервера.
  
=== Запрос на регистрацию ЭЦП на сайте клиента ===
+
=== Запрос на регистрацию подписи на сайте клиента ===
  
 
Для инициирования процедуры регистрации подписи на сайте клиента в приложение необходимо передать (например, с помощью QR-кода) следующий URL:
 
Для инициирования процедуры регистрации подписи на сайте клиента в приложение необходимо передать (например, с помощью QR-кода) следующий URL:
 
+
<pre>
 
  signreg://<домен сайта-клиента>/<путь регистрации подписи на сайте клиента>?code=<одноразовый код для регистрации>&site=<идентификатор сайта клиента>
 
  signreg://<домен сайта-клиента>/<путь регистрации подписи на сайте клиента>?code=<одноразовый код для регистрации>&site=<идентификатор сайта клиента>
 
+
</pre>
 
URL по которому приложение будет передавать регистрацию подписи, составляется в виде:
 
URL по которому приложение будет передавать регистрацию подписи, составляется в виде:
 
<pre>
 
<pre>
Строка 27: Строка 27:
 
   {
 
   {
 
     "status": 0
 
     "status": 0
 +
  }
 +
 +
=== Запрос на подписание документа ===
 +
 +
Для инициирования подписания документа в приложение необходимо передать (например, с помощью QR-кода) следующий URL:
 +
<pre>
 +
signdoc://<URL без схемы по которому можно получить содержимое документа для подписания>
 +
</pre>
 +
При получении данного URL, приложение подменяет схему на http и делает GET запрос по получившемуся URL и ожидает в ответе "content-type: application/json" и запрос на подписание в виде JSON в теле ответа.
 +
 +
Например, если исходный URL из QR кода будет вот таким:
 +
<pre>
 +
signdoc://client.site.ru/get_doc?id=TkhqUYuh
 +
</pre>
 +
тогда приложение будет пытаться получить документ для подписания по адресу
 +
<pre>
 +
http://client.site.ru/get_doc?id=TkhqUYuh
 +
</pre>
 +
 +
При этом, документ может быть представлен в двух видах - персонифицированном и открытом виде. В персонифицированном виде данные документа шифруются публичным ключем пользователя, для которого этот документ предназначен. В открытом виде данные не шифруются и в документе отсутствуют атрибуты принадлежности документа конкретному пользователю.
 +
 +
==== Персонифицированный запрос на подписание документа ====
 +
 +
  {
 +
    "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": "<данные документа в открытом виде>"
 
   }
 
   }

Версия 23:58, 24 января 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": "<данные документа в открытом виде>"
 }
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты