Показать/Скрыть содержание

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

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

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

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

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

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

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

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

    POST /SignServer/api/documents HTTP/1.1
    CPDSS-OPERATION-PARAMS: eyJTa...
    Content-Type: application/octet-stream
    Authorization: Bearer eyJ0eXA...
    Host: {{hostname}}
    

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

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

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

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

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

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

    eyJTaWduYXR1cmUiIDogeyAiVHlwZSI6IkNBZEVTIiwgIkNlcnRpZmljYXRlSWQiOjAsICJQYXJhbWV0ZXJzIjp7IkNBREVTVHlwZSI6IlhMVDEiLCAiSXNEZXRhY2hlZCI6InRydWUiLCAiVFNQQWRkcmVzcyI6Imh0dHA6Ly90ZXN0Y2EyLmNyeXB0b3Byby5ydS9UU1AvdHNwLnNyZiJ9fX0
    

    Значение получено путем преобразования BASE64URL(UTF8Bytes(M)), где M:

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

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

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

    eyJIYXNoIjp7IlBhcmFtZXRlcnMiOnsiSGFzaEFsZ29yaXRobSI6IkdSIDM0LjExLTIwMTIgMjU2In19fQ
    

    Значение получено путем преобразования BASE64URL(UTF8Bytes(M)), где M:

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

    Ограничения

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

    В начало © ООО "КРИПТО-ПРО", 2000–2025