Функция 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 [in]
Дескриптор контекста безопасности , используемый для расшифровки сообщения.
pMessage [вход, выход]
Указатель на структуру SecBufferDesc . Во входных данных структура ссылается на одну или несколько структур SecBuffer , которые могут иметь тип SECBUFFER_DATA. Буфер содержит зашифрованное сообщение. Зашифрованное сообщение расшифровывается на месте, перезаписав исходное содержимое буфера.
MessageSeqNo [in]
Порядковый номер, ожидаемый транспортным приложением, если таковой есть. Если транспортное приложение не поддерживает порядковые номера, этот параметр должен иметь нулевое значение.
pfQOP [out]
Указатель на переменную типа 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 |