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": "<данные документа в открытом виде>" }