Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция EncryptMessage (Kerberos) шифрует сообщение для предоставления конфиденциальности. EncryptMessage (Kerberos) позволяет приложению выбрать один из алгоритмов шифрования , поддерживаемых выбранным механизмом. Функция EncryptMessage (Kerberos) использует контекст безопасности , на который ссылается дескриптор контекста. Некоторые пакеты не имеют сообщений, которые необходимо шифровать или расшифровывать, но предоставляют хэш целостности, который можно проверить.
Примечание.
EncryptMessage (Kerberos) и DecryptMessage (Kerberos) можно вызывать одновременно из двух разных потоков в одном контексте интерфейса поставщика поддержки безопасности (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 (Kerberos) ( SECPKG_ATTR_STREAM_SIZES).
Приложения, не использующие ПРОТОКОЛ SSL, должны предоставлять SECBUFFER_PADDING типа SecBuffer .
-
MessageSeqNo [in]
-
Порядковый номер, назначенный приложению транспорта для сообщения. Если приложение транспорта не поддерживает порядковые номера, этот параметр должен быть равен нулю.
Возвращаемое значение
Если функция выполнена успешно, функция возвращает SEC_E_OK.
Если функция завершается ошибкой, она возвращает один из следующих кодов ошибок.
| Код возврата | Описание |
|---|---|
|
Буфер вывода слишком мал. Дополнительные сведения см. в разделе "Примечания". |
|
Приложение ссылается на контекст, который уже закрыт. Правильно написанное приложение не должно получать эту ошибку. |
|
Шифр, выбранный для контекста безопасности, не поддерживается. |
|
Для выполнения запрошенного действия недостаточно памяти. |
|
Недопустимый дескриптор контекста был указан в параметре phContext . |
|
Буфер типа SECBUFFER_DATA не найден. |
|
Ни конфиденциальность, ни целостность не поддерживаются контекстом безопасности. |
Замечания
Функция EncryptMessage (Kerberos) шифрует сообщение на основе сообщения и ключа сеанса из контекста безопасности.
Если приложение транспорта создало контекст безопасности для поддержки обнаружения последовательности и вызывающий объект предоставляет порядковый номер, функция содержит эти сведения с зашифрованным сообщением. В том числе эта информация защищает от воспроизведения, вставки и подавления сообщений. Пакет безопасности включает порядковый номер, передаваемый из транспортного приложения.
Примечание.
Эти буферы должны быть предоставлены в указанном порядке.
| Тип буфера | Описание |
|---|---|
| SECBUFFER_STREAM_HEADER< | Используется внутри системы. Не требуется инициализация. |
| SECBUFFER_DATA | Содержит зашифрованное сообщение с открытым текстом . |
| SECBUFFER_STREAM_TRAILER | Используется внутри системы. Не требуется инициализация. |
| SECBUFFER_EMPTY | Используется внутри системы. Не требуется инициализация. Размер может быть равен нулю. |
Для оптимальной производительности структуры pMessage должны быть выделены из непрерывной памяти.
Windows XP: Эта функция также называется SealMessage. Теперь приложения должны использовать только EncryptMessage (Kerberos).
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows XP [только классические приложения] |
| Минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
| Заголовок | Sspi.h (include Security.h) |
| Библиотека | Secur32.lib |
| DLL | Secur32.dll |