5.2.4. Шифрование и расшифрование сообщений

Шифрование и расшифрование сообщений осуществляется в соответствии со спецификацией WS Encryption 1.1. Шифрование сообщений выполняется после их подписания.

Шифрование сообщения осуществляется следующим образом.

1. В заголовок транспортного конверта сообщения добавляется элемент wsse:Security. Данный элемент должен предшествовать элементу wsse:Security, содержащему электронную подпись, если таковой имеется.

2. Сертификат открытого ключа, с помощью которого шифруется сообщение, включается в элемент wsse:Security/wsse:BinarySecurityToken. Сертификат соответствует стандарту X.509 (указывается в атрибуте ValueType) и кодируется с использованием стандарта кодирования Base64 (указывается в атрибуте EncodingType).

3. В элементе wsse:Security/xenc:EncryptedKey/ds:KeyInfo указывается ссылка на сертификат открытого ключа.

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:KeyInfo, определяется закрытый ключ для расшифрования сообщения.

3. Данные, ссылка на которые указана в элементе wsse:Security/xenc:EncryptedKey/xenc:ReferenceList, дешифруются с помощью закрытого ключа. Результат помещается в сообщение вместо зашифрованных данных.

4. Из сообщения удаляется элемент wsse:Security, содержащий сведения о шифровании сообщения.

5. В случае невозможности расшифровать сообщение формируется сообщение об ошибке в соответствии с требованиями раздела 5.2.5 Стандарта.

Структура элемента wsse:Security, содержащего сведения о шифровании сообщения, описана в Таблицах 5.5 - 5.6.