Show / Hide Table of Contents

    Потоковая обработка

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

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

    Сервис Подписи поддерживает выполнение следующих операций в потоковом режиме:

    Операция Метод
    Подпись /documents
    Хэширование /documents/hash
    Примечание

    Выполнение операций требует аутентификации пользователя. Поточное хэширование документа без аутентификации возможно на сервисе DSS Lite - конечная точка /hash.

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

    Для того чтобы передать запрос на выполнение операции в потоковом режиме клиентское приложение должно сформировать следующий HTTP запрос:

    POST /SignServer/rest/api/documents HTTP/1.1
    CPDSS-OPERATION-PARAMS: eyJTa...
    Content-Type: application/octet-string
    Authorization: Bearer eyJ0eXA...
    Host: dss.cryptopro.ru
    

    В отличие от обычного режима передачи данных, в потоковом режиме содержимое обрабатываемого документа передаётся в теле запроса, а параметры операции - в заголовке CPDSS-OPERATION-PARAMS. Тип содержимого при этом должен быть application/octet-string (можно не указывать).

    Формирование заголовка CPDSS-OPERATION-PARAMS

    Заголовок CPDSS-OPERATION-PARAMS в качестве значения содержит параметры операции (то есть запрос в обычном режиме, из которого убран параметр Content).

    CPDSS-OPERATION-PARAMS: BASE64URL(UTF8Bytes(json-request-wo-content)

    Пример запроса на подпись

    Рассмотрим запрос на подпись документа в стандартном режиме (переносы строк добавлены для удобства чтения):

    {
       "Content":"AX/dfse…",
        "Signature": {
            "Type": "CAdES",
            "CertificateId": 0,
            "Parameters": {
                "CADESType": "XLT1",
                "IsDetached": "true",
                "TSPAddress": "http://testca2.cryptopro.ru/TSP/tsp.srf"
            }
        }
    }
    

    В потоковом режиме в заголовок помещается значение

    eyJTaWduYXR1cmUiIDogeyAiVHlwZSI6IkNBZEVTIiwgIkNlcnRpZmljYXRlSWQiOjAsICJQYXJhbWV0ZXJzIjp7IkNBREVTVHlwZSI6IlhMVDEiLCAiSXNEZXRhY2hlZCI6InRydWUiLCAiVFNQQWRkcmVzcyI6Imh0dHA6Ly90ZXN0Y2EyLmNyeXB0b3Byby5ydS9UU1AvdHNwLnNyZiJ9fX0
    

    которое представляет собой значение BASE64URL(UTF8Bytes(M)), где M:

    {"Signature" : { "Type":"CAdES", "CertificateId":0, "Parameters":{"CADESType":"XLT1", "IsDetached":"true", "TSPAddress":"http://testca2.cryptopro.ru/TSP/tsp.srf"}}}
    

    Пример запроса на хэширование

    {
        "Hash": {
            "Parameters": {                     
                "HashAlgorithm": "GR 34.11-2012 256"
            }
        }
    }
    

    В потоковом режиме в заголовок помещается значение

    eyJIYXNoIjp7IlBhcmFtZXRlcnMiOnsiSGFzaEFsZ29yaXRobSI6IkdSIDM0LjExLTIwMTIgMjU2In19fQ
    

    Ограничения

    Потоковая подпись может применяться только для создания отделённой подписи форматов CAdES (BES, T, XLT1).

    Back to top © ООО "КРИПТО-ПРО", 2000-2020