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


Функция DecryptMessage (Digest)

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

Поставщик поддержки безопасности дайджеста (SSP) обеспечивает шифрование и конфиденциальность расшифровки сообщений, обмениваемых между клиентом и сервером только в качестве механизма SASL.

Примечание.

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

Синтаксис

SECURITY_STATUS SEC_ENTRY DecryptMessage(
  PCtxtHandle    phContext,
  PSecBufferDesc pMessage,
  unsigned long  MessageSeqNo,
  unsigned long  *pfQOP
);

Параметры

phContext [в]

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

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

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

При использовании SSP дайджеста во входных данных структура ссылается на одну или несколько структур SecBuffer . Один из них должен быть типом SECBUFFER_DATA или SECBUFFER_STREAM, и он должен содержать зашифрованное сообщение.

MessageSeqNo [в]

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

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

pfQOP [выход]

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

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

Ценность Значение
SECQOP_WRAP_NO_ENCRYPT
Сообщение не было зашифровано, но был создан заголовок или трейлер.
Заметка: KERB_WRAP_NO_ENCRYPT имеет то же значение и то же значение.
SIGN_ONLY
При использовании SSP дайджеста используйте этот флаг, если для контекста безопасности задано значение только для проверки подписи . Дополнительные сведения см. в разделе "Качество защиты".

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

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

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

Код возврата Описание
SEC_E_BUFFER_TOO_SMALL Буфер сообщения слишком мал. Используется с поставщиком служб дайджеста.
SEC_E_CRYPTO_SYSTEM_INVALID Шифр, выбранный для контекста безопасности, не поддерживается. Используется с поставщиком служб дайджеста.
SEC_E_INCOMPLETE_MESSAGE Данные во входном буфере неполны. Приложению необходимо прочитать больше данных с сервера и снова вызвать DecryptMessage (Digest).
SEC_E_INVALID_HANDLE Недопустимый дескриптор контекста был указан в параметре phContext . Используется с поставщиком служб дайджеста.
SEC_E_MESSAGE_ALTERED Сообщение было изменено. Используется с поставщиком служб дайджеста.
SEC_E_OUT_OF_SEQUENCE Сообщение не получено в правильной последовательности.
SEC_E_QOP_NOT_SUPPORTED Ни конфиденциальность, ни целостность не поддерживаются контекстом безопасности. Используется с поставщиком служб дайджеста.

Замечания

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

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

Требования

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

См. также