Функция DecryptMessage (sspi.h)
Функция DecryptMessage (Digest) расшифровывает сообщение. Некоторые пакеты не шифруют и не расшифровывают сообщения, а выполняют и проверка хэш целостности.
Поставщик поддержки безопасности дайджеста (SSP) обеспечивает конфиденциальность шифрования и расшифровки для сообщений, передаваемых между клиентом и сервером только в качестве механизма SASL.
Синтаксис
SECURITY_STATUS SEC_ENTRY DecryptMessage(
[in] PCtxtHandle phContext,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo,
[out] unsigned long *pfQOP
);
Параметры
[in] phContext
Дескриптор контекста безопасности , который будет использоваться для расшифровки сообщения.
[in, out] pMessage
Указатель на структуру SecBufferDesc . Во входных данных структура ссылается на одну или несколько структур SecBuffer . По крайней мере один из них должен иметь тип SECBUFFER_DATA. Этот буфер содержит зашифрованное сообщение. Зашифрованное сообщение расшифровывается на месте, перезаписывается исходное содержимое буфера.
При использовании дайджест-поставщика общих служб для входных данных структура ссылается на одну или несколько структур SecBuffer . Один из них должен иметь тип SECBUFFER_DATA или SECBUFFER_STREAM и содержать зашифрованное сообщение.
[in] MessageSeqNo
Порядковый номер, ожидаемый приложением транспорта, если таковой есть. Если транспортное приложение не поддерживает порядковые номера, для этого параметра необходимо задать нулевое значение.
При использовании дайджест-поставщика общих служб этот параметр должен иметь нулевое значение. Поставщик дайджест-служб SSP управляет порядковой нумеровой строкой внутри системы.
[out] pfQOP
Указатель на переменную типа ULONG , которая получает флаги конкретного пакета, указывающие на качество защиты.
Этот параметр может быть одним из следующих флагов.
Значение | Значение |
---|---|
|
Сообщение не было зашифровано, но был создан заголовок или трейлер.
Примечание KERB_WRAP_NO_ENCRYPT имеет то же значение и одинаковое значение.
|
|
При использовании дайджест-поставщика общих служб используйте этот флаг, если в контексте безопасности задана проверка только сигнатуры . Дополнительные сведения см. в разделе Качество защиты. |
Возвращаемое значение
Если функция проверяет, получено ли сообщение в правильной последовательности, функция возвращает SEC_E_OK.
Если функции не удается расшифровать сообщение, она возвращает один из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Буфер сообщений слишком мал. Используется с поставщиком дайджест-служб. |
|
Шифр, выбранный для контекста безопасности, не поддерживается. Используется с поставщиком дайджест-служб. |
|
Данные во входном буфере являются неполными. Приложению необходимо считывать дополнительные данные с сервера и снова вызывать DecryptMessage (Digest). |
|
Недопустимый дескриптор контекста был указан в параметре phContext . Используется с поставщиком дайджест-служб. |
|
Сообщение изменено. Используется с поставщиком дайджест-служб. |
|
Сообщение не было получено в правильной последовательности. |
|
Контекст безопасности не поддерживает ни конфиденциальность, ни целостность . Используется с поставщиком дайджест-служб. |
Комментарии
Иногда приложение считывает данные из удаленной стороны, пытается расшифровать их с помощью DecryptMessage (Digest) и обнаруживает, что DecryptMessage (Digest) выполнено успешно, но выходные буферы пусты. Это нормальное поведение, и приложения должны иметь возможность работать с ним.
Windows XP: Эта функция была также известна как UnsealMessage. Теперь приложения должны использовать только DecryptMessage (Digest).
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | sspi.h (включая Security.h) |
Библиотека | Secur32.lib |
DLL | Secur32.dll |