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 标准。
在生成主机密之前或在设置 SECPKG_ATTR_KEYING_MATERIAL_INFO 属性之前查询此属性会导致错误。
此属性仅受 Windows 10 和 Windows Server 2016 或更高版本中的 Schannel 安全包支持。- SECPKG_ATTR_CREDS_2
- 0x80000086
pBuffer 参数包含指向指定客户端凭据的 SecPkgContext_ClientCreds 结构的指针。
如果客户端凭据是用户名和密码,则缓冲区是打包 KERB_INTERACTIVE_LOGON 结构。
如果客户端凭据是用户名和智能卡 PIN,则缓冲区是打包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结构的指针。
返回有关正在使用的 SSP 的信息。- 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 KB 之间。 Schannel 中的默认 DTLS MTU 值为 1096 字节。 -
pBuffer [out]
-
指向接收属性的结构的指针。 指向 的结构的类型取决于 ulAttribute 参数中指定的值。
返回值
如果函数成功,则返回值 SEC_E_OK。
如果函数失败,则返回值为非零错误代码。
备注
pBuffer 参数指向的结构因查询的属性而异。 调用方必须分配 pBuffer 结构本身,但 SSP 分配保存 pBuffer 结构的可变大小成员所需的任何内存。 使用完 SSP 分配的内存后,通过调用 FreeContextBuffer 函数释放它。
读取SECPKG_ATTR_REMOTE_CERT_CONTEXT或SECPKG_ATTR_LOCAL_CERT_CONTEXT值后, hCertStore 成员将设置为包含中间证书的证书存储(如果有)的句柄。 此外,应用程序还负责调用 CertFreeCertificateContext 来释放证书上下文使用的内存。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 8.1 [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2012 R2 [仅限桌面应用] |
标头 |
|
库 |
|
DLL |
|
Unicode 和 ANSI 名称 |
QueryContextAttributesW (Unicode) 和 QueryContextAttributesA (ANSI) |
另请参阅