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


Функция QueryContextAttributes (Schannel)

Функция QueryContextAttributes (Schannel) позволяет транспортному приложению запрашивать пакет безопасности Schannel для определенных атрибутовконтекста безопасности.

Синтаксис

SECURITY_STATUS SEC_ENTRY QueryContextAttributes(
  _In_  PCtxtHandle phContext,
  _In_  ULONG       ulAttribute,
  _Out_ PVOID       pBuffer
);

Параметры

phContext [in]

Дескриптор контекста безопасности для запроса.

ulAttribute [in]

Указывает атрибут возвращаемого контекста. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
SECPKG_ATTR_ACCESS_TOKEN
13
Параметр pBuffer содержит указатель на структуру SecPkgContext_AccessToken .
Возвращает дескриптор маркера доступа.
SECPKG_ATTR_APP_DATA
0x5e
Параметр pBuffer содержит указатель на структуру SecPkgContext_SessionAppData .
Возвращает или задает данные приложения для сеанса.
Этот атрибут поддерживается только пакетом безопасности Schannel.
SECPKG_ATTR_AUTHORITY
6
Параметр pBuffer содержит указатель на структуру SecPkgContext_Authority .
Запрашивает имя центра проверки подлинности.
SECPKG_ATTR_CIPHER_INFO
0x64
Параметр pBuffer содержит указатель на структуру SecPkgContext_CipherInfo .
Возвращает новую структуру сведений о шифре CNG.
SECPKG_ATTR_CONNECTION_INFO
0x5a
Параметр pBuffer содержит указатель на структуру SecPkgContext_ConnectionInfo .
Возвращает подробные сведения об установленном подключении.
SECPKG_ATTR_KEYING_MATERIAL
0x6b
Параметр pBuffer содержит указатель на структуру SecPkgContext_KeyingMaterial . Функция экспорта материалов ключей соответствует стандарту RFC 5705.
Запрос этого атрибута до создания секрета master или до задания атрибута SECPKG_ATTR_KEYING_MATERIAL_INFO приводит к ошибке.
Этот атрибут поддерживается только пакетом безопасности Schannel в Windows 10 и Windows Server 2016 или более поздних версиях.
SECPKG_ATTR_CREDS_2
0x80000086
Параметр pBuffer содержит указатель на структуру SecPkgContext_ClientCreds , указывающую учетные данные клиента.
Если учетные данные клиента — имя пользователя и пароль, буфер представляет собой упакованную KERB_INTERACTIVE_LOGON структуру.
Если учетные данные клиента — это имя пользователя, а смарт-код карта ПИН-код, буфер представляет собой упакованную KERB_CERTIFICATE_LOGON структуру.
Если учетные данные клиента являются учетными данными удостоверения в сети, буфер представляет собой маршалированную структуру SEC_WINNT_AUTH_IDENTITY_EX2 .
Этот атрибут поддерживается только на сервере CredSSP.
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается.
SECPKG_ATTR_DCE_INFO
3
Параметр pBuffer содержит указатель на структуру SecPkgContext_DceInfo .
Запросы данных авторизации, используемых службами DCE.
SECPKG_ATTR_EAP_KEY_BLOCK
0x5b
Параметр pBuffer содержит указатель на структуру SecPkgContext_EapKeyBlock .
Запросы ключевых данных, используемых протоколом EAP TLS.
Этот атрибут поддерживается только пакетом безопасности Schannel.
SECPKG_ATTR_ENDPOINT_BINDINGS
26
Параметр pBuffer содержит указатель на структуру SecPkgContext_Bindings , которая содержит привязки каналов для TLS (RFC 5929).
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается.
SECPKG_ATTR_FLAGS
14
Параметр pBuffer содержит указатель на структуру SecPkgContext_Flags .
Возвращает сведения о согласованных флагах контекста.
SECPKG_ATTR_ISSUER_LIST_EX
0x59
Параметр pBuffer содержит указатель на структуру SecPkgContext_IssuerListInfoEx .
Возвращает список издателей сертификатов, которые принимаются сервером.
Этот атрибут поддерживается только пакетом безопасности Schannel.
SECPKG_ATTR_KEY_INFO
5
Параметр pBuffer содержит указатель на структуру SecPkgContext_KeyInfo .
Запрашивает сведения о ключах, используемых в контексте безопасности.
SECPKG_ATTR_LIFESPAN
2
Параметр pBuffer содержит указатель на структуру SecPkgContext_Lifespan .
Запрашивает срок жизни контекста.
SECPKG_ATTR_LOCAL_CERT_CONTEXT
0x54
Параметр pBuffer содержит указатель на структуру PCCERT_CONTEXT.
Находит контекст сертификата, содержащий локальный конечный сертификат.
Этот атрибут поддерживается только пакетом безопасности Schannel.
SECPKG_ATTR_LOCAL_CRED
Параметр pBuffer содержит указатель на структуру SecPkgContext_LocalCredentialInfo . (Является устаревшим.)
Заменено SECPKG_ATTR_LOCAL_CERT_CONTEXT.
SECPKG_ATTR_NAMES
1
Параметр pBuffer содержит указатель на структуру SecPkgContext_Names .
Запрашивает имя, связанное с контекстом.
SECPKG_ATTR_NATIVE_NAMES
13
Параметр pBuffer содержит указатель на структуру SecPkgContext_NativeNames .
Возвращает имя участника (CNAME) из исходящего билета.
SECPKG_ATTR_NEGOTIATION_INFO
12
Параметр pBuffer содержит указатель на структуру SecPkgContext_NegotiationInfo .
Возвращает сведения о пакете безопасности , который будет использоваться в процессе согласования, и текущее состояние согласования для использования этого пакета.
SECPKG_ATTR_PACKAGE_INFO
10
Параметр pBuffer содержит указатель на структуру SecPkgContext_PackageInfo .
Возвращает сведения об используемом поставщике общих служб.
SECPKG_ATTR_PASSWORD_EXPIRY
8
Параметр pBuffer содержит указатель на структуру SecPkgContext_PasswordExpiry .
Возвращает сведения об истечении срока действия пароля.
SECPKG_ATTR_REMOTE_CERT_CONTEXT
0x53
Параметр pBuffer содержит указатель на структуру PCCERT_CONTEXT.
Находит контекст сертификата, содержащий конечный сертификат, предоставленный сервером.
Этот атрибут поддерживается только пакетом безопасности Schannel.
SECPKG_ATTR_ROOT_STORE
0x55
Параметр pBuffer содержит указатель на HCERTCONTEXT. Находит контекст сертификата, содержащий сертификат, предоставленный корневым хранилищем.
SECPKG_ATTR_SESSION_INFO
0x5d
Параметр pBuffer содержит указатель на структуру SecPkgContext_SessionInfo .
Возвращает сведения о сеансе.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается.
SECPKG_ATTR_SESSION_KEY
9
Параметр pBuffer содержит указатель на структуру SecPkgContext_SessionKey .
Возвращает сведения о ключах сеанса.
SECPKG_ATTR_SIZES
0
Параметр pBuffer содержит указатель на структуру SecPkgContext_Sizes .
Запрашивает размеры структур, используемых в функциях для каждого сообщения.
SECPKG_ATTR_STREAM_SIZES
4
Параметр pBuffer содержит указатель на структуру SecPkgContext_StreamSizes .
Запрашивает размеры различных частей потока, используемых в функциях для каждого сообщения.
SECPKG_ATTR_SUPPORTED_SIGNATURES
0x66
Параметр pBuffer содержит указатель на структуру SecPkgContext_SupportedSignatures .
Это значение возвращает сведения о типах подписей, поддерживаемых для подключения.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается.
SECPKG_ATTR_TARGET_INFORMATION
17
Параметр pBuffer содержит указатель на структуру SecPkgContext_TargetInformation .
Возвращает сведения об имени удаленного сервера.
SECPKG_ATTR_UNIQUE_BINDINGS
25
Параметр pBuffer содержит указатель на структуру SecPkgContext_Bindings , содержащую сведения о привязке канала.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается.
SECPKG_ATTR_APPLICATION_PROTOCOL
35
Параметр pBuffer содержит согласованный протокол приложения.
SECPKG_ATTR_DTLS_MTU
34
Задает и извлекает значение MTU (максимальная единица передачи) для использования с DTLS. Если DTLS не включен в контексте безопасности, этот атрибут не поддерживается.
Допустимые значения : от 200 до 64 килобайт. Значение MTU DTLS по умолчанию в Schannel равно 1096 байтам.

 

pBuffer [out]

Указатель на структуру, которая получает атрибуты. Тип структуры, на который указывает , зависит от значения, указанного в параметре ulAttribute .

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

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

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

Комментарии

Структура, на которую указывает параметр pBuffer , зависит от запрашиваемого атрибута. Вызывающий объект должен выделить саму структуру pBuffer , но поставщик общих служб выделяет любую память, необходимую для хранения элементов структуры pBuffer переменной величины. Завершив использование памяти, выделенной поставщиком общих служб, освободите ее, вызвав функцию FreeContextBuffer .

После считывания значения SECPKG_ATTR_REMOTE_CERT_CONTEXT или SECPKG_ATTR_LOCAL_CERT_CONTEXT члену hCertStore присваивается дескриптор хранилища сертификатов, содержащего промежуточные сертификаты, если таковые имеются. Кроме того, приложение отвечает за вызов CertFreeCertificateContext для освобождения памяти, используемой контекстом сертификата.

Требования

Требование Значение
Минимальная версия клиента
Windows 8.1 [только классические приложения]
Минимальная версия сервера
Windows Server 2012 R2 [только классические приложения]
Заголовок
Sspi.h (включая Security.h)
Библиотека
Secur32.lib
DLL
Secur32.dll
Имя в кодировке Юникод и ANSI
QueryContextAttributesW (Юникод) и QueryContextAttributesA (ANSI)

См. также раздел

Функции SSPI

CERT_CONTEXT

FreeContextBuffer

SecPkgContext_Authority

SecPkgContext_ConnectionInfo

SecPkgContext_DceInfo

SecPkgContext_IssuerListInfoEx

SecPkgContext_KeyInfo

SecPkgContext_Lifespan

SecPkgContext_Names

SecPkgContext_Sizes

SecPkgContext_StreamSizes