Примеры запросов на создание подписи средствами REST API
Раздел содержит примеры HTTP-запросов к REST-интерфейсу Сервиса Подписи DSS для создания электронной подписи.
Пользовательский сертификат
При выполнении любой операции подписи Сервис должен располагать информацией о сертификате ключа подписи. Это можно сделать двумя способами:
- передача идентификатора сертификата в запросе на формирование подписи
- использование сертификата по умолчанию
Для получения идентификтора сертификата можно воспользоваться методом GetCertificates.
Если необходимо использовать сертификат по умолчанию, то в качестве идентификатора сертификата в запросе следует передавать значение 0, предварительно назначив один из сертификатов пользователя сертификатом по умолчанию.
Форматы подписи
REST-интерфейс Сервиса Подписи DSS позволяет подписывать документы, используя следующие форматы электронной подписи:
Необработанная подпись ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012 (Raw)
Усовершенствованная подпись (CMS Advanced Electronic Signature)
Типовые ошибки
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 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 ..."