CERT_TRUST_STATUS 结构 (wincrypt.h)

CERT_TRUST_STATUS结构包含有关证书链中证书的信任信息、有关简单证书链的摘要信任信息或有关简单链数组的摘要信息。

语法

typedef struct _CERT_TRUST_STATUS {
  DWORD dwErrorStatus;
  DWORD dwInfoStatus;
} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;

成员

dwErrorStatus

dwErrorStatus 是为证书和链定义的以下错误代码的位掩码。

含义
CERT_TRUST_NO_ERROR
0x00000000
找不到此证书或链的错误。
CERT_TRUST_IS_NOT_TIME_VALID
0x00000001
此证书或证书链中的某个证书在时间上无效。
CERT_TRUST_IS_REVOKED
0x00000004
已吊销此证书或证书链中某个证书的信任。
CERT_TRUST_IS_NOT_SIGNATURE_VALID
0x00000008
证书链中的证书或其中一个证书没有有效的签名。
CERT_TRUST_IS_NOT_VALID_FOR_USAGE
0x00000010
证书或证书链对于其建议的用法无效。
CERT_TRUST_IS_UNTRUSTED_ROOT
0x00000020
证书或证书链基于不受信任的根。
CERT_TRUST_REVOCATION_STATUS_UNKNOWN
0x00000040
该证书或证书链中的某个证书的吊销状态未知。
CERT_TRUST_IS_CYCLIC
0x00000080
链中的一个证书是由原始证书已认证的 证书颁发机构 颁发的。
CERT_TRUST_INVALID_EXTENSION
0x00000100
其中一个证书的扩展名无效。
CERT_TRUST_INVALID_POLICY_CONSTRAINTS
0x00000200
证书或证书链中的某个证书具有策略约束扩展,其中一个颁发的证书具有不允许的策略映射扩展,或者没有所需的颁发策略扩展。
CERT_TRUST_INVALID_BASIC_CONSTRAINTS
0x00000400
证书或证书链中的某个证书具有基本约束扩展,该证书不能用于颁发其他证书,或者已超出链路径长度。
CERT_TRUST_INVALID_NAME_CONSTRAINTS
0x00000800
证书链中的证书或其中一个证书具有无效的名称约束扩展。
CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT
0x00001000
证书链中的证书或其中一个证书具有包含不受支持的字段的名称约束扩展。 不支持最小和最大字段。 因此,最小值必须始终为零,最大值必须始终不存在。 其他名称仅支持 UPN。 不支持以下备用名称选项:
  • X400 地址
  • EDI 群名称
  • 已注册的 ID
CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT
0x00002000
证书链中的证书或其中一个证书具有名称约束扩展名,并且尾证书中的某个名称选项缺少名称约束。
CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT
0x00004000
证书链中的证书或其中一个证书具有名称约束扩展名,并且最终证书中的某个名称选项没有允许的名称约束。
CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT
0x00008000
证书链中的证书或证书链中的某个证书具有名称约束扩展,并且显式排除了最终证书中的一个名称选项。
CERT_TRUST_IS_OFFLINE_REVOCATION
0x01000000
证书或证书链中某个证书的吊销状态为脱机或过时。
CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY
0x02000000
最终证书没有任何生成的颁发策略,并且其中一 个证书颁发机构证书 具有需要它的策略约束扩展。
CERT_TRUST_IS_EXPLICIT_DISTRUST
0x04000000
该证书显式不受信任。

Windows Vista 和 Windows Server 2008: 开始支持此标志。

CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT
0x08000000
证书不支持关键扩展。

Windows Vista 和 Windows Server 2008: 开始支持此标志。

CERT_TRUST_HAS_WEAK_SIGNATURE
0x00100000
证书尚未进行强签名。 这通常表示使用了 MD2 或 MD5 哈希算法来创建证书的哈希。

Windows 8和Windows Server 2012:开始支持此标志。

 

以下代码仅为链定义。

含义
CERT_TRUST_IS_PARTIAL_CHAIN
0x00010000
证书链不完整。
CERT_TRUST_CTL_IS_NOT_TIME_VALID
0x00020000
用于创建此链 (CTL) 证书信任列表 的时间无效。
CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID
0x00040000
用于创建此链的 CTL 没有有效的签名。
CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE
0x00080000
用于创建此链的 CTL 对于此用法无效。

dwInfoStatus

定义了以下信息状态代码。

含义
CERT_TRUST_HAS_EXACT_MATCH_ISSUER
0x00000001
已找到此证书的完全匹配颁发者证书。 此状态代码仅适用于证书。
CERT_TRUST_HAS_KEY_MATCH_ISSUER
0x00000002
已找到此证书的密钥匹配颁发者证书。 此状态代码仅适用于证书。
CERT_TRUST_HAS_NAME_MATCH_ISSUER
0x00000004
已找到此证书的名称匹配颁发者证书。 此状态代码仅适用于证书。
CERT_TRUST_IS_SELF_SIGNED
0x00000008
此证书是自签名证书。 此状态代码仅适用于证书。
CERT_TRUST_HAS_PREFERRED_ISSUER
0x00000100
证书或链具有首选颁发者。 此状态代码适用于证书和链。
CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY
0x00000400
存在颁发链策略。 此状态代码适用于证书和链。
CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS
0x00000400
所有命名空间(包括 UPN)的有效名称约束。 此状态代码适用于证书和链。
CERT_TRUST_IS_PEER_TRUSTED
0x00000800
此证书是对等信任证书。 此状态代码仅适用于证书。

Windows Vista 和 Windows Server 2008: 开始支持此标志。

CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED
0x00001000
此证书的 证书吊销列表 (CRL) 有效期已延长。 此状态代码仅适用于证书。

Windows Vista 和 Windows Server 2008: 开始支持此标志。

CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE
0x00002000
证书是在 CERT_CHAIN_ENGINE_CONFIG结构的 hExclusiveRoothExclusiveTrustedPeople 成员指向的存储中找到

Windows 7 和 Windows Server 2008 R2: 开始支持此标志。

CERT_TRUST_IS_COMPLEX_CHAIN
0x00010000
创建的证书链是一个复杂的链。 此状态代码仅适用于链。
CERT_TRUST_IS_CA_TRUSTED
0x00004000
CERT_CHAIN_ENGINE_CONFIG 结构的 hExclusiveRoot 成员指向的存储中发现了非自签名中间 CA 证书。 CA 证书被视为证书链的信任定位点。 仅当 在 CERT_CHAIN_ENGINE_CONFIG 结构的 dwExclusiveFlags 成员中设置了CERT_CHAIN_EXCLUSIVE_ENABLE_CA_FLAG值时,才会设置 此标志

如果设置了此标志,则不会设置 CERT_TRUST_IS_SELF_SIGNEDCERT_TRUST_IS_PARTIAL_CHAINdwErrorStatus 标志。

Windows 8和Windows Server 2012:开始支持此标志。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 wincrypt.h

另请参阅

CERT_CHAIN_CONTEXT

CERT_CHAIN_ENGINE_CONFIG

CERT_SIMPLE_CHAIN