Примеры запросов на создание подписи средствами 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",
"HashAlgorithm":"GR 34.11-2012 256"
},
"CertificateId":2,
"PinCode":""
}
}
Примечание
При создании соподписи в поле Content
необходимо передавать подписанное сообщение, в которое следует добавить соподпись.
В поле OriginalDocument
необходимо передавать хэш-значение исходного документа.
В запросе должен присутствовать параметр CmsSignatureType
, имеющий значение cosign
.
В запросе должен присутствовать параметр HashAlgorithm
, содержащий идентификатор используемого алгоритма хэширования.
Пример ответа
Сервис Подписи вернет закодированное в 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 ..."
Передача аутентифицированных атрибутов
В примере передаётся аутентифицированный атрибут.
Атрибуты передаются в словаре параметров Parameters
в ключе AuthenticatedAttributes
.
Значение ключа - закодированный в Base64 JSON-словарь строка-строка.
Ключ словаря - OID атрибута
Значение ключа - закодированное в Base64 значение атрибута.
Ниже приводится пример формирования значения для ключа AuthenticatedAttributes
.
Примечание
Для примера взят Штамп Времени.
- Значение атрибута, закодированное в Base64
MIIPXgYJKoZIhvcNAQcCoIIPTzCCD0sCAQMxDjAMBggqhQMHAQECAgUAMGsGCyqGSIb3DQEJEAEEoFwEWjBYAgEBBgEpMDAwDAYIKoUDBwEBAgIFAAQgI4jO8/P5GP6o+cuM+UrzQD9optV1Escx9QeRHFqdV4kCDQEUNqXJAAAAAAAAgDIYDzIwMjAxMjI4MTk1ODExWqCCCLgwggi0MIIIYaADAgECAhEBI22ZAEWs+YVOrQBRYw07aDAKBggqhQMHAQEDAjCCAXoxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MRgwFgYFKoUDZAESDTExMDc3OTkwMDc0MjUxGjAYBggqhQMDgQMBARIMMDA3NzA4MjM3NzQ3MQswCQYDVQQGEwJSVTEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDEZMBcGA1UEBwwQ0LMuINCc0L7RgdC60LLQsDFFMEMGA1UECQw80YPQu9C40YbQsCDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPLCDQtC4gMTUsINGB0YLRgC4gNC01MWYwZAYDVQQKDF3QpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40Lkg0Lgg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90YvRhSDRgtC10YXQvdC+0LvQvtCz0LjQuSIxMTAvBgNVBAMMKNCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSIwHhcNMjAwOTI5MDkwODM3WhcNMjEwOTI5MDkwODM3WjCCAXMxGDAWBgUqhQNkARINMTEwNzc5OTAwNzQyNTEaMBgGCCqFAwOBAwEBEgwwMDc3MDgyMzc3NDcxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MT4wPAYDVQQJDDXRg9C7LiDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPINC0LiAxNSDRgdGC0YAuIDQtNTELMAkG
A1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxZjBkBgNVBAoMXdCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSDQuCDQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3Ri9GFINGC0LXRhdC90L7Qu9C+0LPQuNC5IjExMC8GA1UEAwwo0KTQvtC90LQgItCm0LXQvdGC0YAg0LjQvdC90L7QstCw0YbQuNC5IjBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABECgtxsEM1XhUYVurVvCdccUkQ4dQ2N49x9mT0rnkx9thzRg/WEx7i3U3bvcEIVLer0qmu1kK0neShfzbyo9P6Bso4IEvDCCBLgwDgYDVR0PAQH/BAQDAgP4MB0GA1UdDgQWBBRE0AaQedC1hI95c5hrJeZNN9VGOjA0BgkrBgEEAYI3FQcEJzAlBh0qhQMCAjIBCe71XYbswzWFsZVkhsvwMoKkP4G3CAIBAQIBADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCBtwYIKwYBBQUHAQEEgaowgacwMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLmZjaWl0LnJ1L29jc3AtcXVhbC9vY3NwLnNyZjA3BggrBgEFBQcwAoYraHR0cDovL2NkcDEuZmNpaXQucnUvY2RwL2NhLXF1YWxfMl8yMDEyLmNlcjA3BggrBgEFBQcwAoYraHR0cDovL2NkcDIuZmNpaXQucnUvY2RwL2NhLXF1YWxfMl8yMDEyLmNlcjAdBgNVHSAEFjAUMAgGBiqFA2RxATAIBgYqhQNkcQIwggEUBgUqhQNkcASCAQkwggEFDDLQn9CQ0JrQnCAi0JrRgNC40L/RgtC+0J/RgNC+IEhTTSIg0LLQtdGA0YHQuNGPIDIuMAwx0J/QkNCaICLQmtGA0LjQv9GC0L7Qn
9GA0L4g0KPQpiIg0LLQtdGA0YHQuNC5IDIuMAxN0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YHRgtCy0LjRjyDihJYg0KHQpC8xMjQtMzQ3NSDQvtGCIDEwLjA4LjIwMTgMTdCh0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGB0YLQstC40Y8g4oSWINCh0KQvMTI4LTM4NzAg0L7RgiAyMy4wNy4yMDIwMD0GBSqFA2RvBDQMMtCh0JrQl9CYICLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiDQstC10YDRgdC40LkgNC4wMIGlBgNVHR8EgZ0wgZowS6BJoEeGRWh0dHA6Ly9jZHAxLmZjaWl0LnJ1L2NkcC9kZDM5MWE0M2JhMjBkNWQ4MGNlYTQ4ZGY4YjYyZTA0MDMwMjI4YmUyLmNybDBLoEmgR4ZFaHR0cDovL2NkcDIuZmNpaXQucnUvY2RwL2RkMzkxYTQzYmEyMGQ1ZDgwY2VhNDhkZjhiNjJlMDQwMzAyMjhiZTIuY3JsMIIBXwYDVR0jBIIBVjCCAVKAFN05GkO6INXYDOpI34ti4EAwIovioYIBLKSCASgwggEkMR4wHAYJKoZIhvcNAQkBFg9kaXRAbWluc3Z5YXoucnUxCzAJBgNVBAYTAlJVMRgwFgYDVQQIDA83NyDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxLjAsBgNVBAkMJdGD0LvQuNGG0LAg0KLQstC10YDRgdC60LDRjywg0LTQvtC8IDcxLDAqBgNVBAoMI9Cc0LjQvdC60L7QvNGB0LLRj9C30Ywg0KDQvtGB0YHQuNC4MRgwFgYFKoUDZAESDTEwNDc3MDIwMjY3MDExGjAYBggqhQMDgQMBARIMMDA3NzEwNDc0Mzc1MSwwKgYDVQQDDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQuIIKfGTf6AAAAA
ABqTAKBggqhQMHAQEDAgNBAIXfLcyHtg+Vg5NT8otSI7nXA5TktTqXyVU1sJTE8tDl67ZzYe1woedhWkY3Yf46vhvLOTuzoa7MScGiYo6PQ68xggYLMIIGBwIBATCCAZEwggF6MRowGAYJKoZIhvcNAQkBFgtjYUBmY2lpdC5ydTEYMBYGBSqFA2QBEg0xMTA3Nzk5MDA3NDI1MRowGAYIKoUDA4EDAQESDDAwNzcwODIzNzc0NzELMAkGA1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxRTBDBgNVBAkMPNGD0LvQuNGG0LAg0JTQvtC70LPQvtGA0YPQutC+0LLRgdC60LDRjywg0LQuIDE1LCDRgdGC0YAuIDQtNTFmMGQGA1UECgxd0KTQvtC90LQgItCm0LXQvdGC0YAg0LjQvdC90L7QstCw0YbQuNC5INC4INC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdGL0YUg0YLQtdGF0L3QvtC70L7Qs9C40LkiMTEwLwYDVQQDDCjQpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40LkiAhEBI22ZAEWs+YVOrQBRYw07aDAMBggqhQMHAQECAgUAoIIEDTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIFqJ8w8Ec378z37rDc0Ek1z2lQtcSun5AmiguQ3O1gakMIIB0AYLKoZIhvcNAQkQAgwxggG/MIIBuzCCAbcwggGzBBSZWkyIhPAGtiV/XYVyYMjXIuQ5ajCCAZkwggGCpIIBfjCCAXoxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MRgwFgYFKoUDZAESDTExMDc3OTkwMDc0MjUxGjAYBggqhQMDgQMBARIMMDA3NzA4MjM3NzQ3MQswCQYDVQQGEwJSVTEcMBoGA1UECAw
TNzcg0LMuINCc0L7RgdC60LLQsDEZMBcGA1UEBwwQ0LMuINCc0L7RgdC60LLQsDFFMEMGA1UECQw80YPQu9C40YbQsCDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPLCDQtC4gMTUsINGB0YLRgC4gNC01MWYwZAYDVQQKDF3QpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40Lkg0Lgg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90YvRhSDRgtC10YXQvdC+0LvQvtCz0LjQuSIxMTAvBgNVBAMMKNCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSICEQEjbZkARaz5hU6tAFFjDTtoMIIB6AYLKoZIhvcNAQkQAi8xggHXMIIB0zCCAc8wggHLMAoGCCqFAwcBAQICBCDpZDgkHHPAkwpVW3h3Cbem5FlmToE1I1s6xcGkX2itjDCCAZkwggGCpIIBfjCCAXoxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MRgwFgYFKoUDZAESDTExMDc3OTkwMDc0MjUxGjAYBggqhQMDgQMBARIMMDA3NzA4MjM3NzQ3MQswCQYDVQQGEwJSVTEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDEZMBcGA1UEBwwQ0LMuINCc0L7RgdC60LLQsDFFMEMGA1UECQw80YPQu9C40YbQsCDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPLCDQtC4gMTUsINGB0YLRgC4gNC01MWYwZAYDVQQKDF3QpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40Lkg0Lgg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90YvRhSDRgtC10YXQvdC+0LvQvtCz0LjQuSIxMTAvBgNVBAMMKNCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSICEQEj
bZkARaz5hU6tAFFjDTtoMAwGCCqFAwcBAQEBBQAEQFvfl2gVuLI62+WuFNxq4M6zyw9LC8riPcr3AYJnxAdcaqMgQLGbN5+KU4Mbi9F1rfs8ym4pxIb+cUmDkEHa+Bo=
- Словарь, содержащий набор атрибутов, которые нужно добавить в CMS подпись
{
"1.2.840.113549.1.9.16.2.14" : "MIIPXgYJKoZIhvcNAQcCoIIPTzCCD0sCAQMxDjAMBggqhQMHAQECAgUAMGsGCyqGSIb3DQEJEAEEoFwEWjBYAgEBBgEpMDAwDAYIKoUDBwEBAgIFAAQgI4jO8/P5GP6o+cuM+UrzQD9optV1Escx9QeRHFqdV4kCDQEUNqXJAAAAAAAAgDIYDzIwMjAxMjI4MTk1ODExWqCCCLgwggi0MIIIYaADAgECAhEBI22ZAEWs+YVOrQBRYw07aDAKBggqhQMHAQEDAjCCAXoxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MRgwFgYFKoUDZAESDTExMDc3OTkwMDc0MjUxGjAYBggqhQMDgQMBARIMMDA3NzA4MjM3NzQ3MQswCQYDVQQGEwJSVTEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDEZMBcGA1UEBwwQ0LMuINCc0L7RgdC60LLQsDFFMEMGA1UECQw80YPQu9C40YbQsCDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPLCDQtC4gMTUsINGB0YLRgC4gNC01MWYwZAYDVQQKDF3QpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40Lkg0Lgg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90YvRhSDRgtC10YXQvdC+0LvQvtCz0LjQuSIxMTAvBgNVBAMMKNCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSIwHhcNMjAwOTI5MDkwODM3WhcNMjEwOTI5MDkwODM3WjCCAXMxGDAWBgUqhQNkARINMTEwNzc5OTAwNzQyNTEaMBgGCCqFAwOBAwEBEgwwMDc3MDgyMzc3NDcxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MT4wPAYDVQQJDDXRg9C7LiDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPINC0LiAxNSDRgdGC0YAuIDQtNTELMAkG
A1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxZjBkBgNVBAoMXdCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSDQuCDQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3Ri9GFINGC0LXRhdC90L7Qu9C+0LPQuNC5IjExMC8GA1UEAwwo0KTQvtC90LQgItCm0LXQvdGC0YAg0LjQvdC90L7QstCw0YbQuNC5IjBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABECgtxsEM1XhUYVurVvCdccUkQ4dQ2N49x9mT0rnkx9thzRg/WEx7i3U3bvcEIVLer0qmu1kK0neShfzbyo9P6Bso4IEvDCCBLgwDgYDVR0PAQH/BAQDAgP4MB0GA1UdDgQWBBRE0AaQedC1hI95c5hrJeZNN9VGOjA0BgkrBgEEAYI3FQcEJzAlBh0qhQMCAjIBCe71XYbswzWFsZVkhsvwMoKkP4G3CAIBAQIBADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCBtwYIKwYBBQUHAQEEgaowgacwMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLmZjaWl0LnJ1L29jc3AtcXVhbC9vY3NwLnNyZjA3BggrBgEFBQcwAoYraHR0cDovL2NkcDEuZmNpaXQucnUvY2RwL2NhLXF1YWxfMl8yMDEyLmNlcjA3BggrBgEFBQcwAoYraHR0cDovL2NkcDIuZmNpaXQucnUvY2RwL2NhLXF1YWxfMl8yMDEyLmNlcjAdBgNVHSAEFjAUMAgGBiqFA2RxATAIBgYqhQNkcQIwggEUBgUqhQNkcASCAQkwggEFDDLQn9CQ0JrQnCAi0JrRgNC40L/RgtC+0J/RgNC+IEhTTSIg0LLQtdGA0YHQuNGPIDIuMAwx0J/QkNCaICLQmtGA0LjQv9GC0L7Qn
9GA0L4g0KPQpiIg0LLQtdGA0YHQuNC5IDIuMAxN0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YHRgtCy0LjRjyDihJYg0KHQpC8xMjQtMzQ3NSDQvtGCIDEwLjA4LjIwMTgMTdCh0LXRgNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGB0YLQstC40Y8g4oSWINCh0KQvMTI4LTM4NzAg0L7RgiAyMy4wNy4yMDIwMD0GBSqFA2RvBDQMMtCh0JrQl9CYICLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiDQstC10YDRgdC40LkgNC4wMIGlBgNVHR8EgZ0wgZowS6BJoEeGRWh0dHA6Ly9jZHAxLmZjaWl0LnJ1L2NkcC9kZDM5MWE0M2JhMjBkNWQ4MGNlYTQ4ZGY4YjYyZTA0MDMwMjI4YmUyLmNybDBLoEmgR4ZFaHR0cDovL2NkcDIuZmNpaXQucnUvY2RwL2RkMzkxYTQzYmEyMGQ1ZDgwY2VhNDhkZjhiNjJlMDQwMzAyMjhiZTIuY3JsMIIBXwYDVR0jBIIBVjCCAVKAFN05GkO6INXYDOpI34ti4EAwIovioYIBLKSCASgwggEkMR4wHAYJKoZIhvcNAQkBFg9kaXRAbWluc3Z5YXoucnUxCzAJBgNVBAYTAlJVMRgwFgYDVQQIDA83NyDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxLjAsBgNVBAkMJdGD0LvQuNGG0LAg0KLQstC10YDRgdC60LDRjywg0LTQvtC8IDcxLDAqBgNVBAoMI9Cc0LjQvdC60L7QvNGB0LLRj9C30Ywg0KDQvtGB0YHQuNC4MRgwFgYFKoUDZAESDTEwNDc3MDIwMjY3MDExGjAYBggqhQMDgQMBARIMMDA3NzEwNDc0Mzc1MSwwKgYDVQQDDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQuIIKfGTf6AAAAA
ABqTAKBggqhQMHAQEDAgNBAIXfLcyHtg+Vg5NT8otSI7nXA5TktTqXyVU1sJTE8tDl67ZzYe1woedhWkY3Yf46vhvLOTuzoa7MScGiYo6PQ68xggYLMIIGBwIBATCCAZEwggF6MRowGAYJKoZIhvcNAQkBFgtjYUBmY2lpdC5ydTEYMBYGBSqFA2QBEg0xMTA3Nzk5MDA3NDI1MRowGAYIKoUDA4EDAQESDDAwNzcwODIzNzc0NzELMAkGA1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxRTBDBgNVBAkMPNGD0LvQuNGG0LAg0JTQvtC70LPQvtGA0YPQutC+0LLRgdC60LDRjywg0LQuIDE1LCDRgdGC0YAuIDQtNTFmMGQGA1UECgxd0KTQvtC90LQgItCm0LXQvdGC0YAg0LjQvdC90L7QstCw0YbQuNC5INC4INC40L3RhNC+0YDQvNCw0YbQuNC+0L3QvdGL0YUg0YLQtdGF0L3QvtC70L7Qs9C40LkiMTEwLwYDVQQDDCjQpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40LkiAhEBI22ZAEWs+YVOrQBRYw07aDAMBggqhQMHAQECAgUAoIIEDTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIFqJ8w8Ec378z37rDc0Ek1z2lQtcSun5AmiguQ3O1gakMIIB0AYLKoZIhvcNAQkQAgwxggG/MIIBuzCCAbcwggGzBBSZWkyIhPAGtiV/XYVyYMjXIuQ5ajCCAZkwggGCpIIBfjCCAXoxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MRgwFgYFKoUDZAESDTExMDc3OTkwMDc0MjUxGjAYBggqhQMDgQMBARIMMDA3NzA4MjM3NzQ3MQswCQYDVQQGEwJSVTEcMBoGA1UECAw
TNzcg0LMuINCc0L7RgdC60LLQsDEZMBcGA1UEBwwQ0LMuINCc0L7RgdC60LLQsDFFMEMGA1UECQw80YPQu9C40YbQsCDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPLCDQtC4gMTUsINGB0YLRgC4gNC01MWYwZAYDVQQKDF3QpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40Lkg0Lgg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90YvRhSDRgtC10YXQvdC+0LvQvtCz0LjQuSIxMTAvBgNVBAMMKNCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSICEQEjbZkARaz5hU6tAFFjDTtoMIIB6AYLKoZIhvcNAQkQAi8xggHXMIIB0zCCAc8wggHLMAoGCCqFAwcBAQICBCDpZDgkHHPAkwpVW3h3Cbem5FlmToE1I1s6xcGkX2itjDCCAZkwggGCpIIBfjCCAXoxGjAYBgkqhkiG9w0BCQEWC2NhQGZjaWl0LnJ1MRgwFgYFKoUDZAESDTExMDc3OTkwMDc0MjUxGjAYBggqhQMDgQMBARIMMDA3NzA4MjM3NzQ3MQswCQYDVQQGEwJSVTEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDEZMBcGA1UEBwwQ0LMuINCc0L7RgdC60LLQsDFFMEMGA1UECQw80YPQu9C40YbQsCDQlNC+0LvQs9C+0YDRg9C60L7QstGB0LrQsNGPLCDQtC4gMTUsINGB0YLRgC4gNC01MWYwZAYDVQQKDF3QpNC+0L3QtCAi0KbQtdC90YLRgCDQuNC90L3QvtCy0LDRhtC40Lkg0Lgg0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90YvRhSDRgtC10YXQvdC+0LvQvtCz0LjQuSIxMTAvBgNVBAMMKNCk0L7QvdC0ICLQptC10L3RgtGAINC40L3QvdC+0LLQsNGG0LjQuSICEQEj
bZkARaz5hU6tAFFjDTtoMAwGCCqFAwcBAQEBBQAEQFvfl2gVuLI62+WuFNxq4M6zyw9LC8riPcr3AYJnxAdcaqMgQLGbN5+KU4Mbi9F1rfs8ym4pxIb+cUmDkEHa+Bo="
}
- Словарь атрибутов закодированный в Base64
ewoiMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTQiIDogIk1JSVBYZ1lKS29aSWh2Y05BUWNDb0lJUFR6Q0NEMHNDQVFNeERqQU1CZ2dxaFFNSEFRRUNBZ1VBTUdzR0N5cUdTSWIzRFFFSkVBRUVvRndFV2pCWUFnRUJCZ0VwTURBd0RBWUlLb1VEQndFQkFnSUZBQVFnSTRqTzgvUDVHUDZvK2N1TStVcnpRRDlvcHRWMUVzY3g5UWVSSEZxZFY0a0NEUUVVTnFYSkFBQUFBQUFBZ0RJWUR6SXdNakF4TWpJNE1UazFPREV4V3FDQ0NMZ3dnZ2kwTUlJSVlhQURBZ0VDQWhFQkkyMlpBRVdzK1lWT3JRQlJZdzA3YURBS0JnZ3FoUU1IQVFFREFqQ0NBWG94R2pBWUJna3Foa2lHOXcwQkNRRVdDMk5oUUdaamFXbDBMbkoxTVJnd0ZnWUZLb1VEWkFFU0RURXhNRGMzT1Rrd01EYzBNalV4R2pBWUJnZ3FoUU1EZ1FNQkFSSU1NREEzTnpBNE1qTTNOelEzTVFzd0NRWURWUVFHRXdKU1ZURWNNQm9HQTFVRUNBd1ROemNnMExNdUlOQ2MwTDdSZ2RDNjBMTFFzREVaTUJjR0ExVUVCd3dRMExNdUlOQ2MwTDdSZ2RDNjBMTFFzREZGTUVNR0ExVUVDUXc4MFlQUXU5QzQwWWJRc0NEUWxOQyswTHZRczlDKzBZRFJnOUM2MEw3UXN0R0IwTHJRc05HUExDRFF0QzRnTVRVc0lOR0IwWUxSZ0M0Z05DMDFNV1l3WkFZRFZRUUtERjNRcE5DKzBMM1F0Q0FpMEtiUXRkQzkwWUxSZ0NEUXVOQzkwTDNRdnRDeTBMRFJodEM0MExrZzBMZ2cwTGpRdmRHRTBMN1JnTkM4MExEUmh0QzQwTDdRdmRDOTBZdlJoU0RSZ3RDMTBZWFF2ZEMrMEx2UXZ0Q3owTGpRdVNJeE1UQXZCZ05WQkFNTUtOQ2swTDdRdmRDMElDTFFwdEMxMEwzUmd0R0FJTkM0MEwzUXZkQyswTExRc05HRzBMalF1U0l3SGhjTk1qQXdPVEk1TURrd09ETTNXaGNOTWpFd09USTVNRGt3T0RNM1dqQ0NBWE14R0RBV0JnVXFoUU5rQVJJTk1URXdOemM1T1RBd056UXlOVEVhTUJnR0NDcUZBd09CQXdFQkVnd3dNRGMzTURneU16YzNORGN4R2pBWUJna3Foa2lHOXcwQkNRRVdDMk5oUUdaamFXbDBMbkoxTVQ0d1BBWURWUVFKRERYUmc5QzdMaURRbE5DKzBMdlFzOUMrMFlEUmc5QzYwTDdRc3RHQjBMclFzTkdQSU5DMExpQXhOU0RSZ2RHQzBZQXVJRFF0TlRFTE1Ba0cKQTFVRUJoTUNVbFV4SERBYUJnTlZCQWdNRXpjM0lOQ3pMaURRbk5DKzBZSFF1dEN5MExBeEdUQVhCZ05WQkFjTUVOQ3pMaURRbk5DKzBZSFF1dEN5MExBeFpqQmtCZ05WQkFvTVhkQ2swTDdRdmRDMElDTFFwdEMxMEwzUmd0R0FJTkM0MEwzUXZkQyswTExRc05HRzBMalF1U0RRdUNEUXVOQzkwWVRRdnRHQTBMelFzTkdHMExqUXZ0QzkwTDNSaTlHRklOR0MwTFhSaGRDOTBMN1F1OUMrMExQUXVOQzVJakV4TUM4R0ExVUVBd3dvMEtUUXZ0QzkwTFFnSXRDbTBMWFF2ZEdDMFlBZzBMalF2ZEM5MEw3UXN0Q3cwWWJRdU5DNUlqQm1NQjhHQ0NxRkF3Y0JBUUVCTUJNR0J5cUZBd0lDSkFBR0NDcUZBd2NCQVFJQ0EwTUFCRUNndHhzRU0xWGhVWVZ1clZ2Q2RjY1VrUTRkUTJONDl4OW1UMHJua3g5dGh6UmcvV0V4N2kzVTNidmNFSVZMZXIwcW11MWtLMG5lU2hmemJ5bzlQNkJzbzRJRXZEQ0NCTGd3RGdZRFZSMFBBUUgvQkFRREFnUDRNQjBHQTFVZERnUVdCQlJFMEFhUWVkQzFoSTk1YzVockplWk5OOVZHT2pBMEJna3JCZ0VFQVlJM0ZRY0VKekFsQmgwcWhRTUNBaklCQ2U3MVhZYnN3eldGc1pWa2hzdndNb0trUDRHM0NBSUJBUUlCQURBV0JnTlZIU1VCQWY4RUREQUtCZ2dyQmdFRkJRY0RDRENCdHdZSUt3WUJCUVVIQVFFRWdhb3dnYWN3TXdZSUt3WUJCUVVITUFHR0oyaDBkSEE2THk5dlkzTndMbVpqYVdsMExuSjFMMjlqYzNBdGNYVmhiQzl2WTNOd0xuTnlaakEzQmdnckJnRUZCUWN3QW9ZcmFIUjBjRG92TDJOa2NERXVabU5wYVhRdWNuVXZZMlJ3TDJOaExYRjFZV3hmTWw4eU1ERXlMbU5sY2pBM0JnZ3JCZ0VGQlFjd0FvWXJhSFIwY0RvdkwyTmtjREl1Wm1OcGFYUXVjblV2WTJSd0wyTmhMWEYxWVd4Zk1sOHlNREV5TG1ObGNqQWRCZ05WSFNBRUZqQVVNQWdHQmlxRkEyUnhBVEFJQmdZcWhRTmtjUUl3Z2dFVUJnVXFoUU5rY0FTQ0FRa3dnZ0VGRERMUW45Q1EwSnJRbkNBaTBKclJnTkM0MEwvUmd0QyswSi9SZ05DK0lFaFRUU0lnMExMUXRkR0EwWUhRdU5HUElESXVNQXd4MEovUWtOQ2FJQ0xRbXRHQTBMalF2OUdDMEw3UW4KOUdBMEw0ZzBLUFFwaUlnMExMUXRkR0EwWUhRdU5DNUlESXVNQXhOMEtIUXRkR0EwWUxRdU5HRTBMalF1dEN3MFlJZzBZSFF2dEMrMFlMUXN0QzEwWUhSZ3RDeTBMalJqeURpaEpZZzBLSFFwQzh4TWpRdE16UTNOU0RRdnRHQ0lERXdMakE0TGpJd01UZ01UZENoMExYUmdOR0MwTGpSaE5DNDBMclFzTkdDSU5HQjBMN1F2dEdDMExMUXRkR0IwWUxRc3RDNDBZOGc0b1NXSU5DaDBLUXZNVEk0TFRNNE56QWcwTDdSZ2lBeU15NHdOeTR5TURJd01EMEdCU3FGQTJSdkJEUU1NdENoMEpyUWw5Q1lJQ0xRbXRHQTBMalF2OUdDMEw3UW45R0EwTDRnUTFOUUlpRFFzdEMxMFlEUmdkQzQwTGtnTkM0d01JR2xCZ05WSFI4RWdaMHdnWm93UzZCSm9FZUdSV2gwZEhBNkx5OWpaSEF4TG1aamFXbDBMbkoxTDJOa2NDOWtaRE01TVdFME0ySmhNakJrTldRNE1HTmxZVFE0WkdZNFlqWXlaVEEwTURNd01qSTRZbVV5TG1OeWJEQkxvRW1nUjRaRmFIUjBjRG92TDJOa2NESXVabU5wYVhRdWNuVXZZMlJ3TDJSa016a3hZVFF6WW1FeU1HUTFaRGd3WTJWaE5EaGtaamhpTmpKbE1EUXdNekF5TWpoaVpUSXVZM0pzTUlJQlh3WURWUjBqQklJQlZqQ0NBVktBRk4wNUdrTzZJTlhZRE9wSTM0dGk0RUF3SW92aW9ZSUJMS1NDQVNnd2dnRWtNUjR3SEFZSktvWklodmNOQVFrQkZnOWthWFJBYldsdWMzWjVZWG91Y25VeEN6QUpCZ05WQkFZVEFsSlZNUmd3RmdZRFZRUUlEQTgzTnlEUW5OQyswWUhRdXRDeTBMQXhHVEFYQmdOVkJBY01FTkN6TGlEUW5OQyswWUhRdXRDeTBMQXhMakFzQmdOVkJBa01KZEdEMEx2UXVOR0cwTEFnMEtMUXN0QzEwWURSZ2RDNjBMRFJqeXdnMExUUXZ0QzhJRGN4TERBcUJnTlZCQW9NSTlDYzBMalF2ZEM2MEw3UXZOR0IwTExSajlDMzBZd2cwS0RRdnRHQjBZSFF1TkM0TVJnd0ZnWUZLb1VEWkFFU0RURXdORGMzTURJd01qWTNNREV4R2pBWUJnZ3FoUU1EZ1FNQkFSSU1NREEzTnpFd05EYzBNemMxTVN3d0tnWURWUVFERENQUW5OQzQwTDNRdXRDKzBMelJnZEN5MFkvUXQ5R01JTkNnMEw3UmdkR0IwTGpRdUlJS2ZHVGY2QUFBQUEKQUJxVEFLQmdncWhRTUhBUUVEQWdOQkFJWGZMY3lIdGcrVmc1TlQ4b3RTSTduWEE1VGt0VHFYeVZVMXNKVEU4dERsNjdaelllMXdvZWRoV2tZM1lmNDZ2aHZMT1R1em9hN01TY0dpWW82UFE2OHhnZ1lMTUlJR0J3SUJBVENDQVpFd2dnRjZNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUJtWTJscGRDNXlkVEVZTUJZR0JTcUZBMlFCRWcweE1UQTNOems1TURBM05ESTFNUm93R0FZSUtvVURBNEVEQVFFU0REQXdOemN3T0RJek56YzBOekVMTUFrR0ExVUVCaE1DVWxVeEhEQWFCZ05WQkFnTUV6YzNJTkN6TGlEUW5OQyswWUhRdXRDeTBMQXhHVEFYQmdOVkJBY01FTkN6TGlEUW5OQyswWUhRdXRDeTBMQXhSVEJEQmdOVkJBa01QTkdEMEx2UXVOR0cwTEFnMEpUUXZ0QzcwTFBRdnRHQTBZUFF1dEMrMExMUmdkQzYwTERSanl3ZzBMUXVJREUxTENEUmdkR0MwWUF1SURRdE5URm1NR1FHQTFVRUNneGQwS1RRdnRDOTBMUWdJdENtMExYUXZkR0MwWUFnMExqUXZkQzkwTDdRc3RDdzBZYlF1TkM1SU5DNElOQzQwTDNSaE5DKzBZRFF2TkN3MFliUXVOQyswTDNRdmRHTDBZVWcwWUxRdGRHRjBMM1F2dEM3MEw3UXM5QzQwTGtpTVRFd0x3WURWUVFERENqUXBOQyswTDNRdENBaTBLYlF0ZEM5MFlMUmdDRFF1TkM5MEwzUXZ0Q3kwTERSaHRDNDBMa2lBaEVCSTIyWkFFV3MrWVZPclFCUll3MDdhREFNQmdncWhRTUhBUUVDQWdVQW9JSUVEVEFhQmdrcWhraUc5dzBCQ1FNeERRWUxLb1pJaHZjTkFRa1FBUVF3THdZSktvWklodmNOQVFrRU1TSUVJRnFKOHc4RWMzNzh6MzdyRGMwRWsxejJsUXRjU3VuNUFtaWd1UTNPMWdha01JSUIwQVlMS29aSWh2Y05BUWtRQWd3eGdnRy9NSUlCdXpDQ0FiY3dnZ0d6QkJTWldreUloUEFHdGlWL1hZVnlZTWpYSXVRNWFqQ0NBWmt3Z2dHQ3BJSUJmakNDQVhveEdqQVlCZ2txaGtpRzl3MEJDUUVXQzJOaFFHWmphV2wwTG5KMU1SZ3dGZ1lGS29VRFpBRVNEVEV4TURjM09Ua3dNRGMwTWpVeEdqQVlCZ2dxaFFNRGdRTUJBUklNTURBM056QTRNak0zTnpRM01Rc3dDUVlEVlFRR0V3SlNWVEVjTUJvR0ExVUVDQXcKVE56Y2cwTE11SU5DYzBMN1JnZEM2MExMUXNERVpNQmNHQTFVRUJ3d1EwTE11SU5DYzBMN1JnZEM2MExMUXNERkZNRU1HQTFVRUNRdzgwWVBRdTlDNDBZYlFzQ0RRbE5DKzBMdlFzOUMrMFlEUmc5QzYwTDdRc3RHQjBMclFzTkdQTENEUXRDNGdNVFVzSU5HQjBZTFJnQzRnTkMwMU1XWXdaQVlEVlFRS0RGM1FwTkMrMEwzUXRDQWkwS2JRdGRDOTBZTFJnQ0RRdU5DOTBMM1F2dEN5MExEUmh0QzQwTGtnMExnZzBMalF2ZEdFMEw3UmdOQzgwTERSaHRDNDBMN1F2ZEM5MFl2UmhTRFJndEMxMFlYUXZkQyswTHZRdnRDejBMalF1U0l4TVRBdkJnTlZCQU1NS05DazBMN1F2ZEMwSUNMUXB0QzEwTDNSZ3RHQUlOQzQwTDNRdmRDKzBMTFFzTkdHMExqUXVTSUNFUUVqYlprQVJhejVoVTZ0QUZGakRUdG9NSUlCNkFZTEtvWklodmNOQVFrUUFpOHhnZ0hYTUlJQjB6Q0NBYzh3Z2dITE1Bb0dDQ3FGQXdjQkFRSUNCQ0RwWkRna0hIUEFrd3BWVzNoM0NiZW01RmxtVG9FMUkxczZ4Y0drWDJpdGpEQ0NBWmt3Z2dHQ3BJSUJmakNDQVhveEdqQVlCZ2txaGtpRzl3MEJDUUVXQzJOaFFHWmphV2wwTG5KMU1SZ3dGZ1lGS29VRFpBRVNEVEV4TURjM09Ua3dNRGMwTWpVeEdqQVlCZ2dxaFFNRGdRTUJBUklNTURBM056QTRNak0zTnpRM01Rc3dDUVlEVlFRR0V3SlNWVEVjTUJvR0ExVUVDQXdUTnpjZzBMTXVJTkNjMEw3UmdkQzYwTExRc0RFWk1CY0dBMVVFQnd3UTBMTXVJTkNjMEw3UmdkQzYwTExRc0RGRk1FTUdBMVVFQ1F3ODBZUFF1OUM0MFliUXNDRFFsTkMrMEx2UXM5QyswWURSZzlDNjBMN1FzdEdCMExyUXNOR1BMQ0RRdEM0Z01UVXNJTkdCMFlMUmdDNGdOQzAxTVdZd1pBWURWUVFLREYzUXBOQyswTDNRdENBaTBLYlF0ZEM5MFlMUmdDRFF1TkM5MEwzUXZ0Q3kwTERSaHRDNDBMa2cwTGdnMExqUXZkR0UwTDdSZ05DODBMRFJodEM0MEw3UXZkQzkwWXZSaFNEUmd0QzEwWVhRdmRDKzBMdlF2dEN6MExqUXVTSXhNVEF2QmdOVkJBTU1LTkNrMEw3UXZkQzBJQ0xRcHRDMTBMM1JndEdBSU5DNDBMM1F2ZEMrMExMUXNOR0cwTGpRdVNJQ0VRRWoKYlprQVJhejVoVTZ0QUZGakRUdG9NQXdHQ0NxRkF3Y0JBUUVCQlFBRVFGdmZsMmdWdUxJNjIrV3VGTnhxNE02enl3OUxDOHJpUGNyM0FZSm54QWRjYXFNZ1FMR2JONStLVTRNYmk5RjFyZnM4eW00cHhJYitjVW1Ea0VIYStCbz0iCgp9
** Пример запроса **
Примечание
Пример для v2 API DSS (метод /signature).
При использовании v1 API DSS ( /documents) передача параметров подписи
Parameters
полностью аналогична.
POST /SignServer/rest/api/v2/signature/ HTTP/1.1
Host: host
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLC ... YEIhOv0hS0ij0yvf_hpkA
Content-Length: 7315
{
"BinaryData": [{
"RefId" : "e9dfe95b-1706-4754-a791-165d79aa968b"
}],
"Signature" :
{
"CertificateId": "0",
"Type": "CMS",
"Parameters": {
"IsDetached " : "false",
"AuthenticatedAttributes" : "ewoiMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTQiIDogIk1JSVBYZ1lKS29aSWh2Y05BUWNDb0lJUFR6Q0NEMHNDQVFNeERqQU1CZ2dxaFFNSEFRRUNBZ1VBTUdzR0N5cUdTSWIzRFFFSkVBRUVvRndFV2pCWUFnRUJCZ0VwTURBd0RBWUlLb1VEQndFQkFnSUZBQVFnSTRqTzgvUDVHUDZvK2N1TStVcnpRRDlvcHRWMUVzY3g5UWVSSEZxZFY0a0NEUUVVTnFYSkFBQUFBQUFBZ0RJWUR6SXdNakF4TWpJNE1UazFPREV4V3FDQ0NMZ3dnZ2kwTUlJSVlhQURBZ0VDQWhFQkkyMlpBRVdzK1lWT3JRQlJZdzA3YURBS0JnZ3FoUU1IQVFFREFqQ0NBWG94R2pBWUJna3Foa2lHOXcwQkNRRVdDMk5oUUdaamFXbDBMbkoxTVJnd0ZnWUZLb1VEWkFFU0RURXhNRGMzT1Rrd01EYzBNalV4R2pBWUJnZ3FoUU1EZ1FNQkFSSU1NREEzTnpBNE1qTTNOelEzTVFzd0NRWURWUVFHRXdKU1ZURWNNQm9HQTFVRUNBd1ROemNnMExNdUlOQ2MwTDdSZ2RDNjBMTFFzREVaTUJjR0ExVUVCd3dRMExNdUlOQ2MwTDdSZ2RDNjBMTFFzREZGTUVNR0ExVUVDUXc4MFlQUXU5QzQwWWJRc0NEUWxOQyswTHZRczlDKzBZRFJnOUM2MEw3UXN0R0IwTHJRc05HUExDRFF0QzRnTVRVc0lOR0IwWUxSZ0M0Z05DMDFNV1l3WkFZRFZRUUtERjNRcE5DKzBMM1F0Q0FpMEtiUXRkQzkwWUxSZ0NEUXVOQzkwTDNRdnRDeTBMRFJodEM0MExrZzBMZ2cwTGpRdmRHRTBMN1JnTkM4MExEUmh0QzQwTDdRdmRDOTBZdlJoU0RSZ3RDMTBZWFF2ZEMrMEx2UXZ0Q3owTGpRdVNJeE1UQXZCZ05WQkFNTUtOQ2swTDdRdmRDMElDTFFwdEMxMEwzUmd0R0FJTkM0MEwzUXZkQyswTExRc05HRzBMalF1U0l3SGhjTk1qQXdPVEk1TURrd09ETTNXaGNOTWpFd09USTVNRGt3T0RNM1dqQ0NBWE14R0RBV0JnVXFoUU5rQVJJTk1URXdOemM1T1RBd056UXlOVEVhTUJnR0NDcUZBd09CQXdFQkVnd3dNRGMzTURneU16YzNORGN4R2pBWUJna3Foa2lHOXcwQkNRRVdDMk5oUUdaamFXbDBMbkoxTVQ0d1BBWURWUVFKRERYUmc5QzdMaURRbE5DKzBMdlFzOUMrMFlEUmc5QzYwTDdRc3RHQjBMclFzTkdQSU5DMExpQXhOU0RSZ2RHQzBZQXVJRFF0TlRFTE1Ba0cKQTFVRUJoTUNVbFV4SERBYUJnTlZCQWdNRXpjM0lOQ3pMaURRbk5DKzBZSFF1dEN5MExBeEdUQVhCZ05WQkFjTUVOQ3pMaURRbk5DKzBZSFF1dEN5MExBeFpqQmtCZ05WQkFvTVhkQ2swTDdRdmRDMElDTFFwdEMxMEwzUmd0R0FJTkM0MEwzUXZkQyswTExRc05HRzBMalF1U0RRdUNEUXVOQzkwWVRRdnRHQTBMelFzTkdHMExqUXZ0QzkwTDNSaTlHRklOR0MwTFhSaGRDOTBMN1F1OUMrMExQUXVOQzVJakV4TUM4R0ExVUVBd3dvMEtUUXZ0QzkwTFFnSXRDbTBMWFF2ZEdDMFlBZzBMalF2ZEM5MEw3UXN0Q3cwWWJRdU5DNUlqQm1NQjhHQ0NxRkF3Y0JBUUVCTUJNR0J5cUZBd0lDSkFBR0NDcUZBd2NCQVFJQ0EwTUFCRUNndHhzRU0xWGhVWVZ1clZ2Q2RjY1VrUTRkUTJONDl4OW1UMHJua3g5dGh6UmcvV0V4N2kzVTNidmNFSVZMZXIwcW11MWtLMG5lU2hmemJ5bzlQNkJzbzRJRXZEQ0NCTGd3RGdZRFZSMFBBUUgvQkFRREFnUDRNQjBHQTFVZERnUVdCQlJFMEFhUWVkQzFoSTk1YzVockplWk5OOVZHT2pBMEJna3JCZ0VFQVlJM0ZRY0VKekFsQmgwcWhRTUNBaklCQ2U3MVhZYnN3eldGc1pWa2hzdndNb0trUDRHM0NBSUJBUUlCQURBV0JnTlZIU1VCQWY4RUREQUtCZ2dyQmdFRkJRY0RDRENCdHdZSUt3WUJCUVVIQVFFRWdhb3dnYWN3TXdZSUt3WUJCUVVITUFHR0oyaDBkSEE2THk5dlkzTndMbVpqYVdsMExuSjFMMjlqYzNBdGNYVmhiQzl2WTNOd0xuTnlaakEzQmdnckJnRUZCUWN3QW9ZcmFIUjBjRG92TDJOa2NERXVabU5wYVhRdWNuVXZZMlJ3TDJOaExYRjFZV3hmTWw4eU1ERXlMbU5sY2pBM0JnZ3JCZ0VGQlFjd0FvWXJhSFIwY0RvdkwyTmtjREl1Wm1OcGFYUXVjblV2WTJSd0wyTmhMWEYxWVd4Zk1sOHlNREV5TG1ObGNqQWRCZ05WSFNBRUZqQVVNQWdHQmlxRkEyUnhBVEFJQmdZcWhRTmtjUUl3Z2dFVUJnVXFoUU5rY0FTQ0FRa3dnZ0VGRERMUW45Q1EwSnJRbkNBaTBKclJnTkM0MEwvUmd0QyswSi9SZ05DK0lFaFRUU0lnMExMUXRkR0EwWUhRdU5HUElESXVNQXd4MEovUWtOQ2FJQ0xRbXRHQTBMalF2OUdDMEw3UW4KOUdBMEw0ZzBLUFFwaUlnMExMUXRkR0EwWUhRdU5DNUlESXVNQXhOMEtIUXRkR0EwWUxRdU5HRTBMalF1dEN3MFlJZzBZSFF2dEMrMFlMUXN0QzEwWUhSZ3RDeTBMalJqeURpaEpZZzBLSFFwQzh4TWpRdE16UTNOU0RRdnRHQ0lERXdMakE0TGpJd01UZ01UZENoMExYUmdOR0MwTGpSaE5DNDBMclFzTkdDSU5HQjBMN1F2dEdDMExMUXRkR0IwWUxRc3RDNDBZOGc0b1NXSU5DaDBLUXZNVEk0TFRNNE56QWcwTDdSZ2lBeU15NHdOeTR5TURJd01EMEdCU3FGQTJSdkJEUU1NdENoMEpyUWw5Q1lJQ0xRbXRHQTBMalF2OUdDMEw3UW45R0EwTDRnUTFOUUlpRFFzdEMxMFlEUmdkQzQwTGtnTkM0d01JR2xCZ05WSFI4RWdaMHdnWm93UzZCSm9FZUdSV2gwZEhBNkx5OWpaSEF4TG1aamFXbDBMbkoxTDJOa2NDOWtaRE01TVdFME0ySmhNakJrTldRNE1HTmxZVFE0WkdZNFlqWXlaVEEwTURNd01qSTRZbVV5TG1OeWJEQkxvRW1nUjRaRmFIUjBjRG92TDJOa2NESXVabU5wYVhRdWNuVXZZMlJ3TDJSa016a3hZVFF6WW1FeU1HUTFaRGd3WTJWaE5EaGtaamhpTmpKbE1EUXdNekF5TWpoaVpUSXVZM0pzTUlJQlh3WURWUjBqQklJQlZqQ0NBVktBRk4wNUdrTzZJTlhZRE9wSTM0dGk0RUF3SW92aW9ZSUJMS1NDQVNnd2dnRWtNUjR3SEFZSktvWklodmNOQVFrQkZnOWthWFJBYldsdWMzWjVZWG91Y25VeEN6QUpCZ05WQkFZVEFsSlZNUmd3RmdZRFZRUUlEQTgzTnlEUW5OQyswWUhRdXRDeTBMQXhHVEFYQmdOVkJBY01FTkN6TGlEUW5OQyswWUhRdXRDeTBMQXhMakFzQmdOVkJBa01KZEdEMEx2UXVOR0cwTEFnMEtMUXN0QzEwWURSZ2RDNjBMRFJqeXdnMExUUXZ0QzhJRGN4TERBcUJnTlZCQW9NSTlDYzBMalF2ZEM2MEw3UXZOR0IwTExSajlDMzBZd2cwS0RRdnRHQjBZSFF1TkM0TVJnd0ZnWUZLb1VEWkFFU0RURXdORGMzTURJd01qWTNNREV4R2pBWUJnZ3FoUU1EZ1FNQkFSSU1NREEzTnpFd05EYzBNemMxTVN3d0tnWURWUVFERENQUW5OQzQwTDNRdXRDKzBMelJnZEN5MFkvUXQ5R01JTkNnMEw3UmdkR0IwTGpRdUlJS2ZHVGY2QUFBQUEKQUJxVEFLQmdncWhRTUhBUUVEQWdOQkFJWGZMY3lIdGcrVmc1TlQ4b3RTSTduWEE1VGt0VHFYeVZVMXNKVEU4dERsNjdaelllMXdvZWRoV2tZM1lmNDZ2aHZMT1R1em9hN01TY0dpWW82UFE2OHhnZ1lMTUlJR0J3SUJBVENDQVpFd2dnRjZNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUJtWTJscGRDNXlkVEVZTUJZR0JTcUZBMlFCRWcweE1UQTNOems1TURBM05ESTFNUm93R0FZSUtvVURBNEVEQVFFU0REQXdOemN3T0RJek56YzBOekVMTUFrR0ExVUVCaE1DVWxVeEhEQWFCZ05WQkFnTUV6YzNJTkN6TGlEUW5OQyswWUhRdXRDeTBMQXhHVEFYQmdOVkJBY01FTkN6TGlEUW5OQyswWUhRdXRDeTBMQXhSVEJEQmdOVkJBa01QTkdEMEx2UXVOR0cwTEFnMEpUUXZ0QzcwTFBRdnRHQTBZUFF1dEMrMExMUmdkQzYwTERSanl3ZzBMUXVJREUxTENEUmdkR0MwWUF1SURRdE5URm1NR1FHQTFVRUNneGQwS1RRdnRDOTBMUWdJdENtMExYUXZkR0MwWUFnMExqUXZkQzkwTDdRc3RDdzBZYlF1TkM1SU5DNElOQzQwTDNSaE5DKzBZRFF2TkN3MFliUXVOQyswTDNRdmRHTDBZVWcwWUxRdGRHRjBMM1F2dEM3MEw3UXM5QzQwTGtpTVRFd0x3WURWUVFERENqUXBOQyswTDNRdENBaTBLYlF0ZEM5MFlMUmdDRFF1TkM5MEwzUXZ0Q3kwTERSaHRDNDBMa2lBaEVCSTIyWkFFV3MrWVZPclFCUll3MDdhREFNQmdncWhRTUhBUUVDQWdVQW9JSUVEVEFhQmdrcWhraUc5dzBCQ1FNeERRWUxLb1pJaHZjTkFRa1FBUVF3THdZSktvWklodmNOQVFrRU1TSUVJRnFKOHc4RWMzNzh6MzdyRGMwRWsxejJsUXRjU3VuNUFtaWd1UTNPMWdha01JSUIwQVlMS29aSWh2Y05BUWtRQWd3eGdnRy9NSUlCdXpDQ0FiY3dnZ0d6QkJTWldreUloUEFHdGlWL1hZVnlZTWpYSXVRNWFqQ0NBWmt3Z2dHQ3BJSUJmakNDQVhveEdqQVlCZ2txaGtpRzl3MEJDUUVXQzJOaFFHWmphV2wwTG5KMU1SZ3dGZ1lGS29VRFpBRVNEVEV4TURjM09Ua3dNRGMwTWpVeEdqQVlCZ2dxaFFNRGdRTUJBUklNTURBM056QTRNak0zTnpRM01Rc3dDUVlEVlFRR0V3SlNWVEVjTUJvR0ExVUVDQXcKVE56Y2cwTE11SU5DYzBMN1JnZEM2MExMUXNERVpNQmNHQTFVRUJ3d1EwTE11SU5DYzBMN1JnZEM2MExMUXNERkZNRU1HQTFVRUNRdzgwWVBRdTlDNDBZYlFzQ0RRbE5DKzBMdlFzOUMrMFlEUmc5QzYwTDdRc3RHQjBMclFzTkdQTENEUXRDNGdNVFVzSU5HQjBZTFJnQzRnTkMwMU1XWXdaQVlEVlFRS0RGM1FwTkMrMEwzUXRDQWkwS2JRdGRDOTBZTFJnQ0RRdU5DOTBMM1F2dEN5MExEUmh0QzQwTGtnMExnZzBMalF2ZEdFMEw3UmdOQzgwTERSaHRDNDBMN1F2ZEM5MFl2UmhTRFJndEMxMFlYUXZkQyswTHZRdnRDejBMalF1U0l4TVRBdkJnTlZCQU1NS05DazBMN1F2ZEMwSUNMUXB0QzEwTDNSZ3RHQUlOQzQwTDNRdmRDKzBMTFFzTkdHMExqUXVTSUNFUUVqYlprQVJhejVoVTZ0QUZGakRUdG9NSUlCNkFZTEtvWklodmNOQVFrUUFpOHhnZ0hYTUlJQjB6Q0NBYzh3Z2dITE1Bb0dDQ3FGQXdjQkFRSUNCQ0RwWkRna0hIUEFrd3BWVzNoM0NiZW01RmxtVG9FMUkxczZ4Y0drWDJpdGpEQ0NBWmt3Z2dHQ3BJSUJmakNDQVhveEdqQVlCZ2txaGtpRzl3MEJDUUVXQzJOaFFHWmphV2wwTG5KMU1SZ3dGZ1lGS29VRFpBRVNEVEV4TURjM09Ua3dNRGMwTWpVeEdqQVlCZ2dxaFFNRGdRTUJBUklNTURBM056QTRNak0zTnpRM01Rc3dDUVlEVlFRR0V3SlNWVEVjTUJvR0ExVUVDQXdUTnpjZzBMTXVJTkNjMEw3UmdkQzYwTExRc0RFWk1CY0dBMVVFQnd3UTBMTXVJTkNjMEw3UmdkQzYwTExRc0RGRk1FTUdBMVVFQ1F3ODBZUFF1OUM0MFliUXNDRFFsTkMrMEx2UXM5QyswWURSZzlDNjBMN1FzdEdCMExyUXNOR1BMQ0RRdEM0Z01UVXNJTkdCMFlMUmdDNGdOQzAxTVdZd1pBWURWUVFLREYzUXBOQyswTDNRdENBaTBLYlF0ZEM5MFlMUmdDRFF1TkM5MEwzUXZ0Q3kwTERSaHRDNDBMa2cwTGdnMExqUXZkR0UwTDdSZ05DODBMRFJodEM0MEw3UXZkQzkwWXZSaFNEUmd0QzEwWVhRdmRDKzBMdlF2dEN6MExqUXVTSXhNVEF2QmdOVkJBTU1LTkNrMEw3UXZkQzBJQ0xRcHRDMTBMM1JndEdBSU5DNDBMM1F2ZEMrMExMUXNOR0cwTGpRdVNJQ0VRRWoKYlprQVJhejVoVTZ0QUZGakRUdG9NQXdHQ0NxRkF3Y0JBUUVCQlFBRVFGdmZsMmdWdUxJNjIrV3VGTnhxNE02enl3OUxDOHJpUGNyM0FZSm54QWRjYXFNZ1FMR2JONStLVTRNYmk5RjFyZnM4eW00cHhJYitjVW1Ea0VIYStCbz0iCgp9"
}
}
}
Пример ответа
{
"Operation": {
"Id": null,
"Result": {
"ProcessedDocuments": [
{
"RefId": "21b40677-0dc6-4868-b2fc-15c1f66b5b53",
"OriginalRefId": "e9dfe95b-1706-4754-a791-165d79aa968b",
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
}
]
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 1609187873
}
}
Подпись в формате 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 ..."