加密结构

加密函数使用以下结构。 加密结构根据用法进行分类,如下所示:

CryptXML 结构

CryptXML 函数使用以下结构。

结构 说明
CRYPT_XML_ALGORITHM 指定用于对消息进行签名或转换的算法。
CRYPT_XML_ALGORITHM_INFO 包含算法信息。
CRYPT_XML_BLOB 包含任意字节数组。
CRYPT_XML_CRYPTOGRAPHIC_INTERFACE 传递给 CryptXmlDllGetInterface 函数指针,以公开实现的 CryptXML 函数。
CRYPT_XML_DATA_BLOB 包含 XML 编码的数据。
CRYPT_XML_DATA_PROVIDER 指定 XML 数据提供程序的接口。
CRYPT_XML_DOC_CTXT 定义文档上下文信息。
CRYPT_XML_ISSUER_SERIAL 包含 X.509 颁发的可分辨名称-序列号对。
CRYPT_XML_KEY_DSA_KEY_VALUE 定义 (DSA) 键值的 数字签名算法CRYPT_XML_KEY_DSA_KEY_VALUE结构用作CRYPT_XML_KEY_VALUE结构中键值联合的元素。
CRYPT_XML_KEY_ECDSA_KEY_VALUE 定义椭圆曲线数字签名算法 (ECDSA) 键值。 CRYPT_XML_KEY_ECDSA_KEY_VALUE结构用作CRYPT_XML_KEY_VALUE结构中键值联合的元素。
CRYPT_XML_KEY_INFO 封装关键信息数据。
CRYPT_XML_KEY_INFO_ITEM 封装与 KeyInfo 元素对应的密钥信息数据。 KeyInfo 元素使接收者能够获取验证签名所需的密钥。
CRYPT_XML_KEY_RSA_KEY_VALUE 定义 RSA 键值。 CRYPT_XML_KEY_RSA_KEY_VALUE结构用作CRYPT_XML_KEY_VALUE结构中键值联合的元素。
CRYPT_XML_KEY_VALUE 包含一个可用于验证签名的 公钥
CRYPT_XML_KEYINFO_PARAM 由 CryptXmlSign 函数用来指定要编码的 KeyInfo 元素的成员。
CRYPT_XML_OBJECT 描述签名中的 Object 元素。
CRYPT_XML_PROPERTY 包含有关 CryptXML 属性的信息。
CRYPT_XML_REFERENCE 包含用于填充 Reference 元素的信息。
CRYPT_XML_REFERENCES 定义 CRYPT_XML_REFERENCE 结构的数组。
CRYPT_XML_SIGNATURE 包含用于填充 Signature 元素的信息。
CRYPT_XML_SIGNED_INFO 返回有关签名验证状态的信息、有关 SignedInfo 元素的摘要状态信息或 有关 Reference 元素数组的摘要状态信息。
CRYPT_XML_TRANSFORM_CHAIN_CONFIG 定义允许在 XML 数字签名中使用的应用程序定义的转换。
CRYPT_XML_TRANSFORM_INFO 包含应用数据转换时使用的信息。
CRYPT_XML_X509DATA 表示 X509Data 元素中的选项序列。
CRYPT_XML_X509DATA_ITEM 表示将在 X509Data 命名元素中编码的 X.509 数据。

 

常规加密结构

基本加密函数使用以下结构。

结构 说明
CMS_DH_KEY_INFO CryptSetKeyParam 函数中的 KP_CMS_DH_KEY_INFO 参数一起使用,以包含 Diffie-Hellman 密钥信息。
CMS_KEY_INFO 未使用此结构。
CRYPT_AES_128_KEY_STATE 指定高级加密标准 (AES) 密码的 128 位对称密钥信息。
CRYPT_AES_256_KEY_STATE 指定 AES 密码的 256 位对称密钥信息。
CRYPT_ALGORITHM_IDENTIFIER 包含该算法 (OID) 的对象标识符 以及该算法的任何所需参数。
CRYPT_ATTRIBUTE 指定具有一个或多个值的属性。
CRYPT_ATTRIBUTE_TYPE_VALUE 包含单个属性值。
CRYPT_ATTRIBUTES 包含属性数组。
CRYPT_BIT_BLOB 包含字节数组。
CRYPT_BLOB_ARRAY 包含 CRYPT_DATA_BLOB 结构的数组。
CRYPT_CONTENT_INFO 包含以 PKCS #7 ContentInfo 数据格式编码的数据。
CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY 包含表示证书的 Netscape 证书序列的信息。
CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA CryptInstallDefaultContext 函数一起使用,以包含对象标识符字符串数组。
CRYPT_ECC_CMS_SHARED_INFO 表示在加密消息语法 (CMS) EnvelopedData 内容类型中使用椭圆曲线加密 (ECC) 时的密钥加密密钥信息。
CRYPT_ENCRYPTED_PRIVATE_KEY_INFO 包含加密的 PKCS #8 私钥的信息。
CRYPT_ENROLLMENT_NAME_VALUE_PAIR 此结构用于代表用户创建证书请求。
CRYPT_INTEGER_BLOB 包含在适合类型的名称下的各种二进制大型对象的数据。
CRYPT_KEY_LIMITS 支持未实现的 CryptGetLocalKeyLimits 函数,但未使用。 它将在 Wincrypt.h 的未来版本中删除。
CRYPT_KEY_PROV_INFO 包含作为参数传递给 CryptAcquireContext 的字段,以获取特定加密服务提供程序中的特定密钥容器的句柄 (CSP) ,或创建或销毁密钥容器。
CRYPT_KEY_PROV_PARAM 包含要作为参数传递到 CryptSetProvParam 的数据。
CRYPT_KEY_SIGN_MESSAGE_PARA 包含有关用于对消息进行签名的 CSP 和算法的信息。
CRYPT_KEY_VERIFY_MESSAGE_PARA 包含在没有签名者证书的情况下验证已签名消息所需的信息。
CRYPT_MASK_GEN_ALGORITHM 标识用于生成 RSA PKCS #1 v2.1 签名掩码的算法。
CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE 包含指向对象位置提供程序实现的函数的指针。
CRYPT_PKCS8_EXPORT_PARAMS 包含标识私钥和指向回调函数的指针的信息。
CRYPT_PKCS8_IMPORT_PARAMS 包含一个 PKCS #8 私钥和两个指向回调函数的指针。
CRYPT_PKCS12_PBE_PARAMS 包含用于为基于 PKCS #12 密码的加密算法创建加密密钥、初始化向量 (IV) 或消息身份验证代码 (MAC) 密钥的参数。
CRYPT_PRIVATE_KEY_INFO 包含 PKCS #8 私钥的信息。
CRYPT_PSOURCE_ALGORITHM 标识算法和 ((可选)) RSAES-OAEP 密钥加密标签的值。
CRYPT_RETRIEVE_AUX_INFO 包含要传递给 CryptRetrieveObjectByUrl 函数的可选时间同步信息。
CRYPT_RSA_SSA_PSS_PARAMETERS 包含 RSA PKCS #1 v2.1 签名的参数。
CRYPT_RSAES_OAEP_PARAMETERS 包含 RSAES-OAEP 密钥加密的参数。
CRYPT_SEQUENCE_OF_ANY 包含编码 BLOB 的任意列表。
CRYPT_SMART_CARD_ROOT_INFO 包含与证书上下文关联的智能卡和会话 ID。
CRYPT_TIME_STAMP_REQUEST_INFO 此结构用于时间戳。
CRYPT_URL_INFO 包含有关 URL 分组的信息。
CRYPT_X942_OTHER_INFO 包含其他密钥生成信息。
CRYPTNET_URL_CACHE_FLUSH_INFO 包含 Cryptnet URL 缓存 (CUC) 服务用于维护 URL 缓存条目的过期信息。
CRYPTNET_URL_CACHE_PRE_FETCH_INFO 包含 Cryptnet URL 缓存 (CUC) 服务用于维护 URL 缓存条目的更新信息。
CRYPTNET_URL_CACHE_RESPONSE_INFO 包含 Cryptnet URL 缓存 (CUC) 服务用于维护 URL 缓存条目的响应信息。
CRYPT_INTEGER_BLOB 此结构用于任意字节数组。
CRYPTPROTECT_PROMPTSTRUCT 提供提示文本以及有关在使用 CryptProtectData 和 CryptUnprotectData 函数时显示该提示的时间和位置的信息。
CRYPTUI_INITDIALOG_STRUCT 支持 CRYPTUI_VIEWCERTIFICATE_STRUCT 结构。
CRYPTUI_SELECTCERTIFICATE_STRUCT 包含有关 CryptUIDlgSelectCertificate 函数显示的对话框的信息。
CRYPTUI_VIEWCERTIFICATE_STRUCT 包含有关要查看的证书的信息。 它在 CryptUIDlgViewCertificate 函数中使用。
CRYPTUI_VIEWSIGNERINFO_STRUCT 包含 CryptUIDlgViewSignerInfo 函数的信息。
CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO 包含当证书是导出对象时 控制 CryptUIWizExport 函数操作的信息。
CRYPTUI_WIZ_EXPORT_INFO 包含控制 CryptUIWizExport 函数操作的信息。
CRYPTUI_WIZ_IMPORT_SRC_INFO 包含要导入到 CryptUIWizImport 函数的主题。
DHPRIVKEY_VER3 包含特定于密钥 BLOB 中包含的特定私钥的信息。
DHPUBKEY 包含特定于密钥 BLOB 中包含的特定Diffie-Hellman公钥的信息。
DHPUBKEY_VER3 包含特定于密钥 BLOB 中包含的特定公钥的信息。
Diffie-Hellman 版本 3 私钥 BLOB 用于导出和导入有关 DH 私钥的信息。
Diffie-Hellman 版本 3 公钥 BLOB 用于导出和导入有关 DH 公钥的信息。
DSS 版本 3 私钥 BLOB 用于导出和导入有关 DH 私钥的信息。
DSS 版本 3 公钥 BLOB 用于导出和导入有关 DH 公钥的信息。
DSSPRIVKEY_VER3 包含特定于密钥 BLOB 中包含的特定私钥的信息。
DSSPUBKEY 包含特定于密钥 BLOB 中包含的特定公钥的信息。
DSSPUBKEY_VER3 包含特定于密钥 BLOB 中包含的特定公钥的信息。
DSSSEED 保存可用于验证 DSS 公钥的质数的种子值和计数器值。
HMAC_INFO 指定 哈希 算法以及用于计算 基于哈希的消息身份验证代码 (HMAC) 哈希的内部和外部字符串。
KEYSVC_BLOB 定义密钥服务 BLOB。
KEYSVC_UNICODE_STRING 定义密钥服务 Unicode 字符串。
OCSP_BASIC_RESPONSE_ENTRY 包含单个证书的当前证书状态。
OCSP_BASIC_RESPONSE_INFO 包含 RFC 2560 指定的基本 OCSP 响应。
OCSP_BASIC_REVOKED_INFO 包含吊销证书的原因。
OCSP_BASIC_SIGNED_RESPONSE_INFO 包含带签名的基本 OCSP 响应。
OCSP_CERT_ID 包含用于标识 OCSP 请求或响应中的证书的信息。
OCSP_REQUEST_ENTRY 包含有关 OCSP 请求中单个证书的信息。
OCSP_REQUEST_INFO 包含 RFC 2560 指定的 OCSP 请求的信息。
OCSP_RESPONSE_INFO 指示相应 OCSP 请求的成功或失败。 对于成功的请求,它包含响应信息的类型和值。
OCSP_SIGNATURE_INFO 包含 OCSP 请求或响应的签名。
OCSP_SIGNED_REQUEST_INFO 包含 OCSP 请求的信息以及可选的签名信息。
PROV_ENUMALGS 由调用 CryptGetProvParamCPGetProvParam 返回。
PROV_ENUMALGS_EX 由调用 CryptGetProvParamCPGetProvParam 返回。
PUBLICKEYSTRUC 指示密钥的 BLOB 类型和密钥使用的算法。
ROOT_INFO_LUID 包含加密智能卡根信息的 本地唯一标识符 (LUID) 。
RSAPUBKEY 包含特定于密钥 BLOB 中包含的特定公钥的信息。
SCHANNEL_ALG 包含算法和密钥大小信息。
SIGNER_ATTR_AUTHCODE 指定 验证码 签名的属性。
SIGNER_BLOB_INFO 指定要签名的 BLOB
SIGNER_CERT 指定用于对文档进行签名的证书。 证书可以存储在 软件发布者证书 (SPC) 文件或证书存储中。
SIGNER_CERT_STORE_INFO 指定用于对文档进行签名的证书存储。
SIGNER_CONTEXT 包含已签名的 BLOB。
SIGNER_FILE_INFO 指定要签名的文件。
SIGNER_PROVIDER_INFO 指定用于创建数字签名的 CSP 和私钥信息。
SIGNER_SIGNATURE_INFO 包含有关数字签名的信息。
SIGNER_SPC_CHAIN_INFO 指定用于对文档进行签名的软件 发布者证书 (SPC) 和证书链。
SIGNER_SUBJECT_INFO 指定要签名的主题。

 

常见证书结构

许多证书函数都使用以下结构。

结构 说明
CERT_BIOMETRIC_DATA 包含有关生物识别数据的信息。
CERT_BIOMETRIC_EXT_INFO 包含一组生物识别信息。
CERT_CONTEXT 包含 证书的编码和解码表示形式。
CERT_CRL_CONTEXT_PAIR 包含证书上下文和关联的 CRL 上下文。
CERT_DH_PARAMETERS 包含与 Diffie-Hellman 公钥算法关联的参数。
CERT_DSS_PARAMETERS 包含与 DSS 公钥算法关联的参数。
CERT_ECC_SIGNATURE 包含椭圆曲线数字签名算法的 r 和 s 值 (ECDSA) 签名。
CERT_EXTENSION 包含 证书的扩展信息、 证书吊销列表 (CRL) 或 证书信任列表 (CTL) 。
CERT_EXTENSIONS 包含扩展数组。
CERT_GENERAL_SUBTREE CERT_NAME_CONSTRAINTS_INFO 结构中使用,此结构提供可以包含或排除的证书的标识。
CERT_HASHED_URL 包含经过哈希处理的 URL。
CERT_ID 用作唯一标识证书的灵活方法。
CERT_INFO 包含证书的信息。
CERT_KEY_CONTEXT 包含与 CERT_KEY_CONTEXT_PROP_ID 属性关联的 CERT_EXTENSION 结构的 Value 成员的 pvData 成员的数据。
CERT_KEYGEN_REQUEST_INFO 包含存储在 Netscape Keygen 请求中的信息。
CERT_LDAP_STORE_OPENED_PARA 当通过使用 CERT_LDAP_STORE_OPENED_FLAG 标志指定用于执行查询的现有 LDAP 会话以及 LDAP 查询字符串来指定CERT_STORE_PROV_LDAP提供程序时,与 CertOpenStore 函数一起使用。
CERT_LOGOTYPE_AUDIO 包含有关音频徽标类型的信息。
CERT_LOGOTYPE_AUDIO_INFO 包含有关音频徽标类型的更多详细信息。
CERT_LOGOTYPE_DATA 包含徽标类型数据。
CERT_LOGOTYPE_DETAILS 包含有关徽标类型的其他信息。
CERT_LOGOTYPE_EXT_INFO 包含一组徽标类型信息。
CERT_LOGOTYPE_IMAGE 包含有关图像徽标类型的信息。
CERT_LOGOTYPE_IMAGE_INFO 包含有关图像徽标类型的更多详细信息。
CERT_LOGOTYPE_INFO 包含有关徽标类型数据的信息。
CERT_LOGOTYPE_REFERENCE 包含徽标类型引用信息。
CERT_NAME_CONSTRAINTS_INFO 包含有关专门允许或从信任中排除的证书的信息。
CERT_NAME_INFO 包含使用者或颁发者名称。 该信息表示为 CERT_RDN 结构的数组。
CERT_NAME_VALUE 包含 RDN) 属性值 (相对可分辨名称
CERT_OTHER_LOGOTYPE_INFO 包含有关未预定义的徽标类型的信息。
CERT_PAIR 包含一个证书及其对交叉证书。
CERT_PHYSICAL_STORE_INFO 包含有关物理 证书存储的信息
CERT_POLICY_CONSTRAINTS_INFO 包含用于接受受信任证书的既定策略。
CERT_POLICY_MAPPING 包含颁发者域和使用者域策略 OID 之间的映射。
CERT_POLICY_MAPPINGS_INFO 提供两个域的策略 OID 之间的映射。
CERT_PUBLIC_KEY_INFO 包含公钥及其算法。
CERT_QC_STATEMENT 表示一个或多个语句序列中的单个语句,以包含在限定证书 (QC) 语句扩展中。
CERT_QC_STATEMENTS_EXT_INFO 包含一个或多个语句的序列,这些语句构成 QC 的合格证书 (QC) 语句扩展。
CERT_RDN 包含由CERT_RDN_ATTR结构数组组成的 相对可分辨名称 (RDN)
CERT_RDN_ATTR 包含 RDN) (相对可分辨名称 的单个属性。
CERT_REQUEST_INFO 包含 证书请求的信息。
CERT_REVOCATION_CRL_INFO 包含由 CRL 吊销类型处理程序更新的信息。
CERT_REVOCATION_PARA 可以选择将此结构传递给 CertVerifyRevocation ,以帮助查找要验证的上下文的颁发者。
CERT_REVOCATION_STATUS 包含有关证书吊销状态的信息。
CERT_SELECT_STRUCT 包含用于选择证书选择对话框中显示的证书的条件。 此结构在 CertSelectCertificate 函数中使用。
CERT_SIGNED_CONTENT_INFO 包含要签名的编码内容和用于保存签名的 BLOB
CERT_STORE_PROV_FIND_INFO 此结构由许多存储提供程序回调函数使用。
CERT_STORE_PROV_INFO 包含使用 CertOpenStore 打开存储时已安装的 CertDllOpenStoreProv 返回的信息。
CERT_STRONG_SIGN_PARA 包含用于检查证书、CRL、OCSP 响应和 PKCS #7 消息的强签名的参数。
CERT_STRONG_SIGN_SERIALIZED_INFO 包含可用于强 签名的签名算法/哈希算法公钥算法/位长度 对。
CERT_SUBJECT_INFO_ACCESS 这是 CERT_AUTHORITY_INFO_ACCESS 结构的同义词。
CERT_SYSTEM_STORE_INFO 包含使用系统存储的函数使用的信息。
CERT_SYSTEM_STORE_RELOCATE_PARA 包含当函数的 dwFlags 参数设置为 CERT_SYSTEM_STORE_RELOCATE_FLAG 时要传递给 CertOpenStore 的数据。
CERT_TEMPLATE_EXT 此结构是证书模板。
CERT_X942_DH_PARAMETERS 包含与Diffie-Hellman公钥算法关联的参数。
CERT_X942_DH_VALIDATION_PARAMS 此结构由 CERT_X942_DH_PARAMETERS 结构的成员选择性地指向,并包含其他种子信息。
CMC_ADD_ATTRIBUTES_INFO 包含要添加到证书的证书属性。
CMC_ADD_EXTENSIONS_INFO 包含要添加到证书的证书扩展控制属性。
CMC_DATA_INFO 此结构提供了一种传达不同部分标记信息的方法。
CMC_PEND_INFO 此结构是 CMC_STATUS_INFO 结构的可能成员。
CMC_RESPONSE_INFO 此结构提供了一种传达不同部分标记信息的方法。
CMC_STATUS_INFO 包含有关通过 CMS 的证书管理消息的状态信息。
CMC_TAGGED_ATTRIBUTE 此结构用于 CMC_DATA_INFOCMC_RESPONSE_INFO 结构。
CMC_TAGGED_CERT_REQUEST 此结构在 CMC_TAGGED_REQUEST 结构中使用。
CMC_TAGGED_CONTENT_INFO 此结构用于 CMC_DATA_INFOCMC_RESPONSE_INFO 结构。
CMC_TAGGED_OTHER_MSG 此结构用于 CMC_DATA_INFOCMC_RESPONSE_INFO 结构。
CMC_TAGGED_REQUEST 此结构在 CMC_DATA_INFO 结构中用于请求证书。
CRL_CONTEXT 包含 CRL 的编码和解码表示形式。
CRL_ENTRY 包含有关单个吊销证书的信息。 它是 CRL_INFO 结构的成员。
CRL_INFO 包含证书吊销列表的信息 (CRL) 。
CRL_ISSUING_DIST_POINT 包含有关 CRL 中列出的证书类型的信息。
CROSS_CERT_DIST_POINTS_INFO 此结构提供用于更新动态交叉证书的信息。
CTL_ANY_SUBJECT_INFO 包含将在 CTL 中匹配的 SubjectAlgorithm,以及将在调用 CertFindSubjectInCTL 时在 CTL 条目之一中匹配的 SubjectIdentifier
CTL_CONTEXT 包含 CTL 的编码和解码表示形式。
CTL_ENTRY 此结构是 证书信任列表 的一个元素, (CTL) 。
CTL_FIND_SUBJECT_PARA 包含 CertFindCTLInStore 用于查找证书信任列表 (CTL) CTL_FIND_SUBJECT的 dwFindType 的数据。
CTL_FIND_USAGE_PARA 此结构是 CTL_FIND_SUBJECT_PARA 结构的成员,由 CertFindCTLInStore 使用
CTL_INFO 包含存储在 证书信任列表中 的信息 (CTL) 。
CTL_MODIFY_REQUEST 包含修改证书信任列表的请求。 此结构用于 CertModifyCertificatesToTrust 函数。
CTL_USAGE 包含用于 证书信任列表 (CTL) 扩展的对象标识符 (OID) 数组。
CTL_VERIFY_USAGE_PARA 包含 CertVerifyCTLUsage 用于建立 CTL 用法有效性的参数。
CTL_VERIFY_USAGE_STATUS 包含有关证书 信任列表 的信息, (CertVerifyCTLUsage 返回的 CTL) 。

 

X.509 证书扩展结构

以下结构与 X.509 CERT_EXTENSION 结构相关联。

结构 说明
CERT_ACCESS_DESCRIPTION 此结构是 CERT_AUTHORITY_INFO_ACCESS 结构的成员。
CERT_ALT_NAME_ENTRY 包含各种名称形式之一中的备用名称。
CERT_ALT_NAME_INFO 用于使用者证书或颁发者 证书的编码和解码扩展、 证书吊销列表 (CRL) 和 证书信任列表 (CTL) 。
CERT_AUTHORITY_INFO_ACCESS 表示颁发机构信息访问和使用者信息访问证书扩展,并指定如何访问该证书的使用者或颁发者的其他信息和服务。
CERT_AUTHORITY_KEY_ID_INFO 标识用于对 证书 或 CRL 进行签名的密钥。
CERT_AUTHORITY_KEY_ID2_INFO 标识用于对 证书 或 CRL 进行签名的密钥。 它不同于 CERT_AUTHORITY_KEY_ID_INFO 结构,即证书颁发者是 CERT_ALT_NAME_INFO 而不是 CERT_NAME_BLOB
CERT_BASIC_CONSTRAINTS_INFO 包含指示认证主体是否可以充当 CA、最终实体或两者的信息。
CERT_BASIC_CONSTRAINTS2_INFO 包含指示认证主体是可以充当 CA 还是最终实体的信息。
CERT_KEY_ATTRIBUTES_INFO 包含有关要认证的公钥的可选附加信息。
CERT_KEY_USAGE_RESTRICTION_INFO 包含对证书公钥的使用施加的限制。
CERT_POLICIES_INFO 包含 CERT_POLICY_INFO数组。
CERT_POLICY_ID 包含证书明确支持的证书策略列表,以及与这些策略相关的可选限定符信息。
CERT_POLICY_INFO 包含对象标识符 (OID) 指定策略和可选的策略限定符数组。
CERT_POLICY_QUALIFIER_INFO 包含对象标识符 (OID) 指定限定符和限定符特定的补充信息。
CERT_PRIVATE_KEY_VALIDITY 指示与证书公钥对应的私钥的有效时间跨度。
CRL_DIST_POINT 标识证书用户可以引用的单个 CRL 分发点,以确定证书是否已吊销。
CRL_DIST_POINT_NAME 标识可从中获取 CRL 的位置。
CRL_DIST_POINTS_INFO 包含证书用户可以引用的 CRL 分发点列表,以确定证书是否已吊销。

 

可以使用 CryptEncodeObjectCryptEncodeObjectEx 函数将这些结构编码为 CERT_EXTENSION 结构的 Value 成员。 当解码CERT_EXTENSION结构的Value 成员时,它们由 CryptDecodeObjectCryptDecodeObjectEx 函数创建并返回。

编码或创建的结构取决于CERT_EXTENSION结构的 pszObjId 字符串成员。

下表显示了当前扩展预定义常量和 OID 以及与每个参数关联的结构。

注意

可以互换使用 (列 1) 的预定义常量及其对应的 OID (列 2) 。

 

预定义常量 对象标识符 (OID) 数据结构
X509_AUTHORITY_INFO_ACCESS szOID_AUTHORITY_INFO_ACCESS CERT_AUTHORITY_INFO_ACCESS
X509_AUTHORITY_KEY_ID szOID_AUTHORITY_KEY_IDENTIFIER CERT_AUTHORITY_KEY_ID_INFO
X509_ALTERNATE_NAME szOID_SUBJECT_ALT_NAME – 或 –
szOID_ISSUER_ALT_NAME
CERT_ALT_NAME_INFO
X509_BASIC_CONSTRAINTS szOID_BASIC_CONSTRAINTS CERT_BASIC_CONSTRAINTS_INFO
X509_BASIC_CONSTRAINTS2 szOID_BASIC_CONSTRAINTS2 CERT_BASIC_CONSTRAINTS2_INFO
X509_CERT_POLICIES szOID_CERT_POLICIES CERT_POLICIES_INFO
X509_KEY_ATTRIBUTES szOID_KEY_ATTRIBUTES CERT_KEY_ATTRIBUTES_INFO
X509_KEY_USAGE szOID_KEY_USAGE CRYPT_BIT_BLOB
X509_KEY_USAGE_RESTRICTION szOID_KEY_USAGE_RESTRICTION CERT_KEY_USAGE_RESTRICTION_INFO
szOID_POLICY_MAPPINGS 未实现
szOID_SUBJECT_DIR_ATTRS 未实现

 

消息结构

加密消息函数使用以下结构。

结构 说明
CMSG_CMS_RECIPIENT_INFO 此结构与 CryptMsgGetParam 函数一起使用,以获取有关密钥传输、密钥协议或邮件列表信封邮件收件人的信息。
CMSG_CMS_SIGNER_INFO 此结构包含已签名或已签名和信封邮件中定义的 SignerInfo 的内容。
CMSG_CNG_CONTENT_DECRYPT_INFO 包含用于导入和解密加密 API 的 CryptMsgControl 和 OID 可安装函数之间传递的所有相关信息:下一代 (CNG) 内容加密密钥 (CEK) 。
CMSG_CONTENT_ENCRYPT_INFO 包含用于加密和导出内容加密密钥的 PFN_CMSG_GEN_CONTENT_ENCRYPT_KEYPFN_CMSG_EXPORT_KEY_TRANSPFN_CMSG_EXPORT_KEY_AGREEPFN_CMSG_EXPORT_MAIL_LIST对象标识符 (OID) 可安装函数之间共享的信息。
CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA 此结构用于向已签名消息的签名者添加未经身份验证的属性。
CMSG_CTRL_DECRYPT_PARA 此结构包含用于解密密钥传输收件人的信封邮件的信息。 如果CMSG_CTRL_DECRYPT dwCtrlType 参数,则此结构将传递给 CryptMsgControl
CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA 此结构用于删除已签名消息的签名者的未经身份验证的属性。
CMSG_CTRL_KEY_AGREE_DECRYPT_PARA 此结构包含有关密钥协议收件人的信息。
CMSG_CTRL_KEY_TRANS_DECRYPT_PARA 此结构包含有关密钥传输邮件收件人的信息。
CMSG_CTRL_MAIL_LIST_DECRYPT_PARA 此结构包含有关邮件列表邮件收件人的信息。
CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA 此结构包含用于验证消息签名的信息。 它包含签名者索引和签名者公钥。 签名者公钥可以是签名者的 CERT_PUBLIC_KEY_INFO结构、 证书上下文或链上下文。
CMSG_ENVELOPED_ENCODE_INFO 此结构包含对信封邮件进行编码所需的信息。 如果CMSG_ENVELOPED dwMsgType,则会将其传递到 CryptMsgOpenToEncode
CMSG_ENVELOPED_HASHED_INFO 此结构与 哈希 消息一起使用。 如果CMSG_ENVELOPED dwMsgType,则会将其传递到 CryptMsgOpenToEncode
CMSG_KEY_AGREE_ENCRYPT_INFO 包含适用于信封邮件的所有密钥协议收件人的加密信息。
CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 包含信封邮件的密钥协议收件人的加密密钥。
CMSG_KEY_TRANS_ENCRYPT_INFO 包含信封数据的密钥传输接收方的加密信息。
CMSG_MAIL_LIST_ENCRYPT_INFO 包含信封数据的邮件列表收件人的加密信息。
CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 此结构包含有关使用密钥协议密钥管理的邮件收件人的信息。
CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO 此结构包含邮件收件人的编码密钥传输信息。
CMSG_KEY_TRANS_RECIPIENT_INFO 此结构包含密钥传输算法中使用的信息。
CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO 此结构与以前分发的 对称密钥 一起使用,用于解密内容密钥加密密钥 (KEK) 。
CMSG_MAIL_LIST_RECIPIENT_INFO 此结构包含用于以前分发的 对称 密钥加密密钥的信息 (KEK) 。
CMSG_RC2_AUX_INFO 此结构包含 RC2 加密算法密钥的位长度。 CMSG_ENVELOPED_ENCODE_INFO中的 pvEncryptionAuxInfo 成员可以设置为指向此结构的实例。
CMSG_RC4_AUX_INFO 此结构包含 RC4 加密算法密钥的位长度。 CMSG_ENVELOPED_ENCODE_INFO中的 pvEncryptionAuxInfo 成员可以设置为指向此结构的实例。
CMSG_RECIPIENT_ENCODE_INFO 此结构包含邮件收件人的内容加密密钥管理类型的信息。
CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO 此结构包含有关消息接收器的信息,该消息接收方用于解密消息内容所需的会话密钥。 此结构用于使用任何密钥管理方法的 CMS 低级别消息。
CMSG_RECIPIENT_ENCRYPTED_KEY_INFO 此结构包含用于单个密钥协议收件人的信息。
CMSG_SIGNED_ENCODE_INFO 如果CMSG_SIGNED dwMsgType,则此结构包含要传递给 CryptMsgOpenToEncode 的信息。
CMSG_SIGNER_ENCODE_INFO 此结构包含签名者信息。 如果 dwMsgType 参数CMSG_SIGNED,则它作为 CMSG_SIGNED_ENCODE_INFO 结构的成员传递给 CryptMsgCountersignCryptMsgCountersign、CryptMsgCountersignEncode 和可选。
CMSG_SIGNER_INFO 此结构包含已签名消息中定义的 PKCS #7 SignerInfo 的内容。
CMSG_SP3_COMPATIBLE_AUX_INFO 此结构包含 SP3 兼容加密所需的信息。
CMSG_STREAM_INFO 此结构用于启用处理流数据,而不是单块处理。 处理大型消息时最常使用流处理。 流处理消息可以源自任何序列化源,例如硬盘、服务器或 CD ROM 上的文件。
CRYPT_DECRYPT_MESSAGE_PARA 包含用于解密消息的信息。
CRYPT_ENCRYPT_MESSAGE_PARA 包含用于加密消息的信息。
CRYPT_HASH_MESSAGE_PARA 包含用于对消息 进行哈希处理 的数据。
CRYPT_SIGN_MESSAGE_PARA 包含有关使用指定的签名证书上下文对消息进行签名的信息
CRYPT_VERIFY_MESSAGE_PARA 包含验证已签名消息所需的信息。

 

OID 支持结构

OID 支持函数使用以下结构。

结构 说明
CRYPT_OID_FUNC_ENTRY 包含对象 标识符 (OID) 和指向其相关函数的指针。 它与 CryptInstallOIDFunctionAddress 一起使用
CRYPT_OID_INFO 包含有关对象 标识符 的信息 (OID) 。
CRYPT_RC2_CBC_PARAMETERS 包含用于szOID_RSA_RC2CBC加密的信息。
CRYPT_SMIME_CAPABILITIES 包含受支持功能的优先数组。
CRYPT_SMIME_CAPABILITY 指定单个功能及其关联的参数。

 

证书链结构

以下结构用于生成用于在证书中建立信任的证书链。

结构 说明
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA 保存用于验证文件的证书链的策略信息。
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS 保存用于文件链验证的其他验证码策略信息。
AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA 包含可用于文件证书链验证的时间戳策略信息。
CERT_CHAIN_CONTEXT 包含简单证书链的数组和信任状态结构,该结构指示所有连接的简单链上的摘要有效性数据。
CERT_CHAIN_ELEMENT 此结构是简单证书链中的单个元素。
CERT_CHAIN_ENGINE_CONFIG 设置用于生成非默认证书链引擎的参数。
CERT_CHAIN_FIND_BY_ISSUER_PARA 保存 CertFindChainInStore 中用于生成证书链的信息。
CERT_CHAIN_PARA 建立要用于生成证书链的搜索和匹配条件。
CERT_CHAIN_POLICY_PARA 包含 CertVerifyCertificateChainPolicy 中用于建立证书链验证策略条件的信息。
CERT_CHAIN_POLICY_STATUS 保存 CertVerifyCertificateChainPolicy 从证书链验证返回的证书链状态信息。
CERT_REVOCATION_INFO 指示CERT_CHAIN_ELEMENT中证书的吊销状态。
CERT_SELECT_CHAIN_PARA 包含用于生成和选择链的参数。
CERT_SIMPLE_CHAIN 包含一个链元素数组,以及数组表示的链的摘要信任状态。
CERT_SELECTUI_INPUT CertSelectionGetSerializedBlob 函数用于序列化存储区或证书链数组中包含的证书。 返回的序列化 BLOB 可以传递给 CredUIPromptForWindowsCredentials 函数。
CERT_TRUST_LIST_INFO 指示 CTL 的有效用法。
CERT_TRUST_STATUS 包含有关证书链中证书的信任信息、有关简单证书链的摘要信任信息或有关简单链数组的摘要信息。
CERT_USAGE_MATCH 提供用于查找用于生成证书链的颁发者证书的参数。
CTL_USAGE_MATCH 提供用于查找 证书信任列表 的参数, (用于生成证书链的 CTL) 。
SSL_EXTRA_CERT_CHAIN_POLICY_PARA 保存用于验证 安全套接字层 (SSL) 客户端/服务器证书链的策略信息。

 

CSP 结构

以下结构用于 加密服务提供程序 (CSP) 函数。

结构 说明
BLOBHEADER 指示密钥的 BLOB 类型和密钥使用的算法。
VTableProvStruc 包含指向 CSP 函数可以使用的回调函数的指针。
PLAINTEXTKEYBLOB 包含纯文本键的参数标头信息。

 

WinTrust 结构

以下结构与 WinVerifyTrust 函数一起使用。

结构 说明
CRYPT_PROVIDER_DEFUSAGE WintrustGetDefaultForUsage 函数用于检索提供程序默认用法的回调信息。
CRYPT_PROVIDER_REGDEFUSAGE WintrustAddDefaultForUsage 函数用于注册有关提供程序的默认使用情况的回调信息。
SPC_INDIRECT_DATA_CONTENT 存储 Authenticode 签名文件的摘要和其他属性。
WINTRUST_BLOB_INFO 在调用 WinVerifyTrust 以验证内存 BLOB 时使用。
WINTRUST_CATALOG_INFO 在调用 WinVerifyTrust 以验证 Microsoft 目录的成员时使用。
WINTRUST_CERT_INFO 在调用 WinVerifyTrust 以验证 CERT_CONTEXT时使用。
WINTRUST_DATA 在调用 WinVerifyTrust 以将必要信息传递到信任提供程序时使用
WINTRUST_FILE_INFO 在调用 WinVerifyTrust 以验证单个文件时使用。
WINTRUST_SGNR_INFO 在调用 WinVerifyTrust 以验证 CMSG_SIGNER_INFO 结构时使用。

 

SIP 结构

使用者 接口包 (SIPP 函数使用以下结构。

结构 说明
SIP_ADD_NEWPROVIDER 定义 SIP。
SIP_CAP_SET 定义 SIP 的功能。
SIP_DISPATCH_INFO 包含一组指向 SIP 函数的指针。
SIP_INDIRECT_DATA 包含经过哈希处理的主题信息的摘要。
SIP_SUBJECTINFO 指定 SIP 使用者信息。