Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 имеет то же значение и то же значение. |
|
При использовании 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 |