Show / Hide Table of Contents

    Примеры запросов на создание подписи средствами REST API

    Раздел содержит примеры HTTP-запросов к REST-интерфейсу Сервиса Подписи DSS для создания электронной подписи.

    Пользовательский сертификат

    При выполнении любой операции подписи Сервис должен располагать информацией о сертификате ключа подписи. Это можно сделать двумя способами:

    • передача идентификатора сертификата в запросе на формирование подписи
    • использование сертификата по умолчанию

    Для получения идентификтора сертификата можно воспользоваться методом GetCertificates.

    Если необходимо использовать сертификат по умолчанию, то в качестве идентификатора сертификата в запросе следует передавать значение 0, предварительно назначив один из сертификатов пользователя сертификатом по умолчанию.

    Форматы подписи

    REST-интерфейс Сервиса Подписи DSS позволяет подписывать документы, используя следующие форматы электронной подписи:

    • Необработанная подпись ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012 (Raw)

      • Необработанная подпись документа
      • Необработанная подпись хэш-значения документа
    • Усовершенствованная подпись (CMS Advanced Electronic Signature)

      • CMS (CAdES Basic Electronic Signature, CAdES-BES)
      • CAdES-T (CAdES Timestamp)
      • CAdES XLT1 (CAdES X-Long Type 1)
    • Подпись XML-документов (XML Digital Signature, XMLDSig)

    • Подпись документов Microsoft Office

    • Подпись PDF-документов

    Типовые ошибки

    HTTP-код Ошибка Описание
    400 invalid_signature_params Неверно указаны параметры подписи
    400 invalid_certificate Указан неверный идентификатор сертификата
    400 invalid_pin Указан неверный ПИН-код
    400 content_required Не передан документ для подписания
    500 An error has occurred Внутренняя ошибка сервера
    Примечание

    Одной из причин ошибки HTTP 500 может быть несоответствие формата документа и формата подписи. Например, для подписи формата PDF отправлен текстовый документ.

    Необработанная подпись

    Сервис Подписи DSS позволяет формировать необработанную подпись двумя способами:

    • Необработанная подпись документа
    • Необработанная подпись хэш-значения документа

    Необработанная подпись документа

    Пример запроса

    В примере создаeтся простая подпись по стандарту ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"T2gsIGhlbGxvIHRoZXJlIQ==",
        "Signature":
            {
                "Type":"GOST3410",
                "Parameters":
                    {
                        "Hash":"False"
                    },
                "CertificateId":1,
                "PinCode":""
            }
    }
    

    Пример ответа

    Сервис Подписи вернeт закодированную в Base64 электронную подпись.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "pq3fJ6NP1LWNW6yYgx0zOvdMSJaZBZ58L99IXvpVj/T/l+d0cbXqJHX6u7M7CGFuvyvbg6mA6 ..."
    

    Необработанная подпись хэш-значения

    Пример запроса

    В примере создаeтся простая подпись хэш-значения по стандарту ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0=",
        "Signature":
            {
                "Type":"GOST3410",
                "Parameters":
                    {
                        "Hash":"True"
                    },
                "CertificateId":1,
                "PinCode":""
            }
    }
    
    Примечание

    При создании подписи хэш-значения в поле Content необходимо передавать хэш-значение подписываемого документа.

    Пример ответа

    Сервис Подписи вернeт закодированную в Base64 электронную подпись.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "pq3fJ6NP1LWNW6yYgx0zOvdMSJaZBZ58L99IXvpVj/T/l+d0cbXqJHX6u7M7CGFuvyvbg6mA6 ..."
    

    Подпись в формате CMS

    Сервис Подписи DSS позволяет создавать следующие виды CMS-подписи:

    • Отделeнная подпись
    • Присоединенная подпись
    • Отделeнная подпись хэш-значения
    • Соподпись документа
    • Соподпись хэш-значения документа
    • Пакетная соподпись документов
    • Пакетная соподпись хэш-значений документов
    • Заверяющая подпись

    Отделeнная подпись

    Пример запроса

    В примере создаeтся откреплeнная CAdES-BES подпись.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"T2gsIGhlbGxvIHRoZXJlIQ==",
        "Signature":
            {
                "Type":"CAdES",
                "Parameters":
                    {
                        "Hash":"False",
                        "CADESType":"BES",
                        "IsDetached":"True"
                    },
                "CertificateId":1,
                "PinCode":""
            }
    }
    

    Пример ответа

    Сервис Подписи вернeт закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjgUAMAsGCSqGSIb3DQ ..."
    

    Присоединeнная подпись

    Пример запроса

    В примере создаeтся присоединeнная CAdES-BES подпись.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"T2gsIGhlbGxvIHRoZXJlIQ==",
        "Signature":
            {
                "Type":"CAdES",
                "Parameters":
                    {
                        "Hash":"False",
                        "CADESType":"BES",
                        "IsDetached":"False"
                    },
                "CertificateId":1,
                "PinCode":""
            }
    }
    

    Пример ответа

    Сервис Подписи вернeт закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQEUAMAsGCSqGSIb3DQ ..."
    

    Отделeнная подпись хэш-значения

    Пример запроса

    В примере создаeтся отделeнная подпись хэш-значения документа в формате CAdES-BES.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"j/MkCnzPzzIVmj42zxIRuu42akUzSVEq1fQTIuk1lPk=",
        "Signature":
            {
                "Type":"CAdES",
                "Parameters":
                    {
                        "Hash":"True",
                        "CADESType":"BES",
                        "IsDetached":"True"
                    },
                "CertificateId":1,
                "PinCode":""
            }
    }
    
    Примечание

    При создании подписи хэш-значения в поле Content необходимо передавать хэш-значение подписываемого документа.

    Пример ответа

    Сервис Подписи вернeт закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Соподпись документа

    Пример запроса

    В примере формируется соподпись документа с использованием второго сертификата ключа проверки электронной подписи.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"MIIIpwYJKoZIhvcNAQcCoIIImDCCkiG9w0BBwGxAJOVQQJ ...",
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"False",
                    "CADESType":"BES",
                    "IsDetached":"True",
                    "OriginalDocument":"T2gsIGhlbGxvIHRoZXJlIQ==",
                    "CmsSignatureType":"Cosign"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании соподписи в поле Content необходимо передавать подписанное сообщение, в которое следует добавить соподпись.

    В поле OriginalDocument необходимо передавать содержимое исходного документа.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение cosign.

    Пример ответа

    Сервис Подписи вернeт закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Соподпись хэш-значения документа

    Пример запроса

    В примере формируется соподпись хэш-значения локумента с использованием второго сертификата ключа проверки электронной подписи.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"MIIIpwYJKoZIhvcNAQcCoIIImDCCCJQCAQExDDAKBgYqh ...",
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"True",
                    "CADESType":"BES",
                    "IsDetached":"True",
                    "OriginalDocument":"mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0=",
                    "CmsSignatureType":"Cosign"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании соподписи в поле Content необходимо передавать подписанное сообщение, в которое следует добавить соподпись.

    В поле OriginalDocument необходимо передавать хэш-значение исходного документа.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение cosign.

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Пакетная соподпись документа

    Пример запроса

    В примере формируется соподпись документов с использованием второго сертификата ключа проверки электронной подписи.

    Содержимое исходных документов в случае пакетной отделённой соподписи передаётся в структуре Documents в поле OriginalContent. Параметр подписи OriginalDocument не используется.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    
    {
        "Documents" : [
        {
            "Content" : "MIIMngYJKoZIhvcNAQcCoIIMjzCCDIs...",
            "Name":"testdoc",
            "OriginalContent" : "0KLQtdGB0YLQvtCy0YvQtSDQtNCw0L3QvdGL0LUg0LTQu9GPINC/0L7QtNC/0LjRgdC4IDE="
        },
        {
            "Content" : "MIIMngYJKoZIhvcNAQcCoIIMjzCCDIs...",
            "Name":"testdoc1",
            "OriginalContent" : "0KLQtdGB0YLQvtCy0YvQtSDQtNCw0L3QvdGL0LUg0LTQu9GPINC/0L7QtNC/0LjRgdC4IDI="
        }],
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"False",
                    "CADESType":"BES",
                    "IsDetached":"True",
                    "CmsSignatureType":"Cosign"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании соподписи в поле Content необходимо передавать подписанное сообщение, в которое следует добавить соподпись.

    В поле OriginalContent необходимо передавать содержимое исходного документа.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение Cosign.

    Пример ответа

    Сервис Подписи вернeт закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Пакетная соподпись хэш-значения документа

    Пример запроса

    В примере формируется соподпись хэш-значения документов с использованием второго сертификата ключа проверки электронной подписи.

    Хэш-значения документов в случае пакетной отделённой соподписи передаётся в структуре Documents в поле OriginalContent. Параметр подписи OriginalDocument не используется.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Documents" : [
        {
            "Content" : "MIIMngYJKoZIhvcNAQcCoIIMjzCCDIs...",
            "Name":"testdoc",
            "OriginalContent" : "mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0="
        },
        {
            "Content" : "MIIMngYJKoZIhvcNAQcCoIIMjzCCDIs...",
            "Name":"testdoc1",
            "OriginalContent" : "mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU2="
        }],
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"True",
                    "CADESType":"BES",
                    "IsDetached":"True",
                    "CmsSignatureType":"Cosign"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании соподписи в поле Content необходимо передавать подписанное сообщение, в которое следует добавить соподпись.

    В поле OriginalContent необходимо передавать хэш-значение исходного документа.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение cosign.

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Заверяющая подпись

    Пример запроса

    В примере формируется заверяющая подпись документа.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"MIIIpwYJKoZIhvcNAQcCoIIImDCCCJQCAQExDDAKBgYqhQMCAgkF ...",
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"False",
                    "CADESType":"BES",
                    "IsDetached":"True",
                    "OriginalDocument":"mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0=",
                    "CmsSignatureType":"Countersign"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании заверяющей подписи в поле Content необходимо передавать подписанный документ, для которого требуется заверяющая подпись.

    В поле OriginalDocument необходимо передавать исходный документ.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение countersign.

    В запросе может присутствовать параметр SignatureIndex, указывающий индекс заверяемой подписи. В случае, если данный параметр отсутствует в запросе, Сервис Подписи будет заверять первую подпись в документе.

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Подпись в формате CAdES-XLT1/CAdES-T

    Сервис Подписи DSS позволяет создавать следующие виды подписи в формате CAdES-XLT1/CAdES-T:

    • Отделенная подпись
    • Присоединенная подпись
    • Отделенная подпись хэш-значения
    • Соподпись документа
    • Соподпись хэш-значения документа
    • Заверяющая подпись
    Примечание

    Подпись в формате CAdES-XLT1/CAdES-T требует обязательной передачи адреса TSP-службы посредством передачи параметра TSPAddress в запросе.

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

    Отделенная подпись

    Пример запроса

    В примере создается открепленная CAdES-XLT1 подпись.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0=",
        "Signature": {
            "Type": "CAdES",
            "Parameters": {
                "Hash": "False",
                "CADESType": "XLT1",
                "IsDetached": "True",
                "TSPAddress": "https://dss-ca20-w12r2/tsp/tsp.srf"
            },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjgUAMAsGCSqGSIb3DQ ..."
    

    Присоединенная подпись

    Пример запроса

    В примере создается присоединенная CAdES-XLT1 подпись.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0=",
        "Signature": {
            "Type": "CAdES",
            "Parameters": {
                "Hash": "False",
                "CADESType": "XLT1",
                "IsDetached": "False",
                "TSPAddress": "https://dss-ca20-w12r2/tsp/tsp.srf"
            },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQEUAMAsGCSqGSIb3DQ ..."
    

    Отделенная подпись хэш-значения

    Пример запроса

    В примере создается отделенная CAdES-XLT1 подпись хэш-значения документа.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0=",
        "Signature": {
            "Type": "CAdES",
            "Parameters": {
                "Hash": "True",
                "CADESType": "XLT1",
                "IsDetached": "True",
                "TSPAddress": "https://dss-ca20-w12r2/tsp/tsp.srf"
            },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    
    Примечание

    При создании подписи хэш-значения в поле Content необходимо передавать хэш-значение подписываемого документа.

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Соподпись документа

    Пример запроса

    В примере осуществляется соподпись документа с использованием второго сертификата ключа проверки электронной подписи.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"MIIIpwYJKoZIhvcNAQcCoIIImDCCkiG9w0BBwGxAJOVQQJ ...",
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"False",
                    "CADESType":"XLT1",
                    "IsDetached":"True",
                    "OriginalDocument":"T2gsIGhlbGxvIHRoZXJlIQ==",
                    "CmsSignatureType":"Cosign",
                  "TSPAddress": "https://dss-ca20-w12r2/tsp/tsp.srf"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании соподписи в поле Content необходимо передавать подписанный документ, для которого требуется соподпись.

    В поле OriginalDocument необходимо передавать содержимое исходного документа.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение cosign.

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Соподпись хэш-значения документа

    Пример запроса

    В примере осуществляется соподпись хэш-значения документа с использованием второго сертификата ключа проверки электронной подписи.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"MIIIpwYJKoZIhvcNAQcCoIIImDCCCJQCAQExDDAKBgYqh ...",
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"True",
                    "CADESType":"XLT1",
                    "IsDetached":"True",
                    "OriginalDocument":"mM40LMXbEv6DbpJe+ov8eCLRFHjglAZ22b3YebKmyU0=",
                    "CmsSignatureType":"Cosign",
                  "TSPAddress": "https://dss-ca20-w12r2/tsp/tsp.srf"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании соподписи в поле Content необходимо передавать подписанный документ, для которого требуется соподпись.

    В поле OriginalDocument необходимо передавать хэш-значение исходного документа.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение cosign.

    Пример ответа

    Сервис Подписи вернeт закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Заверяющая подпись

    Пример запроса

    В примере формируется заверяющая подпись документа.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content":"MIIIpwYJKoZIhvcNAQcCoIIImDCCCJQCAQExDDAKBgYqhQMCAgkF ...",
        "Signature":
            {
            "Type":"CAdES",
            "Parameters":
                {
                    "Hash":"False",
                    "CADESType":"XLT1",
                    "CmsSignatureType":"Сountersign",
                  "TSPAddress": "https://dss-ca20-w12r2/tsp/tsp.srf"
                },
                "CertificateId":2,
                "PinCode":""
            }
    }
    
    Примечание

    При создании заверяющей подписи в поле Content необходимо передавать подписанное сообщение, содержающее подпись, которую требуется заверить.

    В запросе должен присутствовать параметр CmsSignatureType, имеющий значение Сountersign. > В запросе может присутствовать параметр SignatureIndex, указывающий индекс заверяемой подписи. В случае, если данный параметр отсутствует в запросе, Сервис Подписи будет заверять первую подпись в документе.

    Пример ответа

    Сервис Подписи вернeт закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "MIIFtwYJKoZIhvcNAQcCoIIFqDCCBaQCAQExDjAMBggMAsGCSqGSIb3DQ ..."
    

    Подпись в формате XMLDSig

    REST-интерфейс Сервиса Подписи позволяет формировать XML-подпись следующими способами:

    • Enveloping
    • Enveloped
    • Подпись по шаблону (Template)

    Enveloping XML-подпись

    Результатом выполнения операции создания Enveloping-подписи является XML-документ, который состоит из электронной подписи, содержащей исходный документ в элементе Object

    Пример запроса

    В примере создается Enveloping XML-подпись.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "PHJvb3Q+PHZhbHVlPnNhbXBsZTwvdmFsdWU+PC9yb290Pg==",
        "Signature": {
            "Type": "XMLDSig",
            "Parameters": {
                "XMLDsigType": "XMLEnveloping"
                },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMj ..."
    

    Пример результирующего файла с электронной подписью: enveloping.xml.

    Enveloped XML-подпись

    Результатом выполнения операции создания Enveloped-подписи является XML-документ, который представляет из себя подписываемый документ с включенным в него узлом электронной подписи Signature.

    Пример запроса

    В примере создается Enveloped XML-подпись.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "PHJvb3Q+PHZhbHVlPnNhbXBsZTwvdmFsdWU+PC9yb290Pg==",
        "Signature": {
            "Type": "XMLDSig",
            "Parameters": {
                "XMLDsigType": "XMLEnveloped"
                },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMj ..."
    

    Пример результирующего файла с электронной подписью: enveloped.xml.

    XML-подпись по шаблону

    XML-подпись по шаблону применяется в том случае, когда необходимо сформировать подпись не всего документа, а одного или нескольких отдельных узлов в документе.

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

    Данная статья содержит примеры следующий шаблонов XML-подписи:

    • XML-подпись по стандарту ГОСТ Р 34.10-2001 + ГОСТ Р 34.11-94
    • XML-подпись по стандарту ГОСТ Р 34.10-2012 (256) + ГОСТ Р 34.11-2012 (256)
    • XML-подпись по стандарту ГОСТ Р 34.10-2012 (512) + ГОСТ Р 34.11-2012 (512)
    XML-подпись по стандарту ГОСТ Р 34.10-2001 + ГОСТ Р 34.11-94

    Здесь приводится пример шаблона для формирования подписи по шаблону для алгоритма подписи ГОСТ Р 34.10-2001

    <root>
        <data id="dtbs">2BSigned</data>
        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="sigID1">
            <ds:SignedInfo>
                <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                <ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"/>
                <ds:Reference URI="#dtbs">
                    <ds:Transforms>
                        <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    </ds:Transforms>
                    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34116"/>
                    <ds:DigestValue/>
                </ds:Reference>
            </ds:SignedInfo>
            <ds:SignatureValue/>
            <ds:KeyInfo/>
        </ds:Signature>
    </root>
    
    Примечание

    Идентификаторы узлов, подлежащих подписи, необходимо указывать посредством атрибута URI узла Reference

    Примечание

    Идентификатор алгоритма подписи:

    urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411

    Идентификатор алгоритма хэширования: http://www.w3.org/2001/04/xmldsig-more#gostr3411

    Пример запроса

    В примере создается XML-подпись по шаблону с использованием алгорита ГОСТ Р 34.10-2001.

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "PHJvb3Q+PHZhbHVlPnNhbXBsZTwvdmFsdWU+PC9yb290Pg==",
        "Signature": {
            "Type": "XMLDSig",
            "Parameters": {
                "XMLDsigType": "XMLTemplate"
                },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMj ..."
    

    Пример результирующего файла с электронной подписью: template34102001.xml.

    XML-подпись по стандарту ГОСТ Р 34.10-2012 (256) + ГОСТ Р 34.11-2012 (256)

    Здесь приводится пример шаблона для формирования подписи по шаблону для алгоритма подписи ГОСТ Р 34.10-2012 (256)

    <root>
        <data id="dtbs">2BSigned</data>
        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="sigID1">
            <ds:SignedInfo>
                <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                <ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
                <ds:Reference URI="#dtbs">
                    <ds:Transforms>
                        <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    </ds:Transforms>
                    <ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
                    <ds:DigestValue/>
                </ds:Reference>
            </ds:SignedInfo>
            <ds:SignatureValue/>
            <ds:KeyInfo/>
        </ds:Signature>
    </root>
    
    Примечание

    Идентификаторы узлов, подлежащих подписи, необходимо указывать посредством атрибута URI узла Reference

    Примечание

    Идентификатор алгоритма подписи:

    urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256

    Идентификатор алгоритма хэширования: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256

    Пример запроса

    В примере создается XML-подпись по шаблону с использованием алгорита ГОСТ Р 34.10-2012 (256).

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "PHJvb3Q+PHZhbHVlPnNhbXBsZTwvdmFsdWU+PC9yb290Pg==",
        "Signature": {
            "Type": "XMLDSig",
            "Parameters": {
                "XMLDsigType": "XMLTemplate"
                },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMj ..."
    

    Пример результирующего файла с электронной подписью: template34102012-256.xml.

    XML-подпись по стандарту ГОСТ Р 34.10-2012 (512) + ГОСТ Р 34.11-2012 (512)

    Здесь приводится пример шаблона для формирования подписи по шаблону для алгоритма подписи ГОСТ Р 34.10-2012 (512)

    <root>
        <data id="dtbs">2BSigned</data>
        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="sigID1">
            <ds:SignedInfo>
                <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                <ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"/>
                <ds:Reference URI="#dtbs">
                    <ds:Transforms>
                        <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    </ds:Transforms>
                    <ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"/>
                    <ds:DigestValue/>
                </ds:Reference>
            </ds:SignedInfo>
            <ds:SignatureValue/>
            <ds:KeyInfo/>
        </ds:Signature>
    </root>
    
    Примечание

    Идентификаторы узлов, подлежащих подписи, необходимо указывать посредством атрибута URI узла Reference

    Примечание

    Идентификатор алгоритма подписи:

    urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512

    Идентификатор алгоритма хэширования: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512

    Пример запроса

    В примере создается XML-подпись по шаблону с использованием алгорита ГОСТ Р 34.10-2012 (512).

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "PHJvb3Q+PHZhbHVlPnNhbXBsZTwvdmFsdWU+PC9yb290Pg==",
        "Signature": {
            "Type": "XMLDSig",
            "Parameters": {
                "XMLDsigType": "XMLTemplate"
                },
            "CertificateId": 1,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированное в Base64 содержимое файла с электронной подписью.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMj ..."
    

    Пример результирующего файла с электронной подписью: template34102012-512.xml.

    Подпись документов MSOffice

    Сервис Подписи позволяет формировать электронную подпись документов, созданных в офисном пакете Microsoft Office.

    Для того, чтобы Сервис Подписи осуществил формирование подписи документа MS Office, в параметре SignatureType необходимо передавать значение MSOffice.

    Пример запроса к Сервису Подписи на формирование подписи документа представлен далее:

    Пример запроса

    В примере формируется подпись Word-документа, переданного в параметре Content.

    Примечание

    В поле Content необходимо передавать закодированное в BASE64 бинарное представление документа

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        "Content": "UEsDBBQAB...",
        "Signature": {
            "Type": "MSOffice",
            "Parameters": {},
            "CertificateId": 1006,
            "PinCode": ""
        }
    }
    

    Пример ответа

    Сервис Подписи вернет закодированные в Base64 двоичные данные подписанного документа.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMj ..."
    

    Подпись PDF-документов

    Сервис Подписи позволяет формировать электронную подпись PDF-документов.

    Для того, чтобы Сервис Подписи осуществил формирование подписи PDF-документа, в параметре SignatureType необходимо передавать значение PDF.

    Пример запроса к Сервису Подписи на формирование подписи PDF-документа представлен далее:

    Пример запроса

    В примере формируется подпись PDF-документа, переданного в параметре Content.

    Примечание

    В поле Content необходимо передавать закодированное в BASE64 бинарное представление документа

    POST https://host/SignServer/rest/api/documents HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {
        {
        "Content": "JVBERi0xLjUN...",
        "Signature": {
            "Type": "PDF",
            "Parameters": {
                "PDFFormat": "CMS"
                },
            "CertificateId": 1006,
            "PinCode": ""
        }
    }
    
    }
    

    Пример ответа

    Сервис Подписи вернет закодированные в Base64 двоичные данные подписанного PDF-документа.

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    "PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMj ..."
    
    Back to top © ООО "КРИПТО-ПРО", 2000-2020