Поделиться через


Функция DecryptMessage (Kerberos)

Функция DecryptMessage (Kerberos) расшифровывает сообщение. Некоторые пакеты не шифруют и расшифровывают сообщения, а выполняют и проверяют хэш целостности.

Примечание.

EncryptMessage (Kerberos) и DecryptMessage (Kerberos) можно вызывать одновременно из двух разных потоков в одном контексте интерфейса поставщика поддержки безопасности (SSPI), если один поток шифруется, а другой расшифровывается. Если шифрование нескольких потоков или несколько потоков расшифровываются, каждый поток должен получить уникальный контекст.

Синтаксис

SECURITY_STATUS SEC_Entry DecryptMessage(
  _In_    PCtxtHandle    phContext,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

Параметры

phContext [в]

Дескриптор контекста безопасности , который будет использоваться для расшифровки сообщения.

pMessage [входящий, исходящий]

Указатель на структуру SecBufferDesc . Во входных данных структура ссылается на одну или несколько структур SecBuffer , которые могут быть типа SECBUFFER_DATA. Буфер содержит зашифрованное сообщение. Зашифрованное сообщение расшифровывается на месте, перезаписыв исходное содержимое буфера.

MessageSeqNo [в]

Порядковый номер, ожидаемый приложением транспорта, если он есть. Если приложение транспорта не поддерживает порядковые номера, этот параметр должен иметь значение нулю.

pfQOP [выход]

Указатель на переменную типа ULONG , которая получает флаги, относящиеся к пакету, которые указывают на качество защиты.

Этот параметр может быть следующим флагом.

Ценность Значение
SECQOP_WRAP_NO_ENCRYPT он не был зашифрован, но был создан заголовок или трейлер.

Примечание.

KERB_WRAP_NO_ENCRYPT имеет то же значение и то же значение.

Возвращаемое значение

Если функция проверяет, получено ли сообщение в правильной последовательности, функция возвращает SEC_E_OK.

Если функция не расшифровывает сообщение, он возвращает один из следующих кодов ошибок.

Код возврата Описание
SEC_E_INCOMPLETE_MESSAGE Данные во входном буфере неполны. Приложению необходимо прочитать больше данных с сервера и снова вызвать DecryptMessage (Kerberos).
SEC_E_OUT_OF_SEQUENCE Сообщение не получено в правильной последовательности.

Замечания

Иногда приложение считывает данные из удаленной стороны, пытается расшифровать его с помощью DecryptMessage (Kerberos) и обнаруживает, что decryptMessage (Kerberos) выполнен успешно, но выходные буферы пусты. Это нормальное поведение, и приложения должны иметь возможность справиться с ним.

Сведения о взаимодействии с GSSAPI см. в разделе SSPI/Kerberos, взаимодействие с GSSAPI.

Windows XP: Эта функция также называется UnsealMessage. Теперь приложения должны использовать только DecryptMessage (Kerberos).

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows XP [только классические приложения]
Минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
Заголовок Sspi.h (включая Security.h)
Библиотека Веб-сайт Secur32.lib
Библиотека dll Secur32.dll

См. также