Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция EncryptMessage (NTLM) шифрует сообщение для предоставления конфиденциальности. EncryptMessage (NTLM) позволяет приложению выбрать один из алгоритмов шифрования , поддерживаемых выбранным механизмом. Функция EncryptMessage (NTLM) использует контекст безопасности , на который ссылается дескриптор контекста. Некоторые пакеты не имеют сообщений, которые необходимо шифровать или расшифровывать, но предоставляют хэш целостности, который можно проверить.
Примечание.
EncryptMessage (NTLM) и DecryptMessage (NTLM) можно вызывать одновременно из двух разных потоков в одном контексте интерфейса поставщика поддержки безопасности (SSPI), если один поток шифруется, а другой расшифровывается. Если шифрование нескольких потоков или несколько потоков расшифровываются, каждый поток должен получить уникальный контекст.
Синтаксис
SECURITY_STATUS SEC_Entry EncryptMessage(
_In_ PCtxtHandle phContext,
_In_ ULONG fQOP,
_Inout_ PSecBufferDesc pMessage,
_In_ ULONG MessageSeqNo
);
Параметры
phContext [in]
Дескриптор контекста безопасности , который будет использоваться для шифрования сообщения.
fQOP [in]
Флаги для конкретного пакета, указывающие качество защиты. Пакет безопасности может использовать этот параметр для включения выбора алгоритмов шифрования.
Этот параметр может быть следующим флагом.
| Ценность | Значение |
|---|---|
|
SECQOP_WRAP_NO_ENCRYPT |
Создайте заголовок или трейлер, но не шифруйте сообщение. Заметка: KERB_WRAP_NO_ENCRYPT имеет то же значение и то же значение. |
pMessage [in, out]
Указатель на структуру SecBufferDesc . На входных данных структура ссылается на одну или несколько структур SecBuffer , которые могут быть типа SECBUFFER_DATA. Этот буфер содержит сообщение для шифрования. Сообщение шифруется на месте, перезаписав исходное содержимое структуры.
Функция не обрабатывает буферы с помощью атрибута SECBUFFER_READONLY.
Длина структуры SecBuffer , содержащей сообщение, не должна превышать cbMaximumMessage, полученную из функции QueryContextAttributes (NTLM) ( SECPKG_ATTR_STREAM_SIZES).
Приложения, не использующие ПРОТОКОЛ SSL, должны предоставлять SECBUFFER_PADDING типа SecBuffer .
MessageSeqNo [in]
Порядковый номер, назначенный приложению транспорта для сообщения. Если приложение транспорта не поддерживает порядковые номера, этот параметр должен быть равен нулю.
Возвращаемое значение
Если функция выполнена успешно, функция возвращает SEC_E_OK.
Если функция завершается ошибкой, она возвращает один из следующих кодов ошибок.
| Код возврата | Описание |
|---|---|
| SEC_E_BUFFER_TOO_SMALL | Буфер вывода слишком мал. Дополнительные сведения см. в разделе "Примечания". |
| SEC_E_CONTEXT_EXPIRED | Приложение ссылается на контекст, который уже закрыт. Правильно написанное приложение не должно получать эту ошибку. |
| SEC_E_CRYPTO_SYSTEM_INVALID | Шифр, выбранный для контекста безопасности, не поддерживается. |
| SEC_E_INSUFFICIENT_MEMORY | Для выполнения запрошенного действия недостаточно памяти. |
| SEC_E_INVALID_HANDLE | Недопустимый дескриптор контекста был указан в параметре phContext . |
| SEC_E_INVALID_TOKEN | Буфер типа SECBUFFER_DATA не найден. |
| SEC_E_QOP_NOT_SUPPORTED> | Ни конфиденциальность, ни целостность не поддерживаются контекстом безопасности. |
Замечания
Функция EncryptMessage (NTLM) шифрует сообщение на основе сообщения и ключа сеанса из контекста безопасности.
Если приложение транспорта создало контекст безопасности для поддержки обнаружения последовательности и вызывающий объект предоставляет порядковый номер, функция содержит эти сведения с зашифрованным сообщением. В том числе эта информация защищает от воспроизведения, вставки и подавления сообщений. Пакет безопасности включает порядковый номер, передаваемый из транспортного приложения.
Примечание.
Эти буферы должны быть предоставлены в указанном порядке.
| Тип буфера | Описание |
|---|---|
| SECBUFFER_STREAM_HEADER | Используется внутри системы. Не требуется инициализация. |
| SECBUFFER_DATA | Содержит зашифрованное сообщение с открытым текстом . |
| SECBUFFER_STREAM_TRAILER | Используется внутри системы. Не требуется инициализация. |
| SECBUFFER_EMPTY | Используется внутри системы. Не требуется инициализация. Размер может быть равен нулю. |
Для оптимальной производительности структуры pMessage должны быть выделены из непрерывной памяти.
Windows XP: Эта функция также называется SealMessage. Теперь приложения должны использовать только EncryptMessage (NTLM ).
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows XP [только классические приложения] |
| Минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
| Заголовок | Sspi.h (include Security.h) |
| Библиотека | Secur32.lib |
| DLL | Secur32.dll |