Команда signAndEncrypt - Документация для КриптоАРМ 6
Перейти к содержанию

Команда signAndEncrypt

Запросы на подпись и шифрование документов, выполнение обратных операций

Команда signAndEncrypt (подпись и шифрование) используется для запроса на подпись документа или пакета документов. Может использоваться в качестве аутентификатора.

Выполнение операции требует действующей лицензии на КриптоАРМ.

Схема

Формат ссылки

Для выполнения команды signAndEncrypt должна быть сформирована ссылка вида:

cryptoarm://<command>/<URL>/?id=<id>
  • cryptoarm:// - зарегистрированный протокол

  • <command> - выполняемая команда

  • <URL> - ссылка на получение JSON с параметрами, нужными для выполнения команды

  • ?id=<id> - обязательный параметр. Идентификатор транзакции.

Пример:

cryptoarm://signAndEncrypt/https://example.com/json?id=2c48eb32-a0a8-405c-ade9-eed130605cba

Описание запросов и ответов

Все запросы между КриптоАРМ и сервером ДОЛЖНЫ соответствовать спецификации протокола JSON-RPC 2.0. В качестве транспорта используется HTTP. Общее описание указано в разделе Формат ссылки.

Получение параметров операции

После получения команды signAndEncrypt КриптоАРМ отправляет запрос на <URL> для получения параметров операции.

Формат запроса

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method signAndEncrypt.parameters Используемый метод. Всегда signAndEncrypt.parameters.
id Уникальный идентификатор Используется идентификатор, который указан в ссылке на операцию. Подробнее в разделе Формат ссылки
diagnostic IDiagnosticInformaton Диагностическая информация о рабочем месте

Пример:

Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "signAndEncrypt.parameters",
    "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
    "diagnostic": {
    }
}

Формат ответа

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
result ISignAndEncryptParameters Объект со сведениями о параметрах операции подписи
id Уникальный идентификатор Используется идентификатор, который указан в ссылке на операцию. Подробнее в разделе Формат ссылки
appName? string Необязательный параметр. Используется только для локального API. Если значение передано, то КриптоАРМ отобразит это название в окне подтверждения операции как название стороннего приложения.
apiKey? string Необязательный параметр. Используется только для локального API. Если значение передано, то КриптоАРМ отобразит это значение в окне подтверждения операции как проверочный код.

Пример:

HTTP/1.1 200 OK
Connection: close
Content-Length: ...
Content-Type: application/json
Date: Sat, 08 Jul 2020 12:04:08 GMT
{
    "jsonrpc": "2.0",
    "result": {
        "operation": [
            "SIGN",
            "ARCHIVE",
            "ENCRYPT"
        ],
        "props": {
            "headerText": "Подпись документов cryptoarm.ru",
            "license": "",
            "files": [{
                    "name": "file1.txt",
                    "url": "http://localhost:8080/public/files/file1.txt",
                    "id": 1,
                    "urlDetached": ""
                },
                {
                    "name": "file2.txt",
                    "url": "http://localhost:8080/public/files/file2.txt",
                    "id": 2,
                    "urlDetached": ""
                },
                {
                    "name": "file4.pdf",
                    "url": "http://localhost:8080/public/files/file4.pdf",
                    "id": 4,
                    "urlDetached": ""
                }
            ],
            "extra": {
                "token": "9c7101f7-9c47-4481-b4da-a6a497abde08",
                "signType": "1",
                "signStandart": "1"
            },
            "uploader": "http://localhost:8080/upload"
        }
    },
    "id": "2c48eb32-a0a8-405c-ade9-eed130605cba"
}

Отправка результата прямых операций

После того, как пользователь выберет нужные сертификаты КриптоАРМ выполняет операцию. Полученные файлы отправляется POST-запросом. Используются нотификации (уведомления), для которых не требуется ответ сервера.

Формат запроса

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method signAndEncrypt.outDirectResults Используемый метод. Всегда signAndEncrypt.outDirectResults.
params Объект типа IDirectResults Сведения о результатах прямой операции

Пример:

Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "signAndEncrypt.outDirectResults",
    "params": {
        "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
        "directResults": [
          {
            "id": 2
        "out": "MIIWgQYJKoZIhvcNAQcCoIIWcjCCFm4CA…cN/aHmA="
          }
        ]
    }
}

Отправка результата обратных операций

Результаты отправляется POST-запросом. Используются нотификации (уведомления), для которых не требуется ответ сервера.

Формат запроса

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method signAndEncrypt.outReverseResults Используемый метод. Всегда signAndEncrypt.outReverseResults.
params Объект типа IReverseResults Сведения о результатах обратной операции

Пример:

Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "signAndEncrypt.outReverseResults",
    "params": {
        "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
        "reverseResults": [
          {
            "out": "MIIWgQYJKoZIhvcNAQcCoIIWcjCCFm4CA…cN/aHmA="
          }
        ]
    }
}

Отправка результата проверки подписи

Результаты проверки подписи отправляется POST запросом. Используются нотификации (уведомления), для которых не требуется ответ сервера.

Формат запроса

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method signAndEncrypt.verifySignResults Используемый метод. Всегда signAndEncrypt.verifySignResults.
params Объект типа IVerifySignResults Сведения о проверке подписи

Пример:

Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "signAndEncrypt.verifySignResults",
    "params": {
        "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
        "verifyResults": [
          {
            "id": 2,
            "status": false,
            "signers": [
              {
                "hash": "MIIFFDCCBMGgAwIBAgIQTm1HiybyfWV",
                "issuerFriendlyName": "Минкомсвязь России",
                "issuerName": "Минкомсвязь России",
                "subjectFriendlyName ": "Минкомсвязь России",
                "subjectName": "Минкомсвязь России",
                "status": true
              }
             ]
          }
        ]
    }
}

Интерфейс ISignAndEncryptParameters

Объекты данного типа описывают вид операции и её параметры.

Свойство Тип Описание
operation string[] Тип операции. Доступные значения типов (комбинировать различные типы нельзя): ISignAndEncryptOperationDirect, ISignAndEncryptOperationReverse, ISignAndEncryptOperationVerify
props ISignAndEncryptOperationProps Параметры операции

Тип ISignAndEncryptOperationDirect

Возможные прямые операции.

Значение Описание
SIGN Подпись
ARCHIVE Архивирование
ENCRYPT Шифрование

Тип ISignAndEncryptOperationReverse

Возможные обратные операции.

Значение Описание
UNSIGN Снятие подписи
DECRYPT Расшифрование
UNZIP Разархивирование

Тип ISignAndEncryptOperationVerify

Проверка подписи.

Значение Описание
VERIFYSIGN Проверка подписи

Интерфейс ISignAndEncryptOperationProps

Интерфейс ISignAndEncryptOperationProps описывает параметры операции.

Свойство Тип Описание
headerText? string Необязательный параметр. Используется для отображения в заголовке окна. Максимальная длина - 40 символов.
descriptionText? string Необязательный параметр. Используется для отображения в сведениях об операции. Максимальная длина - 120 символов.
license? string Необязательное свойство. Содержит временную лицензию, которая будет использоваться для выполнения операции в КриптоАРМ.
uploader string Ссылка, на которую будут отправлены или сохранены результаты операции. Поддерживает протоколы https:// и file://
files Массив типа IFile[] Массив файлов на подпись. Если не передан, то должен быть передан параметр archive
archive IFile[] Архив файлов на подпись. Распаковываются после получения. Параметр может использоваться вместо files. Перед отправкой результатов операции на сервер, они будут упакованы в архив.
extra Объект типа IExtra Настройки операции
localResultParams Объект типа ILocalResultParams Необязательное свойство. Используется только для локального API. Указывает пути для сохранения результатов.

Интерфейс IFile

Интерфейс IFile описывает файлы и ссылки на них.

Свойство Тип Описание
name string Имя файла (с расширением)
url string Ссылка на скачивание файла
id string Уникальный идентификатор файла
urlDetached? string Необязательный параметр. Используется для откреплённой подписи.

Интерфейс IExtra

Интерфейс IExtra описывает настройки операции.

Если параметр не задан, то пользователю доступен выбор из всех доступных в приложении значений.

Свойство Тип Описание
signType? number Необязательный параметр. Возможные значения: 0 - присоединенная подпись, 1 - отсоединённая подпись.
signStandart? number Необязательный параметр. Стандарт подписи. Возможные значения: 0 - CMS, 1 - CAdES-X Long Type 1, 2 - CAdES-T, 3 - CAdES-A.
signEncoding? number Необязательный параметр. Кодировка. Возможные значения: 0 – BASE-64, 1 – DER.
timestampOnSign? string Необязательный параметр. Штамп времени на подпись. Возможные значения: True - будет добавлен штамп времени, False – не будет добавлен штамп времени.
timestampOnData? string Необязательный параметр. Штамп времени на подписываема данные. Возможные значения: True - будет добавлен штамп времени, False – не будет добавлен штамп времени.
encryptEncoding? number Необязательный параметр. Кодировка. Возможные значения: 0 – BASE-64, 1 – DER.
encryptAlgorithm? number Необязательный параметр. Алгоритм шифрования. Возможные значения: 0 – ГОСТ 28147-89, 1 – ГОСТ 34.12-2015 Магма, 2 – ГОСТ 34.12-2015 Кузнечик.
token? string Необязательный параметр. Токен, который будет использоваться при скачивании файлов с сервиса (параметр запроса).
tspURL? string Необязательный параметр. Адрес службы штампов времени.
ocspURL? string Необязательный параметр. Адрес службы актуальных статусов.
encryptCertificates? string[] Необязательный параметр. Сертификаты шифрования.
signCertificate? Объект типа: {«x509»:string} Необязательный параметр. Сертификат подписчика или параметры для поиска сертификата подписчика.
signatureExtension? string Необязательный параметр. Расширение для подписанного файла.
separateArchivesForSignResults? boolean Необязательный параметр. Создавать пакет (архив) для каждого подписываемого файла.
isAddStampToPdf? boolean Необязательный параметр. Добавить печатную форму для PDF-файлов.
signStampAppearance? ISignStampAppearance Необязательный параметр. Параметры штампа PDF.
signStamp? IPdfMarkedArea Необязательный параметр. Расположение и размер области под штамп.

Интерфейс IDirectResults

Объекты данного типа описывают результаты прямой операции.

Свойство Тип Описание
id string Используется идентификатор, который указан в ссылке на операцию (Формат ссылки).
status string Статус выполнения операции. В случае успеха «Completed».
directResults IDirectResultOut[] Массив результатов прямых операций

Интерфейс IDirectResultOut

Объекты данного типа содержат результаты прямой операции для файла.

Свойство Тип Описание
id string Необязательный параметр. Идентификатор исходного файла. Если включено архивирование, то данный параметр не используется, т.к. выходной файл один для всех исходных.
out string Результат операции в BASE-64
signers? ISignerStatus[] Необязательный параметр. Сведения о подписчиках.
signValid? boolean Необязательный параметр. Общий статус подписи. Учитывается статус всех подписей файла.

Интерфейс IReverseResults

Объекты данного типа описывают результаты обратной операции.

Свойство Тип Описание
id string Используется идентификатор, который указан в ссылке на операцию (Формат ссылки).
reverseResults IReverseResultOut[] Массив результатов обратных операций

Интерфейс IReverseResultOut

Объекты данного типа описывают результаты обратной операции.

Свойство Тип Описание
id string Необязательный параметр. Идентификатор исходного файла.
out string Результат операции в BASE-64

Интерфейс IVerifySignResults

Объекты данного типа описывают результаты проверки подписи.

Свойство Тип Описание
id string Используется идентификатор, который указан в ссылке на операцию (Формат ссылки).
status string Статус выполнения операции. В случае успеха « Completed».
verifySignResults IVerifySignResult[] Массив результатов проверки

Интерфейс IVerifySignResult

Объекты данного типа описывают результаты проверки подписи.

Свойство Тип Описание
id string Идентификатор исходного файла
signValid boolean Общий статус проверки подписи
signers ISignerStatus[] Информация о подписчиках документа

Интерфейс ISignerStatus

Объекты данного типа описывают сведения о подписчиках.

Свойство Тип Описание
signerCertificate ICertificateInfo Сведения о сертификате подписчика
isValid boolean Статус подписи
signingTime string Время подписи

Интерфейс ILocalResultParams

Объекты данного типа используется только в параметрах локального API.

Содержат пути для сохранения результатов операций.

Свойство Тип Описание
savePath? string Необязательный параметр. Путь для сохранения результатов операции.
saveResultsSeparately? boolean Необязательный параметр. Определяет, сохранять ли результаты по каждому файлу в отдельный файл или сохранять в один JSON, один файл.

Интерфейс ISignStampAppearance

Интерфейс ISignStampAppearance описывает параметры для штампа PDF.

Свойство Тип Описание
mockupSettings IMockupSettings Настройки внешнего вида штампа подписи
requisitesSettings IRequisitesSettings Настройки содержимого штампа (реквизиты)
pageSelection string Определяет, на какой странице или страницах будет отображаться штамп. Возможные значения: «all» – штамп на всех страницах, «last» – штамп на последней странице, «some» – штамп на некоторых страницах.
pageNumbers? string Необязательный параметр. Страница или диапазон страниц. Пример: «3» или «1-7».

Интерфейс IMockupSettings

Интерфейс IMockupSettings описывает параметры внешнего вида штампа.

Свойство Тип Описание
position string Положение штампа внутри области. Возможные значения: «fitArea» – вписать, «actualSize» – реальный размер, «fitMockup» – подогнать область под макет.
addBackground boolean Определяет, будет ли добавлен фон на область
addBorders boolean Определяет, будет ли добавлена граница на область
logotype? boolean Необязательный параметр. Использовать или нет логотип для штампа.

Интерфейс IRequisitesSettings

Интерфейс IRequisitesSettings описывает содержимое (реквизиты) штампа подписи.

Свойство Тип Описание
position string Реквизиты в штампе. Возможные значения: «default» – штамп без дополнительных областей под реквизиты, «left» – штамп с дополнительными реквизитами слева, «right» – штамп с дополнительными реквизитами справа, «leftAndRight» – штамп с дополнительными реквизитами слева и справа.
centralDisplayType string Внешний вид штампа. Определяет доступность настроек дополнительных реквизитов. Возможные значения: «byGost» – внешний вид по ГОСТ, «arbitrary» – произвольно.
central IPdfCertRequisite[] Массив значений реквизитов, для добавления в центральную часть штампа
left IPdfCertRequisite[] Массив значений реквизитов, для добавления в левую часть штампа
right IPdfCertRequisite[] Массив значений реквизитов, для добавления в правую часть штампа

Интерфейс IPdfCertRequisite

Интерфейс IPdfCertRequisite описывает свойства для реквизита штампа.

Свойство Тип Описание
title string Заголовок
dataKey? string Необязательный параметр. Указывает название поля сертификата, значение которого будет использовано. Если в сертификате нет указанного поля, то значение будет «Не указано».
isEditable boolean Указывает, доступно ли редактирование поля пользователем. Если false, то значение должно быть передано в поле editedValue или взято из сертификата по значению dataKey.
editedValue? string Необязательный параметр. Значение реквизита, которое будет использовано, если не указано свойство dataKey.
editedValueCharLimit? number Необязательный параметр. Определяет максимальную длину строки.

Интерфейс IPdfMarkedArea

Интерфейс IPdfMarkedArea описывает параметры для расположения области штампа PDF (координаты и размеры).

Свойство Тип Описание
height number Высота области под штамп
width number Ширина области под штамп
horizontalPadding number Отступ от левого края документа
verticalPadding number Отступ от правого края документа

Для повышения удобства работы и хранения данных веб-сайт CRYPTOARM.RU использует файлы COOKIE. Продолжая работу с веб-сайтом, Вы даете свое согласие на работу с этими файлами.