CryptEncodeObject 和 CryptDecodeObject 的常數
CryptEncodeObject、CryptEncodeObjectEx、 CryptSignAndEncodeCertificate、CryptDecodeObject和CryptDecodeObjectEx函式是一般化編碼和解碼函式,能夠編碼和解碼抽象語法標記法一 (ASN.1) 編碼憑證、憑證撤銷清單 (CRL) 、憑證信任清單 (CTL) 和憑證要求。
下表列出用於編碼和解碼作業的預先定義常數、延伸模組和屬性,以及 pvStructInfo 參數所指向的資料結構。
注意
某些預先定義的常數和 OID 字串具有相同的意義。 當它們執行時,這兩者都可以當做 lpszStuctType 參數使用。
常數/值 | Description |
---|---|
|
pvStructInfo參數是CMC_ADD_ATTRIBUTES_INFO結構的指標。 |
|
pvStructInfo參數是CMC_ADD_EXTENSIONS_INFO結構的指標。 |
|
pvStructInfo參數是CRYPT_ALGORITHM_IDENTIFIER結構的指標。 |
|
pvStructInfo參數是CERT_ALT_NAME_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_NAME_VALUE結構的指標。 |
|
pvStructInfo參數是CERT_POLICY_QUALIFIER_INFO結構的指標。 |
|
pvStructInfo參數是CERT_POLICY_CONSTRAINTS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_POLICY_MAPPINGS_INFO結構的指標。 |
|
pvStructInfo參數是CRYPT_ATTRIBUTE結構的指標。 |
|
pvStructInfo參數是CERT_AUTHORITY_INFO_ACCESS結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_AUTHORITY_INFO_ACCESS結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_AUTHORITY_INFO_ACCESS結構的指標。 |
|
pvStructInfo參數是CERT_AUTHORITY_INFO_ACCESS結構的指標。 |
|
pvStructInfo參數是CERT_AUTHORITY_KEY_ID_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_AUTHORITY_KEY_ID2_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_AUTHORITY_KEY_ID_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_AUTHORITY_KEY_ID2_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_BASIC_CONSTRAINTS_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_BASIC_CONSTRAINTS_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_BASIC_CONSTRAINTS2_INFO結構的指標。 |
|
pvStructInfo參數是CERT_BASIC_CONSTRAINTS2_INFO結構的指標。 |
|
pvStructInfo參數是CERT_BIOMETRIC_EXT_INFO結構的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是CERT_BIOMETRIC_EXT_INFO結構的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是CRYPT_BIT_BLOB結構的指標。 |
|
pvStructInfo參數是CERT_SIGNED_CONTENT_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRL_INFO結構的指標。 |
|
pvStructInfo參數是CERT_EXTENSIONS結構的指標。 |
|
pvStructInfo參數是CERT_PAIR結構的指標。 |
|
pvStructInfo參數是CERT_POLICIES_INFO結構的指標。 |
|
pvStructInfo參數是CERT_POLICIES_INFO結構的指標。 |
|
pvStructInfo參數是CERT_REQUEST_INFO結構的指標。 |
|
pvStructInfo參數是CERT_INFO結構的指標。 |
|
pvStructInfo參數是CERT_TEMPLATE_EXT結構的指標。 |
|
pvStructInfo參數是CERT_TEMPLATE_EXT結構的指標。 |
|
pvStructInfo參數是FILETIME變數的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRYPT_CONTENT_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRL_DIST_POINTS_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRL_DIST_POINTS_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是int變數的指標。 |
|
pvStructInfo參數是包含列舉值的整數指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是包含列舉值的整數指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是int變數的指標。 |
|
pvStructInfo參數是CROSS_CERT_DIST_POINTS_INFO結構的指標。 |
|
pvStructInfo參數是CROSS_CERT_DIST_POINTS_INFO結構的指標。 |
|
pvStructInfo參數是Diffie-Hellman 第 3 版公開金鑰 BLOB或DSS 第 3 版公開金鑰 BLOB結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CTL_INFO結構的指標。 |
|
pvStructInfo參數是CMC_DATA_INFO結構的指標。 |
|
pvStructInfo參數是int變數的指標。 |
|
pvStructInfo參數是CERT_DSS_PARAMETERS結構的指標。 |
|
pvStructInfo參數是CRYPT_UINT_BLOB結構的指標。 |
|
pvStructInfo參數是 40 個位元組陣列的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是物件識別碼點標記法之 LPSTR的指標。 |
|
pvStructInfo參數是CERT_ECC_SIGNATURE結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRYPT_ECC_PRI加值稅E_KEY_INFO結構的指標。 Windows Server 2003、Windows XP、Windows 2000 和 Windows Vista: 不支援此值。 |
|
pvStructInfo參數是CRYPT_ALGORITHM_IDENTIFIER結構的指標。 |
|
pvStructInfo參數是CERT_ENHKEY_USAGE或CTL_USAGE結構的指標。 (這些結構相同,但由不同的名稱已知。) |
|
pvStructInfo參數是CERT_ENHKEY_USAGE或CTL_USAGE結構的指標。 (這些結構相同,但由不同的名稱已知。) |
|
pvStructInfo參數是CRYPT_ENROLLMENT_NAME_VALUE_PAIR結構的指標。 |
|
pvStructInfo參數是包含列舉值的整數指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_EXTENSIONS結構的指標。 |
|
pvStructInfo參數是CRL_DIST_POINTS_INFO結構的指標。 |
|
pvStructInfo參數是 32 位或更少帶正負號整數的指標。 |
|
pvStructInfo參數是CERT_ALT_NAME_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_ALT_NAME_INFO結構的指標。 |
|
pvStructInfo參數是CRL_ISSUING_DIST_POINT結構的指標。 |
|
pvStructInfo參數是CRL_ISSUING_DIST_POINT結構的指標。 |
|
pvStructInfo參數是CERT_KEY_ATTRIBUTES_INFO結構的指標。 |
|
pvStructInfo參數是CERT_KEY_ATTRIBUTES_INFO結構的指標。 |
|
pvStructInfo參數是CRYPT_BIT_BLOB結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRYPT_BIT_BLOB結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_KEY_USAGE_RESTRICTION_INFO結構的指標。 |
|
pvStructInfo參數是CERT_KEY_USAGE_RESTRICTION_INFO結構的指標。 |
|
pvStructInfo參數是CERT_KEYGEN_REQUEST_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_LOGOTYPE_EXT_INFO結構的指標。 |
|
pvStructInfo參數是CERT_LOGOTYPE_EXT_INFO結構的指標。 Windows Server 2003 和 Windows XP: 不支援此值。 |
|
pvStructInfo參數是CRYPT_INTEGER_BLOB結構的指標。
BLOB依小到大的順序。 |
|
pvStructInfo參數是CRYPT_UINT_BLOB結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_NAME_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_NAME_CONSTRAINTS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_NAME_CONSTRAINTS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_NAME_VALUE結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_ALT_NAME_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是物件識別碼點標記法之 LPSTR的指標。 Windows Server 2003 和 Windows XP: 不支援此值。 |
|
pvStructInfo參數是CRYPT_DATA_BLOB結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_DSS_PARAMETERS結構的指標。 |
|
pvStructInfo參數是CERT_POLICY_CONSTRAINTS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_POLICY_CONSTRAINTS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_POLICY_MAPPINGS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_POLICY_MAPPINGS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_PUBLIC_KEY_INFO結構的指標。 |
|
pvStructInfo參數是CRYPT_RC2_CBC_PARAMETERS結構的指標。 |
|
pvStructInfo參數是CMC_RESPONSE_INFO結構的指標。 |
|
pvStructInfo參數是BCRYPT_RSAKEY_BLOB的指標,緊接著指數和模數位節。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是私人BCRYPT_RSAKEY_BLOB結構的指標。 Windows Server 2003、Windows XP、Windows 2000 和 Windows Vista: 不支援這個值。 |
|
pvStructInfo參數是FILETIME變數的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRYPT_SMIME_CAPABILITIES結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRYPT_RSA_SSA_PSS_PARAMETERS結構的指標。 如需詳細資料,請參閱<備註>。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是CRYPT_RSA_SSA_PSS_PARAMETERS結構的指標。 如需詳細資料,請參閱<備註>。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是CRYPT_RSAES_OAEP_PARAMETERS結構的指標。 如需詳細資料,請參閱<備註>。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是CRYPT_ECC_CMS_SHARED_INFO結構的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是CRYPT_RSAES_OAEP_PARAMETERS結構的指標。 如需詳細資料,請參閱<備註>。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是CRYPT_SEQUENCE_OF_ANY結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CMSG_SIGNER_INFO結構的指標。 |
|
pvStructInfo參數是CMSG_CMS_SIGNER_INFO結構的指標。 |
|
pvStructInfo參數是CRYPT_SMIME_CAPABILITIES結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CMC_STATUS_INFO結構的指標。 |
|
pvStructInfo參數是CERT_ALT_NAME_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_ALT_NAME_INFO結構的指標。 |
|
pvStructInfo參數是CRYPT_DATA_BLOB結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CRYPT_TIME_STAMP_REQUEST_INFO結構的指標。 |
|
pvStructInfo參數是CERT_NAME_VALUE結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_NAME_INFO結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是CERT_NAME_VALUE結構的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是FILETIME變數的指標。 如需詳細資料,請參閱<備註>。 |
|
pvStructInfo參數是OCSP_SIGNED_REQUEST_INFO變數的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是OCSP_REQUEST_INFO變數的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是OCSP_RESPONSE_INFO變數的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是OCSP_BASIC_SIGNED_RESPONSE_INFO變數的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是OCSP_BASIC_RESPONSE_INFO變數的指標。 Windows Server 2003 和 Windows XP: 不支援這個值。 |
|
pvStructInfo參數是 RSA 私密金鑰 BLOB 的指標。 如需詳細資訊,請參閱 Diffie-Hellman 第 3 版私密金鑰 BLOB 和 DSS 第 3 版私密金鑰 BLOB。 |
|
pvStructInfo參數是CRYPT_PRI加值稅E_KEY_INFO結構的指標。 |
|
pvStructInfo參數是CRYPT_ENCRYPTED_PRI加值稅E_KEY_INFO結構的指標。 |
備註
下表提供特定 lpszStructType 值的進一步詳細資料。
值 | Description |
---|---|
X509_ALTERNATE_NAMEszOID_ISSUER_ALT_NAME szOID_SUBJECT_ALT_NAME |
編碼之前, LPWSTR 名稱選項會轉換成 IA5 字串。 如果字串包含不正確 IA5 字串, GetLastError 會傳回CRYPT_E_INVALID_IA5_STRING,而 *azureEncoded 會更新為無效字元的錯誤位置。 錯誤位置索引會以 *azureEncoded 傳回,如下所示: 位 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_NAME2已取代szOID_SUBJECT_ALT_NAME。 新的憑證服務器正在實作後者。 |
X509_AUTHORITY_INFO_ACCESS szOID_AUTHORITY_INFO_ACCESS szOID_AUTHORITY_KEY_IDENTIFIER2 X509_AUTHORITY_KEY_ID2 |
如果編碼函式以 GetLastError傳回CRYPT_E_INVALID_IA5_STRING,則 *ENTRY_INDEX – 8 位< 16 中傳回的錯誤位置包含: ENTRY_INDEX – 8 位 << 16 VALUE_INDEX – 16 位 (Unicode 字元索引) 錯誤位置索引會以 *azureEncoded 傳回,如下所示: 位 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點陣圖欄位。 |
X509_AUTHORITY_KEY_IDszOID_AUTHORITY_KEY_IDENTIFIER |
X509_AUTHORITY_KEY_ID2已取代X509_AUTHORITY_KEY_ID。 新的憑證服務器正在實作後者。 |
X509_BASIC_CONSTRAINTSszOID_BASIC_CONSTRAINTS |
X509_BASIC_CONSTRAINTS2已取代X509_BASIC_CONSTRAINTS。 新的憑證服務器正在實作後者。 |
X509_CERT |
CERT_SIGNED_CONTENT_INFO結構包含要簽署的編碼內容、其簽章和簽章演算法。
ToBeSigned成員是先前對CryptEncodeObject呼叫的編碼CERT_INFO、CRL_INFO、CERT_REQUEST_INFO或CERT_KEYGEN_REQUEST_INFO輸出,適用于下列其中一個lpszStructType值:
|
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,編碼為 PKCS #7 ContentInfo 結構包裝 ANY 序列。
contentType成員的值是pszObjId,而內容欄位是下列結構:SequenceOfAny ::= SEQUENCE OF ANY CRYPT_DER_BLOB指向已編碼的 ANY 內容。 |
X509_CRL_DIST_POINTSszOID_CRL_DIST_POINTS |
如果編碼函式因傳回 CRYPT_E_INVALID_IA5_STRING 的 GetLastError 而失敗,則會以無效字元的錯誤位置更新 *CRL_ISSUER_BIT – 1 位 << 31 (0 表示 FullName,1 則為 CRLIssuer) POINT_INDEX – 7 位 << 24 ENTRY_INDEX – 8 位 << 16 VALUE_INDEX – 16 位 (Unicode 字元索引) 錯誤位置索引會以 *azureEncoded 傳回,如下所示: 位 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_CRL_NUMBER | 僅 (CRL) 搭配基底 憑證撤銷清單 使用。 這是憑證授權單位 單位所發行之每個 CRL 的單一遞增序號。 |
X509_CRL_REASON_CODEszOID_CRL_REASON_CODE X509_ENUMERATED |
Integer 可以設定為下列其中一個列舉值。
|
szOID_CRL_VIRTUAL_BASE | 僅與 Delta CRL 搭配使用。 它包含對應基底 CRL 的基底 CRL 編號。 |
X509_CROSS_CERT_DIST_POINTSszOID_CROSS_CERT_DIST_POINTS |
針對CRYPT_E_INVALID_IA5_STRING,錯誤位置會由CryptEncodeObject (X509_CRL_DIST_POINTS) 錯誤位置所傳回的 * (X509_CRL_DIST_POINTS) 錯誤位置包含:
|
RSA_CSP_PUBLICKEYBLOB |
CryptExportKey函式會針對PUBLICKEYBLOB 的 dwBlobType輸出上述pvStructInfo值。
CryptImportKey函式在匯入公開金鑰時,預期會有上述pvStructInfo值。 如果 dwCertEncodingType X509_ASN_ENCODING,則RSA_CSP_PUBLICKEYBLOB會編碼為 PKCS #1 RSAPublicKey,其中包含模數 INTEGER 和 publicExponent INTEGER 的 SEQUENCE。 模數會編碼為不帶正負號的整數。 針對解碼函式, pvStructInfo 會立即指向 公開金鑰 BLOB ,後面接著 RSAPUBKEY 和模數位節。 (如需公開金鑰 BLOB 的相關資訊,請參閱CRYPT_INTEGER_BLOB.) CryptExportKey會輸出dwBlobType of PUBLICKEYBLOB的pvStructInfo值。 CryptImportKey函式會在匯入公開金鑰時預期pvStructInfo值。 如果 dwCertEncodingType X509_ASN_ENCODING,則RSA_CSP_PUBLICKEYBLOB會編碼為 PKCS #1 RSAPublicKey,其中包含模數 INTEGER 和 publicExponent INTEGER 的 SEQUENCE。 解碼時,如果模數編碼為具有前置 0 位元組的不帶正負號整數,則會先移除 0 位元組,然後再轉換為 CSP 模數位節。 因為 PKCS ) 結構一律設定為 CALG_RSA_KEYX。 |
szOID_DELTA_CRL_INDICATOR | 僅與 Delta 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 使用。 這的格式與保存 URL 的 CDP 延伸模組相同,以擷取差異 CRL。 |
X509_ISSUING_DIST_POINTszOID_ISSUING_DIST_POINT |
針對CRYPT_E_INVALID_IA5_STRING,錯誤位置會由CryptEncodeObject (X509_ISSUING_DIST_POINT) 錯誤位置所傳回的 * (X509_ISSUING_DIST_POINT) 錯誤位置包含:
|
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,CryptEncodeObject所傳回的錯誤位置會由CryptEncodeObject (X509_NAME_CONSTRAINTS) 錯誤位置包含:
|
X509_UNICODE_ANY_STRING X509_UNICODE_NAME_VALUE |
針對編碼函式,指向 Unicode 字串之 結構的 pbData 成員。 如果 cbData 成員為零,Unicode 字串就會有終止 的 Null 字元;否則, cbData 是 Unicode 字串位元組計數。 位元組計數是字元計數的兩倍。 如果 Unicode 字串包含對指定 dwValueType不正確字元,則會使用無效之第一個字元的 Unicode 字元索引來更新 *azureEncoded 。
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會以傳回CRYPT_E_NOT_CHAR_STRING的 GetLastError傳回FALSE。 針對解碼函式, pbData 成員會指向 Null終止的 Unicode 字串, 而 cbData 成員包含 Unicode 字串的位元組計數,但不包括終止 Null 字元。 dwValueType 包含用來編碼物件的類型。 它不會強制CERT_RDN_UNICODE_STRING。 編碼的值會根據 dwValueType轉換成 Unicode 字串。 如果編碼的物件不是其中一個字元字串類型,解碼函式會傳回 FALSE ,並傳回CRYPT_E_NOT_CHAR_STRING的 GetLastError 。 使用 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。 指數和模數都是以大到小的格式。
由 cbPrime1和cbPrime2組成的私密金鑰欄位會設定為零。 如果 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 或零,請使用下列預設值。
|
PKCS_RSAES_OAEP_PARAMETERSszOID_RSAES_OAEP |
針對編碼,如果 CRYPT_RSAES_OAEP_PARAMETERS 結構欄位設定為 Null 或零,請使用下列預設值。
|
X509_SEQUENCE_OF_ANY | CRYPT_DER_BLOB指向已編碼的 ANY 內容。 |
PKCS_SMIME_CAPABILITIESszOID_RSA_SMIMECapabilities |
這些 lpszStructType 值對於編碼函式的運作方式不同。 由於 Secure/Multipurpose Internet Mail Extensions (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 的 dwValueTypes 之外。 這些 dwValueTypes 與 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 的 dwValueTypes 之外。 這些 dwValueTypes 與 X509_NAME 相同。 這些值不預期為 Unicode。 對於其餘字串 dwValueTypes, 相對辨別名稱 (RDN) 屬性值的 pbData 成員指向 Unicode 字串。 如果 RDN 屬性值的 cbData 成員為零,Unicode 字串就會有終止 的 Null 字元。 否則,RDN 屬性值的 cbData 成員是 Unicode 字串位元組計數。 位元組計數是字元計數的兩倍,而且會排除終止 的 Null 字元。 如果 RDN 屬性值的 dwValueType 成員是CERT_RDN_ANY_TYPE, 則會使用 pszObjId 來尋找可接受的 dwValueType。 如果 Unicode 字串包含對找到或指定的 dwValueType不正確字元,則會以無效字元的錯誤位置來更新 *textEncoded 。 對於不正確字元, GetLastError 會傳回: CRYPT_E_INVALID_NUMERIC_STRING CRYPT_E_INVALID_PRINTABLE_STRING CRYPT_E_INVALID_IA5_STRING Unicode 字串會先轉換,再根據指定的 dwValueType 或物件識別碼的 dwValueType進行編碼。 編碼函式錯誤位置索引會以 *HTTPEncoded 傳回,如下所示: 錯誤的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) 定義的宏,可讓您從包含這些VALUE_INDEX、ATTR_INDEX和 RDN_INDEX的 DWORD 輕鬆讀取點陣圖欄位。 |
PKCS_UTC_TIMEszOID_RSA_signingTime |
針對X509_ASN_ENCODING,UTC 時間會精確編碼為秒,並使用兩位數年份。 |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 |
Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
標頭 |
|
另請參閱