N | Элемент | Описание | Область значений | Мн. |
1 | Подписываемые сведения (ds:Signedlnfo) | набор подписываемых элементов, содержащих хеш бизнес-сообщения и набор инструкций по обработке хеша и подписи | определяется областями значений вложенных элементов | 1 |
1.1 | Метод каноникализации (ds:Canonicalization Method) | инструкции по каноникализации | отсутствует | 1 |
а) | Алгоритм (@Algorithm) | алгоритм каноникализации. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1 | унифицированный | 1 |
1.2 | Метод подписывания (ds:SignatureMethod) | элемент, содержащий алгоритм формирования и проверки подписи | отсутствует | 1 |
а) | Алгоритм (@Algorithm) | идентификатор алгоритма формирования и проверки подписи. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1 | унифицированный | 1 |
1.3 | Ссылка (ds:Reference) | ссылка на данные, для которых формируется хеш | определяется областями значений вложенных элементов | 1 |
а) | Идентификатор (@URI) | идентификатор хешируемой области. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1 | идентификатор элемента документа | 1 |
1.3.1 | Преобразования (ds:Transforms) | инструкции по преобразованиям хешируемой области | определяется областями значений вложенных элементов | 1 |
1.3.1.1 | Преобразование (ds:Transform) | элемент, содержащий единичную инструкцию по преобразованию хешируемой области | определяется областями значений вложенных элементов | 1 |
а) | Алгоритм (@Algorithm) | идентификатор алгоритма преобразования. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1 | унифицированный | 1 |
1.3.1.2 | Метод хеширования (ds:DigestMethod) | сведения о методе хеширования | отсутствует | 1 |
а) | Алгоритм (@Algorithm) | идентификатор алгоритма хеширования. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1 | унифицированный | 1 |
1.3.1.3 | Хеш (ds:DigestValue) | значение хеша | строка символов, закодированная с помощью Base64 | 1 |
2 | Значение подписи (ds:Signature Value) | значение подписи | определяется областями значений вложенных элементов | 1 |
3 | Сведения о ключе (ds:Keylnfo) | сведения об открытом ключе, используемом для проверки подписи | определяется областями значений вложенных элементов | 1 |
3.1 | Ссылка на токен (wsse:SecurityToken Reference) | сведения о местонахождении ключа | определяется областями значений вложенных элементов | 1 |
3.1.1 | Ссылка (wsse:Reference) | элемент, содержащий идентификатор местонахождения ключа | отсутствует | 1 |
а) | Идентификатор (@URI) | идентификатор местонахождения ключа. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1 | идентификатор элемента документа | 1 |
б) | Вид (@ValueType) | стандарт сертификата ключа. Атрибут имеет фиксированное значение в соответствии с описанием Приложения 1 | унифицированный | 1 |
5.2.4. Шифрование и расшифрование сообщений
Шифрование и расшифрование сообщений осуществляются в соответствии со спецификацией WS Encryption 1.1. Шифрование сообщений выполняется после их подписания.
Шифрование сообщения осуществляется следующим образом.
1. В заголовок транспортного конверта сообщения добавляется элемент wsse:Security. Данный элемент должен предшествовать элементу wsse:Security, содержащему электронную подпись, если таковой имеется.
2. Сертификат открытого ключа, с помощью которого шифруется сообщение, включается в элемент wsse:Security/wsse:BinarySecurityToken. Сертификат соответствует стандарту Х.509 (указывается в атрибуте ValueType) и кодируется с использованием стандарта кодирования Base64 (указывается в атрибуте EncodingType).
3. В элементе wsse:Security/xenc:EncryptedKey/ds:Keylnfo указывается ссылка на сертификат открытого ключа.
4. Бизнес-сообщение, содержащееся в элементе soap: Body шифруется в соответствии со спецификацией XML Encryption 1.1. Зашифрованное сообщение помещается в элемент xenc:EncryptedData, который заменяет исходное бизнес-сообщение.
5. В элементе wsse:Security/xenc:EncryptedKey/xenc:Referencelist указывается ссылка на зашифрованное сообщение.
Расшифрование сообщения осуществляется следующим образом.
1. Если в заголовке транспортного конверта сообщения содержится элемент wsse:Security/xenc:EncryptedKey, то сообщение является зашифрованным и требуется его расшифрование.
2. Для сертификата открытого ключа, ссылка на который указана в элементе wsse:Security/xenc:EncryptedKey/ds:Keylnfo, определяется закрытый ключ для расшифрования сообщения.
3. Данные, ссылка на которые указана в элементе wsse:Security/xenc:EncryptedKey/xenc:Referencelist, дешифруются с помощью закрытого ключа. Результат помещается в сообщение вместо зашифрованных данных.
4. Из сообщения удаляется элемент wsse:Security, содержащий сведения о шифровании сообщения.
5. В случае невозможности расшифровать сообщение формируется сообщение об ошибке в соответствии с требованиями раздела 5.2.5 Стандарта.
Структура элемента wsse:Security, содержащего сведения о шифровании сообщения, описана в Таблицах 5.5-5.6.