CryptEncodeObject 和 CryptDecodeObject 的常量

CryptEncodeObjectCryptEncodeObjectExCryptSignAndEncodeCertificateCryptDecodeObjectCryptDecodeObjectEx 函数是通用编码和解码函数,能够编码和解码抽象语法表示法 One (ASN.1) 编码证书、证书吊销列表 (CRL) 、证书信任列表 (CTL) 以及证书请求。

下表列出了用于编码和解码操作的预定义常量、扩展和属性,以及 pvStructInfo 参数要指向的数据结构。

注意

某些预定义常量和 OID 字符串具有相同的含义。 当它们这样做时,两者都可以用作 lpszStuctType 参数。

 

常量/值 说明
CMC_ADD_ATTRIBUTES
(LPCSTR) 63
pvStructInfo 参数是指向CMC_ADD_ATTRIBUTES_INFO结构的指针。
CMC_ADD_EXTENSIONS
(LPCSTR) 62
pvStructInfo 参数是指向CMC_ADD_EXTENSIONS_INFO结构的指针。
X509_ALGORITHM_IDENTIFIER
(LPCSTR) 74
pvStructInfo 参数是指向CRYPT_ALGORITHM_IDENTIFIER结构的指针。
X509_ALTERNATE_NAME
(LPCSTR) 12
pvStructInfo 参数是指向CERT_ALT_NAME_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_ANY_STRING
X509_NAME_VALUE
pvStructInfo 参数是指向CERT_NAME_VALUE结构的指针。
szOID_APPLICATION_CERT_POLICIES
"1.3.6.1.4.1.311.21.10"
pvStructInfo 参数是指向CERT_POLICY_QUALIFIER_INFO结构的指针。
szOID_APPLICATION_POLICY_CONSTRAINTS
"1.3.6.1.4.1.311.21.12"
pvStructInfo 参数是指向CERT_POLICY_CONSTRAINTS_INFO结构的指针。
szOID_APPLICATION_POLICY_MAPPINGS
"1.3.6.1.4.1.311.21.11"
pvStructInfo 参数是指向CERT_POLICY_MAPPINGS_INFO结构的指针。
PKCS_ATTRIBUTE
(LPCSTR) 22
pvStructInfo 参数是指向CRYPT_ATTRIBUTE结构的指针。
X509_AUTHORITY_INFO_ACCESS
(LPCSTR) 32
pvStructInfo 参数是指向CERT_AUTHORITY_INFO_ACCESS结构的指针。 有关详细信息,请参阅“备注”。
szOID_AUTHORITY_INFO_ACCESS
"1.3.6.1.5.5.7.1.1"
pvStructInfo 参数是指向CERT_AUTHORITY_INFO_ACCESS结构的指针。 有关详细信息,请参阅“备注”。
X509_SUBJECT_INFO_ACCESS
X509_AUTHORITY_INFO_ACCESS
pvStructInfo 参数是指向CERT_AUTHORITY_INFO_ACCESS结构的指针。
szOID_SUBJECT_INFO_ACCESS
"1.3.6.1.5.5.7.1.11"
pvStructInfo 参数是指向CERT_AUTHORITY_INFO_ACCESS结构的指针。
X509_AUTHORITY_KEY_ID
(LPCSTR) 9
pvStructInfo 参数是指向 CERT_AUTHORITY_KEY_ID_INFO 结构的指针。 有关详细信息,请参阅“备注”。
X509_AUTHORITY_KEY_ID2
(LPCSTR) 31
pvStructInfo 参数是指向CERT_AUTHORITY_KEY_ID2_INFO结构的指针。 有关详细信息,请参阅“备注”。
szOID_AUTHORITY_KEY_IDENTIFIER
"2.5.29.1"
pvStructInfo 参数是指向 CERT_AUTHORITY_KEY_ID_INFO 结构的指针。 有关详细信息,请参阅“备注”。
szOID_AUTHORITY_KEY_IDENTIFIER2
"2.5.29.35"
pvStructInfo 参数是指向CERT_AUTHORITY_KEY_ID2_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_BASIC_CONSTRAINTS
(LPCSTR) 13
pvStructInfo 参数是指向CERT_BASIC_CONSTRAINTS_INFO结构的指针。 有关详细信息,请参阅“备注”。
szOID_BASIC_CONSTRAINTS
"2.5.29.10"
pvStructInfo 参数是指向CERT_BASIC_CONSTRAINTS_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_BASIC_CONSTRAINTS2
(LPCSTR) 15
pvStructInfo 参数是指向CERT_BASIC_CONSTRAINTS2_INFO结构的指针。
szOID_BASIC_CONSTRAINTS2
"2.5.29.19"
pvStructInfo 参数是指向CERT_BASIC_CONSTRAINTS2_INFO结构的指针。
X509_BIOMETRIC_EXT
(LPCSTR) 71
pvStructInfo 参数是指向CERT_BIOMETRIC_EXT_INFO结构的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
szOID_BIOMETRIC_EXT
"1.3.6.1.5.5.7.1.2"
pvStructInfo 参数是指向CERT_BIOMETRIC_EXT_INFO结构的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
X509_BITS
(LPCSTR) 26
pvStructInfo 参数是指向CRYPT_BIT_BLOB结构的指针。
X509_CERT
(LPCSTR) 1
pvStructInfo 参数是指向CERT_SIGNED_CONTENT_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_CERT_CRL_TO_BE_SIGNED
(LPCSTR) 3
pvStructInfo 参数是指向CRL_INFO结构的指针。
szOID_CERT_EXTENSIONS
"1.3.6.1.4.1.311.2.1.14"
pvStructInfo 参数是指向CERT_EXTENSIONS结构的指针。
X509_CERT_PAIR
(LPCSTR) 53
pvStructInfo 参数是指向CERT_PAIR结构的指针。
X509_CERT_POLICIES
(LPCSTR) 16
pvStructInfo 参数是指向CERT_POLICIES_INFO结构的指针。
szOID_CERT_POLICIES
"2.5.29.32"
pvStructInfo 参数是指向CERT_POLICIES_INFO结构的指针。
X509_CERT_REQUEST_TO_BE_SIGNED
(LPCSTR) 4
pvStructInfo 参数是指向CERT_REQUEST_INFO结构的指针。
X509_CERT_TO_BE_SIGNED
(LPCSTR) 2
pvStructInfo 参数是指向CERT_INFO结构的指针。
X509_CERTIFICATE_TEMPLATE
(LPCSTR) 64
pvStructInfo 参数是指向CERT_TEMPLATE_EXT结构的指针。
szOID_CERTIFICATE_TEMPLATE
"1.3.6.1.4.1.311.21.7"
pvStructInfo 参数是指向CERT_TEMPLATE_EXT结构的指针。
X509_CHOICE_OF_TIME
(LPCSTR) 30
pvStructInfo 参数是指向 FILETIME 变量的指针。 有关详细信息,请参阅“备注”。
PKCS_CONTENT_INFO
(LPCSTR) 33
pvStructInfo 参数是指向CRYPT_CONTENT_INFO结构的指针。 有关详细信息,请参阅“备注”。
PKCS_CONTENT_INFO_SEQUENCE_OF_ANY
(LPCSTR) 23
pvStructInfo 参数是指向CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY结构的指针。 有关详细信息,请参阅“备注”。
X509_CRL_DIST_POINTS
(LPCSTR) 35
pvStructInfo 参数是指向CRL_DIST_POINTS_INFO结构的指针。 有关详细信息,请参阅“备注”。
szOID_CRL_DIST_POINTS
2.5.29.31
pvStructInfo 参数是指向CRL_DIST_POINTS_INFO结构的指针。 有关详细信息,请参阅“备注”。
szOID_CRL_NUMBER
"2.5.29.20"
pvStructInfo 参数是指向 int 变量的指针。
X509_CRL_REASON_CODE
X509_ENUMERATED
pvStructInfo 参数是指向包含枚举值的整数的指针。 有关详细信息,请参阅“备注”。
szOID_CRL_REASON_CODE
"2.5.29.21"
pvStructInfo 参数是指向包含枚举值的整数的指针。 有关详细信息,请参阅“备注”。
szOID_CRL_VIRTUAL_BASE
"1.3.6.1.4.1.311.21.3"
pvStructInfo 参数是指向 int 变量的指针。
X509_CROSS_CERT_DIST_POINTS
(LPCSTR) 58
pvStructInfo 参数是指向CROSS_CERT_DIST_POINTS_INFO结构的指针。
szOID_CROSS_CERT_DIST_POINTS
"1.3.6.1.4.1.311.10.9.1"
pvStructInfo 参数是指向CROSS_CERT_DIST_POINTS_INFO结构的指针。
RSA_CSP_PUBLICKEYBLOB
(LPCSTR) 19
pvStructInfo 参数是指向 Diffie-Hellman 版本 3 公钥 BLOBDSS 版本 3 公钥 BLOB 结构的指针。 有关详细信息,请参阅“备注”。
PKCS_CTL
(LPCSTR) 37
pvStructInfo 参数是指向CTL_INFO结构的指针。
CMC_DATA
(LPCSTR) 59
pvStructInfo 参数是指向CMC_DATA_INFO结构的指针。
szOID_DELTA_CRL_INDICATOR
"2.5.29.27"
pvStructInfo 参数是指向 int 变量的指针。
X509_DSS_PARAMETERS
(LPCSTR) 39
pvStructInfo 参数是指向CERT_DSS_PARAMETERS结构的指针。
X509_DSS_PUBLICKEY
X509_MULTI_BYTE_UINT
pvStructInfo 参数是指向CRYPT_UINT_BLOB结构的指针。
X509_DSS_SIGNATURE
(LPCSTR) 40
pvStructInfo 参数是指向 40 字节数组的指针。 有关详细信息,请参阅“备注”。
szOID_ECC_PUBLIC_KEY
"1.2.840.10045.2.1"
pvStructInfo 参数是指向对象标识符点表示形式的 LPSTR 的指针。
X509_ECC_SIGNATURE
(LPCSTR) 47
pvStructInfo 参数是指向CERT_ECC_SIGNATURE结构的指针。 有关详细信息,请参阅“备注”。
X509_ECC_PRIVATE_KEY
(LPCSTR) 82
pvStructInfo 参数是指向CRYPT_ECC_PRIVATE_KEY_INFO结构的指针。
Windows Server 2003、Windows XP、Windows 2000 和 Windows Vista: 不支持此值。
szOID_ECDSA_SPECIFIED
"1.2.840.10045.4.3"
pvStructInfo 参数是指向CRYPT_ALGORITHM_IDENTIFIER结构的指针。
X509_ENHANCED_KEY_USAGE
(LPCSTR) 36
pvStructInfo 参数是指向CERT_ENHKEY_USAGECTL_USAGE结构的指针。 (这些结构相同,但名称不同。)
szOID_ENHANCED_KEY_USAGE
"2.5.29.37"
pvStructInfo 参数是指向CERT_ENHKEY_USAGECTL_USAGE结构的指针。 (这些结构相同,但名称不同。)
szOID_ENROLLMENT_NAME_VALUE_PAIR
"1.3.6.1.4.1.311.13.2.1"
pvStructInfo 参数是指向CRYPT_ENROLLMENT_NAME_VALUE_PAIR结构的指针。
X509_ENUMERATED
(LPCSTR) 29
pvStructInfo 参数是指向包含枚举值的整数的指针。 有关详细信息,请参阅“备注”。
X509_EXTENSIONS
(LPCSTR) 5
pvStructInfo 参数是指向CERT_EXTENSIONS结构的指针。
szOID_FRESHEST_CRL
"2.5.29.46"
pvStructInfo 参数是指向CRL_DIST_POINTS_INFO结构的指针。
X509_INTEGER
(LPCSTR) 27
pvStructInfo 参数是指向 32 位或更小的有符号整数的指针。
szOID_ISSUER_ALT_NAME
"2.5.29.8"
pvStructInfo 参数是指向CERT_ALT_NAME_INFO结构的指针。 有关详细信息,请参阅“备注”。
szOID_ISSUER_ALT_NAME2
"2.5.29.18"
pvStructInfo 参数是指向CERT_ALT_NAME_INFO结构的指针。
X509_ISSUING_DIST_POINT
(LPCSTR) 54
pvStructInfo 参数是指向CRL_ISSUING_DIST_POINT结构的指针。
szOID_ISSUING_DIST_POINT
"2.5.29.28"
pvStructInfo 参数是指向CRL_ISSUING_DIST_POINT结构的指针。
X509_KEY_ATTRIBUTES
(LPCSTR) 10
pvStructInfo 参数是指向CERT_KEY_ATTRIBUTES_INFO结构的指针。
szOID_KEY_ATTRIBUTES
"2.5.29.2"
pvStructInfo 参数是指向CERT_KEY_ATTRIBUTES_INFO结构的指针。
X509_KEY_USAGE
(LPCSTR) 14
pvStructInfo 参数是指向CRYPT_BIT_BLOB结构的指针。 有关详细信息,请参阅“备注”。
szOID_KEY_USAGE
"2.5.29.15"
pvStructInfo 参数是指向CRYPT_BIT_BLOB结构的指针。 有关详细信息,请参阅“备注”。
X509_KEY_USAGE_RESTRICTION
(LPCSTR) 11
pvStructInfo 参数是指向CERT_KEY_USAGE_RESTRICTION_INFO结构的指针。
szOID_KEY_USAGE_RESTRICTION
"2.5.29.4"
pvStructInfo 参数是指向CERT_KEY_USAGE_RESTRICTION_INFO结构的指针。
X509_KEYGEN_REQUEST_TO_BE_SIGNED
(LPCSTR) 21
pvStructInfo 参数是指向CERT_KEYGEN_REQUEST_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_LOGOTYPE_EXT
(LPCSTR) 70
pvStructInfo 参数是指向CERT_LOGOTYPE_EXT_INFO结构的指针。
szOID_LOGOTYPE_EXT
"1.3.6.1.5.5.7.1.12"
pvStructInfo 参数是指向CERT_LOGOTYPE_EXT_INFO结构的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
X509_MULTI_BYTE_INTEGER
(LPCSTR) 28
pvStructInfo 参数是指向CRYPT_INTEGER_BLOB结构的指针。 BLOB小端顺序排列。
X509_MULTI_BYTE_UINT
(LPCSTR) 38
pvStructInfo 参数是指向CRYPT_UINT_BLOB结构的指针。 有关详细信息,请参阅“备注”。
X509_NAME
(LPCSTR) 7
pvStructInfo 参数是指向CERT_NAME_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_NAME_CONSTRAINTS
(LPCSTR) 55
pvStructInfo 参数是指向CERT_NAME_CONSTRAINTS_INFO结构的指针。
szOID_NAME_CONSTRAINTS
"2.5.29.30"
pvStructInfo 参数是指向CERT_NAME_CONSTRAINTS_INFO结构的指针。
X509_NAME_VALUE
(LPCSTR) 6
pvStructInfo 参数是指向CERT_NAME_VALUE结构的指针。 有关详细信息,请参阅“备注”。
szOID_NEXT_UPDATE_LOCATION
pvStructInfo 参数是指向CERT_ALT_NAME_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_OBJECT_IDENTIFIER
(LPCSTR) 73
pvStructInfo 参数是指向对象标识符点表示形式的 LPSTR 的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
X509_OCTET_STRING
(LPCSTR) 25
pvStructInfo 参数是指向CRYPT_DATA_BLOB结构的指针。 有关详细信息,请参阅“备注”。
szOID_OIWSEC_dsa
"1.3.14.3.2.12"
pvStructInfo 参数是指向CERT_DSS_PARAMETERS结构的指针。
X509_POLICY_CONSTRAINTS
(LPCSTR) 57
pvStructInfo 参数是指向CERT_POLICY_CONSTRAINTS_INFO结构的指针。
szOID_POLICY_CONSTRAINTS
"2.5.29.36"
pvStructInfo 参数是指向CERT_POLICY_CONSTRAINTS_INFO结构的指针。
X509_POLICY_MAPPINGS
(LPCSTR) 56
pvStructInfo 参数是指向CERT_POLICY_MAPPINGS_INFO结构的指针。
szOID_POLICY_MAPPINGS
"2.5.29.33"
pvStructInfo 参数是指向CERT_POLICY_MAPPINGS_INFO结构的指针。
X509_PUBLIC_KEY_INFO
(LPCSTR) 8
pvStructInfo 参数是指向CERT_PUBLIC_KEY_INFO结构的指针。
PKCS_RC2_CBC_PARAMETERS
(LPCSTR) 41
pvStructInfo 参数是指向CRYPT_RC2_CBC_PARAMETERS结构的指针。
CMC_RESPONSE
(LPCSTR) 60
pvStructInfo 参数是指向CMC_RESPONSE_INFO结构的指针。
CNG_RSA_PUBLIC_KEY_BLOB
(LPCSTR) 72
pvStructInfo 参数是指向紧跟指数和模数字节的BCRYPT_RSAKEY_BLOB的指针。 有关详细信息,请参阅“备注”。
CNG_RSA_PRIVATE_KEY_BLOB
LPCSTR) 83
pvStructInfo 参数是指向专用BCRYPT_RSAKEY_BLOB结构的指针。
Windows Server 2003、Windows XP、Windows 2000 和 Windows Vista: 不支持此值。
szOID_RSA_signingTime
"1.2.840.113549.1.9.5"
pvStructInfo 参数是指向 FILETIME 变量的指针。 有关详细信息,请参阅“备注”。
szOID_RSA_SMIMECapabilities
"1.2.840.113549.1.9.15"
pvStructInfo 参数是指向CRYPT_SMIME_CAPABILITIES结构的指针。 有关详细信息,请参阅“备注”。
PKCS_RSA_SSA_PSS_PARAMETERS
(LPCSTR) 75
pvStructInfo 参数是指向CRYPT_RSA_SSA_PSS_PARAMETERS结构的指针。 有关详细信息,请参阅“备注”。
Windows Server 2003 和 Windows XP: 不支持此值。
szOID_RSA_SSA_PSS
"1.2.840.113549.1.1.10"
pvStructInfo 参数是指向CRYPT_RSA_SSA_PSS_PARAMETERS结构的指针。 有关详细信息,请参阅“备注”。
Windows Server 2003 和 Windows XP: 不支持此值。
PKCS_RSAES_OAEP_PARAMETERS
(LPCSTR) 76
pvStructInfo 参数是指向CRYPT_RSAES_OAEP_PARAMETERS结构的指针。 有关详细信息,请参阅“备注”。
Windows Server 2003 和 Windows XP: 不支持此值。
ECC_CMS_SHARED_INFO
(LPCSTR) 77
pvStructInfo 参数是指向CRYPT_ECC_CMS_SHARED_INFO结构的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
szOID_RSAES_OAEP
"1.2.840.113549.1.1.7"
pvStructInfo 参数是指向CRYPT_RSAES_OAEP_PARAMETERS结构的指针。 有关详细信息,请参阅“备注”。
Windows Server 2003 和 Windows XP: 不支持此值。
X509_SEQUENCE_OF_ANY
(LPCSTR) 34
pvStructInfo 参数是指向CRYPT_SEQUENCE_OF_ANY结构的指针。 有关详细信息,请参阅“备注”。
PKCS7_SIGNER_INFO
(LPCSTR) 500
pvStructInfo 参数是指向CMSG_SIGNER_INFO结构的指针。
CMS_SIGNER_INFO
(LPCSTR) 501
pvStructInfo 参数是指向CMSG_CMS_SIGNER_INFO结构的指针。
PKCS_SMIME_CAPABILITIES
(LPCSTR) 42
pvStructInfo 参数是指向CRYPT_SMIME_CAPABILITIES结构的指针。 有关详细信息,请参阅“备注”。
CMC_STATUS
(LPCSTR) 61
pvStructInfo 参数是指向CMC_STATUS_INFO结构的指针。
szOID_SUBJECT_ALT_NAME
"2.5.29.7"
pvStructInfo 参数是指向CERT_ALT_NAME_INFO结构的指针。 有关详细信息,请参阅“备注”。
szOID_SUBJECT_ALT_NAME2
"2.5.29.17"
pvStructInfo 参数是指向CERT_ALT_NAME_INFO结构的指针。
szOID_SUBJECT_KEY_IDENTIFIER
"2.5.29.14"
pvStructInfo 参数是指向CRYPT_DATA_BLOB结构的指针。 有关详细信息,请参阅“备注”。
PKCS_TIME_REQUEST
(LPCSTR) 18
pvStructInfo 参数是指向CRYPT_TIME_STAMP_REQUEST_INFO结构的指针。
X509_UNICODE_ANY_STRING
X509_UNICODE_NAME_VALUE
pvStructInfo 参数是指向CERT_NAME_VALUE结构的指针。 有关详细信息,请参阅“备注”。
X509_UNICODE_NAME
(LPCSTR) 20
pvStructInfo 参数是指向CERT_NAME_INFO结构的指针。 有关详细信息,请参阅“备注”。
X509_UNICODE_NAME_VALUE
(LPCSTR) 24
pvStructInfo 参数是指向CERT_NAME_VALUE结构的指针。 有关详细信息,请参阅“备注”。
PKCS_UTC_TIME
(LPCSTR) 17
pvStructInfo 参数是指向 FILETIME 变量的指针。 有关详细信息,请参阅“备注”。
OCSP_SIGNED_REQUEST
(LPCSTR) 65
pvStructInfo 参数是指向OCSP_SIGNED_REQUEST_INFO变量的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
OCSP_REQUEST
(LPCSTR) 66
pvStructInfo 参数是指向OCSP_REQUEST_INFO变量的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
OCSP_RESPONSE
(LPCSTR) 67
pvStructInfo 参数是指向OCSP_RESPONSE_INFO变量的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
OCSP_BASIC_SIGNED_RESPONSE
(LPCSTR) 68
pvStructInfo 参数是指向OCSP_BASIC_SIGNED_RESPONSE_INFO变量的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
OCSP_BASIC_RESPONSE
(LPCSTR) 69
pvStructInfo 参数是指向OCSP_BASIC_RESPONSE_INFO变量的指针。
Windows Server 2003 和 Windows XP: 不支持此值。
PKCS_RSA_PRIVATE_KEY
(LPCSTR) 43
pvStructInfo 参数是指向 RSA 私钥 BLOB 的指针。 有关详细信息,请参阅 Diffie-Hellman 版本 3 私钥 BLOBDSS 版本 3 私钥 BLOB
PKCS_PRIVATE_KEY_INFO
(LPCSTR) 44
pvStructInfo 参数是指向CRYPT_PRIVATE_KEY_INFO结构的指针。
PKCS_ENCRYPTED_PRIVATE_KEY_INFO
(LPCSTR) 45
pvStructInfo 参数是指向CRYPT_ENCRYPTED_PRIVATE_KEY_INFO结构的指针。

备注

下表提供了有关特定 lpszStructType 值的更多详细信息。

说明
X509_ALTERNATE_NAMEszOID_ISSUER_ALT_NAME
szOID_SUBJECT_ALT_NAME
在编码之前, LPWSTR 名称选项将转换为 IA5 字符串。 如果字符串包含无效的 IA5 字符串, 则 GetLastError 将返回CRYPT_E_INVALID_IA5_STRING,并且 *印刷板Encoded 将更新为无效字符的错误位置。 错误位置索引在 *pcbEncoded 中返回,如下所示:
位 0 是 DWORD 的最小有效位。
错误的VALUE_INDEX位于 0 到 15 位。 这是 Unicode 字符索引。
错误的ENTRY_INDEX位于位 16 到 23 位。
定义GET_CERT_ALT_NAME_VALUE_ERR_INDEX (X) 和 GET_CERT_ALT_NAME_ENTRY_ERR_INDEX (X) 的宏,以便从包含它们的 DWORD 轻松读取位图字段VALUE_INDEX和ENTRY_INDEX:
szOID_SUBJECT_ALT_NAME已被szOID_SUBJECT_ALT_NAME2取代。 新的证书服务器正在实现后者。
X509_AUTHORITY_INFO_ACCESS szOID_AUTHORITY_INFO_ACCESS
szOID_AUTHORITY_KEY_IDENTIFIER2
X509_AUTHORITY_KEY_ID2
如果编码函数以 GetLastError 的形式返回CRYPT_E_INVALID_IA5_STRING,则 *ENTRY_INDEX encoded 中返回的错误位置包括:ENTRY_INDEX – 8 位 << 16
VALUE_INDEX – 16 位 (Unicode 字符索引)
错误位置索引在 *pcbEncoded 中返回,如下所示:
位 0 是 DWORD 的最小有效位。
错误的VALUE_INDEX位于 0 到 15 位。 这是 Unicode 字符索引。
错误的ENTRY_INDEX位于位 16 到 23 位。
定义 X) 和 GET_CERT_ALT_NAME_ENTRY_ERR_INDEX (X) GET_CERT_ALT_NAME_VALUE_ERR_INDEX (宏,以便从包含这些字段的 DWORD 轻松读取位图字段的VALUE_INDEX和ENTRY_INDEX。
X509_AUTHORITY_KEY_IDszOID_AUTHORITY_KEY_IDENTIFIER
X509_AUTHORITY_KEY_ID已被X509_AUTHORITY_KEY_ID2取代。 新的证书服务器正在实现后者。
X509_BASIC_CONSTRAINTSszOID_BASIC_CONSTRAINTS
X509_BASIC_CONSTRAINTS已被X509_BASIC_CONSTRAINTS2取代。 新的证书服务器正在实现后者。
X509_CERT CERT_SIGNED_CONTENT_INFO 结构包含要签名的编码内容、其签名和签名算法。 ToBeSigned 成员是以下 lpszStructType 值之一之前调用 CryptEncodeObject 的编码CERT_INFO、CRL_INFO、CERT_REQUEST_INFO或CERT_KEYGEN_REQUEST_INFO输出:
  • X509_CERT_CRL_TO_BE_SIGNED
  • X509_CERT_REQUEST_TO_BE_SIGNED
  • X509_CERT_TO_BE_SIGNED
  • X509_KEYGEN_REQUEST_TO_BE_SIGNED
szOID_CERT_EXTENSIONS 可用于 证书请求中的属性类型之一。
X509_CHOICE_OF_TIME 对于X509_ASN_ENCODING,如果时间在 1950 年之后和 2050 年之前,则 UTC 时间编码为两位数年份。 否则,它是用四位数年份编码的通用时间,日期精确到秒。
PKCS_CONTENT_INFO 对于X509_ASN_ENCODING,编码为 PKCS #7 ContentInfo 结构。 CRYPT_DER_BLOB指向已编码的 ANY 内容。
PKCS_CONTENT_INFO_SEQUENCE_OF_ANY 对于X509_ASN_ENCODING,编码为包装 ANY 序列的 PKCS #7 ContentInfo 结构。 contentType 成员的值为 pszObjId,而内容字段为以下结构:SequenceOfAny ::= SEQUENCE OF ANY
CRYPT_DER_BLOB指向已编码的 ANY 内容。
X509_CRL_DIST_POINTSszOID_CRL_DIST_POINTS
如果编码函数 失败并返回 CRYPT_E_INVALID_IA5_STRING,*CRYPT_E_INVALID_IA5_STRING,则 *CRL_ISSUER_BIT Encoded 将更新为无效字符的错误位置:CRL_ISSUER_BIT – 1 位 << 31 (0 表示 FullName,1 表示 CRLIssuer)
POINT_INDEX – 7 位 << 24
ENTRY_INDEX – 16< 8 位<
VALUE_INDEX – 16 位 (Unicode 字符索引)
错误位置索引在 *pcbEncoded 中返回,如下所示:
位 0 是 DWORD 的最小有效位。
错误的VALUE_INDEX位于 0 到 15 位。 这是 Unicode 字符索引。
错误的ENTRY_INDEX位于位 16 到 23 位。
定义 X) 和 GET_CERT_ALT_NAME_ENTRY_ERR_INDEX (X) GET_CERT_ALT_NAME_VALUE_ERR_INDEX (宏,以便从包含这些字段的 DWORD 轻松读取位图字段的VALUE_INDEX和ENTRY_INDEX。
szOID_CRL_NUMBER 仅用于基本 证书吊销列表 (CRL) 。 这是证书颁发机构颁发的每个 CRL 的单调递增序列号。
X509_CRL_REASON_CODEszOID_CRL_REASON_CODE
X509_ENUMERATED
Integer 可以设置为以下枚举值之一。
原因代码:CRL_REASON_UNSPECIFIED
值:0
原因代码:CRL_REASON_KEY_COMPROMISE
值:1
原因代码:CRL_REASON_CA_COMPROMISE
值:2
原因代码:CRL_REASON_AFFILIATION_CHANGED
值:3
原因代码:CRL_REASON_SUPERSEDED
值:4
原因代码:CRL_REASON_CESSATION_OF_OPERATION
值:5
原因代码:CRL_REASON_CERTIFICATE_HOLD
值:6
原因代码:CRL_REASON_REMOVE_FROM_CRL
值:8
szOID_CRL_VIRTUAL_BASE 仅与增量 CRL 一起使用。 它包含相应基 CRL 的基 CRL 编号。
X509_CROSS_CERT_DIST_POINTSszOID_CROSS_CERT_DIST_POINTS
对于CRYPT_E_INVALID_IA5_STRING,错误位置在 * (X509_CRL_DIST_POINTS) 错误位置由 CryptEncodeObject 返回 (X509_CRL_DIST_POINTS) 错误位置包括:
  • POINT_INDEX – 8 位 << 24
  • ENTRY_INDEX – 16< 8 位<
  • VALUE_INDEX – 16 位 (Unicode 字符索引)
有关ENTRY_INDEX和VALUE_INDEX错误位置定义的常量的详细信息,请参阅 X509_ALTERNATE_NAME。
RSA_CSP_PUBLICKEYBLOB CryptExportKey 函数为 PUBLICKEYBLOBdwBlobType 输出上述 pvStructInfo 值。 导入公钥时 ,CryptImportKey 函数需要上述 pvStructInfo 值。 如果 dwCertEncodingType X509_ASN_ENCODING,则RSA_CSP_PUBLICKEYBLOB将编码为 PKCS #1 RSAPublicKey,其中包含模数 INTEGER 和 publicExponent INTEGER 的 SEQUENCE。 模数编码为无符号整数。
对于解码函数,pvStructInfo 指向紧跟 RSAPUBKEY 和模数字节的公钥 BLOB。 (有关公钥 BLOB 的信息,请参阅 CRYPT_INTEGER_BLOB.) CryptExportKey 输出 PUBLICKEYBLOB 的 dwBlobTypepvStructInfo 值。 CryptImportKey 函数在导入公钥时需要 pvStructInfo 值。
如果 dwCertEncodingType X509_ASN_ENCODING,则RSA_CSP_PUBLICKEYBLOB将编码为 PKCS #1 RSAPublicKey,其中包含模数 INTEGER 和 publicExponent INTEGER 的 SEQUENCE。 解码时,如果模数编码为前导 0 字节的无符号整数,则会在转换为 CSP 模数字节之前删除 0 字节。 由于 PKCS ) 结构始终设置为 CALG_RSA_KEYX。
szOID_DELTA_CRL_INDICATOR 仅与增量 CRL 一起使用。 这标记为关键,并包含可用于增量 CRL 的最小基 CRL 数。
X509_DSS_SIGNATURE 这些字节由 DSS CSP 的 CryptSignHash 作为输出进行排序,其中较低的 20 个字节是 R 值,较高的 20 个字节是 S 值。 R 和 S 值被视为无符号整数,并作为它们的序列进行编码。
X509_ECC_SIGNATURE 使用与 X509_DH_PARAMETERS 相同的编码和解码函数。 除字段名称外, CERT_ECC_SIGNATURE 结构与 CERT_DH_PARAMETERS 结构相同。
X509_ENUMERATED 在对任意枚举(如X509_CRL_REASON_CODE)进行编码时使用。
szOID_FRESHEST_CRL 仅与基本 CRL 一起使用。 其格式与 CDP 扩展的格式相同,该扩展包含用于提取增量 CRL 的 URL。
X509_ISSUING_DIST_POINTszOID_ISSUING_DIST_POINT
对于CRYPT_E_INVALID_IA5_STRING,错误位置由 CryptEncodeObject 返回 (X509_ISSUING_DIST_POINT) 错误位置包括:
  • ENTRY_INDEX – 16< 8 位<
  • VALUE_INDEX – 16 位 (Unicode 字符索引)
有关ENTRY_INDEX和VALUE_INDEX错误位置定义的常量的详细信息,请参阅 X509_ALTERNATE_NAME。
X509_KEY_USAGEszOID_KEY_USAGE
使用用于 CERT_KEY_ATTRIBUTES_INFO 结构的 IntendedKeyUsage 成员的位定义。
X509_KEYGEN_REQUEST_TO_BE_SIGNED 对于解码函数, pbEncoded 成员是使用 X509_CERT lpszStructType 的编码函数之一的输出。 此输出包括“待签名”数据及其签名。 对于编码函数, pbEncoded 成员只是“待签名”数据。
X509_MULTI_BYTE_UINT 编码之前,会插入前导0x00。 解码后,将删除前导0x00。
X509_NAME 用于解码/编码CERT_INFO结构中的颁发者和使用者成员。
X509_NAME_CONSTRAINTSszOID_NAME_CONSTRAINTS
对于CRYPT_E_INVALID_IA5_STRING,错误位置在 * (X509_NAME_CONSTRAINTS) 错误位置由 CryptEncodeObject 返回 (X509_NAME_CONSTRAINTS) 错误位置包括:
  • EXCLUDED_SUBTREE_BIT – 1 位 << 31 (0 对于允许,1 位用于排除)
  • ENTRY_INDEX – 16< 8 位<
  • VALUE_INDEX – 16 位 (Unicode 字符索引)
有关ENTRY_INDEX和VALUE_INDEX错误位置定义的常量的详细信息,请参阅 X509_ALTERNATE_NAME。
X509_UNICODE_ANY_STRING
X509_UNICODE_NAME_VALUE
对于编码函数,结构的 pbData 成员指向指向 Unicode 字符串。 如果 cbData 成员为零,则 Unicode 字符串具有终止 null 字符;否则, cbData 为 Unicode 字符串字节计数。 字节计数是字符计数的两倍。 如果 Unicode 字符串包含对指定的 dwValueType 无效的字符,则 *印刷板Encoded 将更新为第一个无效字符的 Unicode 字符索引。 GetLastError 返回:
CRYPT_E_INVALID_NUMERIC_STRING
CRYPT_E_INVALID_PRINTABLE_STRING
CRYPT_E_INVALID_IA5_STRING
Unicode 字符串在根据指定的 dwValueType 进行编码之前进行转换。 如果 dwValueType 设置为 0, 则 GetLastError 返回E_INVALIDARG。
如果 dwValueType 不指示字符串, CryptEncodeObject 返回 FALSEGetLastError 返回CRYPT_E_NOT_CHAR_STRING。
对于解码函数, pbData 成员指向 以 null 结尾的 Unicode 字符串, cbData 成员包含 Unicode 字符串的字节计数(不包括终止 null 字符)。 dwValueType 包含用于对对象进行编码的类型。 它不是被迫CERT_RDN_UNICODE_STRING。 编码的值根据 dwValueType 转换为 Unicode 字符串。
如果编码的对象不是字符串类型之一,则解码函数返回 FALSEGetLastError 返回CRYPT_E_NOT_CHAR_STRING。
使用 X509_ANY_STRING 的 lpszStructType 解码非字符字符串。
szOID_NEXT_UPDATE_LOCATION 证书信任列表 (CTL) 一起使用,以获取最近有效的 CTL 位置。 通常,CERT_ALT_NAME_INFO中使用的选项是指示位置的 URL。
X509_OCTET_STRING 结构包含字节序列。 它与一些需要八进制字符串形式的 初始化向量的 加密算法一起使用。
CNG_RSA_PUBLIC_KEY_BLOB 相应的 pvStructInfo 指向紧跟指数和模数字节的BCRYPT_RSAKEY_BLOB。 指数和模数都采用大端格式。 由 cbPrime1cbPrime2 组成的私钥字段设置为零。
如果 dwCertEncodingType 参数等于 X509_ASN_ENCODING,则将 CNG_RSA_PUBLIC_KEY_BLOB 编码为 PKCS #1 RSA 公钥,该公钥由一系列模数和一个 publicExponent 组成。
PKCS_RSA_SSA_PSS_PARAMETERSszOID_RSA_SSA_PSS
对于编码,如果 CRYPT_RSA_SSA_PSS_PARAMETERS 结构字段设置为 NULL 或零,请使用以下默认值。
字段:HashAlgorithm.pszObjId
默认值:szOID_OIWSEC_sha1
字段:MaskGenAlgorithm.pszObjId
默认值:szOID_RSA_MGF1
字段:MaskGenAlgorithm.HashAlgorithm.pszObjId
默认值:HashAlgorithm.pszObjId
字段:dwSaltLength
默认值:cbHash
字段:dwTrailerField
默认值:PKCS_RSA_SSA_PSS_TRAILER_FIELD_BC
对于编码,只需设置 HashAlgorithm.pszObjId 字段。 对于解码,所有字段都是显式设置的。
PKCS_RSAES_OAEP_PARAMETERSszOID_RSAES_OAEP
对于编码,如果 CRYPT_RSAES_OAEP_PARAMETERS 结构字段设置为 NULL 或零,请使用以下默认值。
字段:HashAlgorithm.pszObjId
默认值:szOID_OIWSEC_sha1
字段:MaskGenAlgorithm.pszObjId
默认值:szOID_RSA_MGF1
字段:MaskGenAlgorithm.HashAlgorithm.pszObjId
默认值:HashAlgorithm.pszObjId
字段:PSourceAlgorithm.pszObjId
默认值:szOID_RSA_PSPECIFIED
字段:PSourceAlgorithm.EncodingParameters.cbData
默认值:0
字段:PSourceAlgorithm.EncodingParameters.pbData
默认值: NULL
对于编码,只需设置 HashAlgorithm.pszObjId 字段。 对于解码,将显式设置所有字段。
X509_SEQUENCE_OF_ANY CRYPT_DER_BLOB指向已编码的 ANY 内容。
PKCS_SMIME_CAPABILITIESszOID_RSA_SMIMECapabilities
这些 lpszStructType 值对于编码函数的工作方式不同。 由于 安全/多用途 Internet 邮件扩展 (S/MIME) 规范,如果 Parameters.cbData 为零,则省略编码的参数,并且不编码为 NULL (05 00) 。
szOID_SUBJECT_KEY_IDENTIFIER CRYPT_INTEGER_BLOB 结构包含一个八进制字符串(任意字节序列)。
X509_UNICODE_NAME 对于解码函数,RDN) 属性值 (相对可分辨名称Unicode 字符串,但CERT_RDN_ENCODED_BLOB或CERT_RDN_OCTET_STRING的 dwValueType除外。 这些 dwValueType与X509_NAME相同。 这些值不会转换为 Unicode。 RDN 属性值的 pbData 成员指向以 null 结尾的 Unicode 字符串。 RDN 属性值的 cbData 成员包含 Unicode 字符串的字节计数(不包括终止 null 字符)。 RDN 属性值的 dwValueType 成员包含编码对象中使用的类型。 它不是被迫CERT_RDN_UNICODE_STRING。 编码的值根据 dwValueType 转换为 Unicode 字符串。
对于编码函数,RDN 属性值是 Unicode 字符串,CERT_RDN_ENCODED_BLOB 或 CERT_RDN_OCTET_STRING 的 dwValueType除外。 这些 dwValueType与X509_NAME相同。 这些值不应为 Unicode。
对于剩余字符串 dwValueType相对可分辨名称 (RDN) 属性值的 pbData 成员指向 Unicode 字符串。 如果 RDN 属性值的 cbData 成员为零,则 Unicode 字符串具有终止 null 字符。 否则,RDN 属性值的 cbData 成员是 Unicode 字符串字节计数。 字节计数是字符计数的两倍,它排除了终止 null 字符。
如果 RDN 属性值的 dwValueType 成员CERT_RDN_ANY_TYPE,则 pszObjId 用于查找可接受的 dwValueType。 如果 Unicode 字符串包含的字符对找到的或指定的 dwValueType 无效,则 * 有无效字符的错误位置更新 * 对于无效字符, GetLastError 返回:
CRYPT_E_INVALID_NUMERIC_STRING
CRYPT_E_INVALID_PRINTABLE_STRING
CRYPT_E_INVALID_IA5_STRING
Unicode 字符串在根据指定的 dwValueType 或对象标识符的 dwValueType 进行编码之前进行转换。
编码函数错误位置索引在 *pcbEncoded 中返回,如下所示:
错误的VALUE_INDEX位于 0 到 15 位。
错误的ATTR_INDEX位于位 16 到 21 位。
错误的RDN_INDEX位于位 22 到 31。
位 0 是 DWORD 的最小有效位。
GET_CERT_UNICODE_RDN_ERR_INDEX (X) 、GET_CERT_UNICODE_ATTR_ERR_INDEX (X) 和 GET_CERT_UNICODE_VALUE_ERR_INDEX (X) 定义的宏提供从包含它们的 DWORD 中轻松读取位图字段VALUE_INDEX、ATTR_INDEX和RDN_INDEX。
PKCS_UTC_TIMEszOID_RSA_signingTime
对于X509_ASN_ENCODING,UTC 时间精确编码为秒,并使用两位数年份。

 

要求

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

另请参阅

CRYPT_INTEGER_BLOB