Примеры запросов на шифрование документов средствами REST API
Раздел содержит примеры HTTP-запросов к REST-интерфейсу Сервиса Подписи DSS для зашифрования документов. Примеры показывают использование v2 API DSS.
Виды шифрования
REST-интерфейс Сервиса Подписи DSS позволяет выполнять зашифрование следующими способами:
- Шифрование формата CMS (тип содержимого "зашифрованные данные (encrypted-data)");
- Шифрование XML-документов.
Шифрование документа
Данный подраздел содержит примеры запросов на CMS-шифрование документа.
CMS-шифрование документа без использования Сервиса Обработки Документов (СОД)
Пример запроса
В примере выполняется CMS-шифрование документа, передаваемого в теле запроса.
POST https://host/SignServer/rest/api/v2/encryption HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
Content-Type: application/json; charset=utf-8
Host: host
Expect: 100-continue
{
"BinaryData": [{
"Content" : "VGVzdE1Fc3NhZ2U="
}],
"Encryption":
{
"Type":"CMS",
"Certificates":[
"MIIG0TCCBn6..."]
}
}
Примечание
В параметр Content
передается Base64-закодированное содержимое
документа.
Пример ответа
Сервис Подписи возвращает результат операции.
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
{
"Operation": {
"Id": null,
"Result": {
"ProcessedDocuments": [
{
"RefId": "95813d44-325e-42de-a512-fc1211944a04",
"OriginalRefId": null,
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
}
]
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 0
}
}
Примечание
Результат операции будет содержать список ProcessedDocuments
. Сервис
Подписи загружает обработанные документы в Сервис Обработки Документов.
Поле RefId
содержит идентификатор документа в СОД.
XML-шифрование документа без использования СОД
Пример запроса
В примере выполняется XML-шифрование документа, передаваемого в теле запроса.
POST https://host/SignServer/rest/api/v2/encryption HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
Content-Type: application/json; charset=utf-8
Host: host
Expect: 100-continue
{
"BinaryData": [{
"Content" : "PFRlc3QgdmFsdWU9InRlc3RWYWwiPgo8SW5uZXI+SW5uZXJWYWx1ZTwvSW5uZXI+CjxOdW1WYWw+NTwvTnVtVmFsPgo8L1Rlc3Q+"
}],
"Encryption":
{
"Type":"XML",
"Certificates":[
"MIIG0TCCBn6gAw..."]
}
}
Пример ответа
Сервис Подписи возвращает результат операции.
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
{
"Operation": {
"Id": null,
"Result": {
"ProcessedDocuments": [
{
"RefId": "95813d44-325e-42de-a512-fc1211944a04",
"OriginalRefId": null,
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
}
]
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 0
}
}
Шифрование с передачей ссылки на документ в СОД
Пример запроса
POST https://host/SignServer/rest/api/v2/encryption HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
Content-Type: application/json; charset=utf-8
Host: host
Expect: 100-continue
{
"BinaryData": [{
"RefId" : "8108d47f-8182-4f43-bbad-eb647d0f3e59"
}],
"Encryption":
{
"Type":"XML",
"Certificates":[
"MIIG0T..."]
}
}
Примечание
Ссылка на документ передается в поле RefId
. Для получения ссылки на
документ необходимо предварительно загрузить его в СОД.
Пример ответа
Сервис Подписи возвращает результат операции.
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
{
"Operation": {
"Id": null,
"Result": {
"ProcessedDocuments": [
{
"RefId": "9c702a68-4e56-4fd1-afb3-060c8ffc3e8d",
"OriginalRefId": "8108d47f-8182-4f43-bbad-eb647d0f3e59",
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
}
]
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 0
}
}
Запрос на шифрование нескольких документов
Сервис Подписи обладает возможностью пакетного шифрования документов. Для этого
в объекте BinaryData
необходимо передавать массив документов или ссылок
на документы в СОД.
Пример запроса
Данный пример содержит несколько ссылок RefId
на несколько документов в
СОД.
{
"BinaryData": [
{ "RefId" : "8108d47f-8182-4f43-bbad-eb647d0f3e59" },
{ "RefId" : "d381b02f-a19b-4206-882c-791827c076a3" }
],
"Encryption":
{
"Type":"XML",
"Certificates":[
"MIIG0TCCBn6gAwI..."]
}
}
Пример ответа
Сервис Подписи возвращает результат операции.
{
"Operation": {
"Id": null,
"Result": {
"ProcessedDocuments": [
{
"RefId": "4bab5799-e14a-433b-8aba-a7bef5a70b6c",
"OriginalRefId": "8108d47f-8182-4f43-bbad-eb647d0f3e59",
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
},
{
"RefId": "6eb75281-75cf-4714-94bb-fe1e0997af81",
"OriginalRefId": "d381b02f-a19b-4206-882c-791827c076a3",
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
}
]
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 0
}
}
Пример запроса
Данный пример содержит несколько документов в теле запроса.
POST https://host/SignServer/rest/api/v2/encryption HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
Content-Type: application/json; charset=utf-8
Host: host
Expect: 100-continue
{
"BinaryData": [
{ "Content" : "VGVzdFRleHQx" },
{ "Content" : "VGVzdFRleHQy" }
],
"Encryption":
{
"Type":"CMS",
"Certificates":[
"MIIG0TCCBn6g..."]
}
}
Пример ответа
Сервис Подписи возвращает результат операции.
{
"Operation": {
"Id": null,
"Result": {
"ProcessedDocuments": [
{
"RefId": "42093014-ac1e-4265-9a49-f9c3a48f4b0c",
"OriginalRefId": null,
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
},
{
"RefId": "600fe9e4-b8f0-439f-8d18-9a833a762d0f",
"OriginalRefId": null,
"Content": null,
"Status": "Completed",
"Error": null,
"ErrorDescription": null
}
]
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 0
}
}
Передача параметров зашифрования
Ниже представлен пример запроса, включающий в себя механизм параметров шифрования.
Пример запроса
POST https://host/SignServer/rest/api/v2/encryption HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8CeXycwB6A
Content-Type: application/json; charset=utf-8
Host: host
Expect: 100-continue
{
"BinaryData": [
{ "Content" : "VGVzdFRleHQx" },
{ "Content" : "VGVzdFRleHQy" }
],
"Encryption":
{
"Type":"CMS",
"Certificates":[
"MIIG0TCCBn6gA..."],
"Parameters":
{
"ContentEncoding": "Binary",
"UseFssScenario": "True"
}
}
}
Примечание
Параметры шифрования передаются в объекте Parameters
типа
Dictionary[string,string].