CryptFormatObject 函式 (wincrypt.h)

CryptFormatObject 函式會格式化編碼的數據,並根據憑證編碼類型傳回配置緩衝區中的 Unicode 字串。

語法

BOOL CryptFormatObject(
  [in]      DWORD      dwCertEncodingType,
  [in]      DWORD      dwFormatType,
  [in]      DWORD      dwFormatStrType,
  [in]      void       *pFormatStruct,
  [in]      LPCSTR     lpszStructType,
  [in]      const BYTE *pbEncoded,
  [in]      DWORD      cbEncoded,
  [out]     void       *pbFormat,
  [in, out] DWORD      *pcbFormat
);

參數

[in] dwCertEncodingType

憑證上所使用的編碼類型。 目前使用的憑證編碼類型X509_ASN_ENCODING。

[in] dwFormatType

格式化類型值。 未使用。 設定為零。

[in] dwFormatStrType

結構格式類型值。 此參數可以是零,或者您可以使用 bitwise-OR 運算符來合併它們,來指定下列一或多個旗標。

意義
0
以單行顯示數據。 每個子欄位都會與逗號串連 (,) 。 如需詳細資訊,請參閱<備註>。
CRYPT_FORMAT_STR_MULTI_LINE
0x0001
以多行顯示數據,而不是在預設) (單行顯示數據。 如需詳細資訊,請參閱<備註>。
CRYPT_FORMAT_STR_NO_HEX
0x0010
停用十六進位傾印。 如需詳細資訊,請參閱<備註>。

[in] pFormatStruct

結構格式的指標。 未使用。 設定為 NULL

[in] lpszStructType

定義編碼數據的 OID 指標。 如果 lpszStructType 參數的高序單字為零,則低順序字組會指定指定指定結構類型的整數標識碼。 否則,此參數是 Null 終止字串的長指標。

下表列出支援的 OID 擴充功能及其相關聯的 OID 擴充功能。

意義
SPC_FINANCIAL_CRITERIA_OBJID
1.3.6.1.4.1.311.2.1.27
SPC_SP_AGENCY_INFO_OBJID
1.3.6.1.4.1.311.2.1.10
szOID_AUTHORITY_INFO_ACCESS
1.3.6.1.5.5.7.1.1
szOID_AUTHORITY_KEY_IDENTIFIER2
2.5.29.35
szOID_BASIC_CONSTRAINTS2
2.5.29.19
szOID_CERT_POLICIES
2.5.29.32
szOID_CRL_DIST_POINTS
2.5.29.31
szOID_CRL_REASON_CODE
2.5.29.21
szOID_ENHANCED_KEY_USAGE
2.5.29.37
szOID_ISSUER_ALT_NAME2
2.5.29.18
szOID_KEY_ATTRIBUTES
2.5.29.2
szOID_KEY_USAGE
2.5.29.15
szOID_KEY_USAGE_RESTRICTION
2.5.29.4
szOID_NEXT_UPDATE_LOCATION
1.3.6.1.4.1.311.10.2
szOID_RSA_SMIMECapabilities
1.2.840.113549.1.9.15
szOID_SUBJECT_ALT_NAME2
2.5.29.17
szOID_SUBJECT_KEY_IDENTIFIER
2.5.29.14

[in] pbEncoded

要格式化之編碼數據的指標。 如果 lpszStructType 是上面所列的其中一個 OID, 則 pbEncoded 是編碼的延伸模組。

[in] cbEncoded

pbEncoded 結構的大小,以位元組為單位。

[out] pbFormat

接收格式化字串之緩衝區的指標。 當指定的緩衝區不夠大而無法接收譯碼的結構時,函式會設定ERROR_MORE_DATA,並將所需的緩衝區大小以位元組為單位儲存到 由at 指向的變數中。 此參數可以是 NULL ,可設定此資訊的大小以供記憶體配置之用。 如需詳細資訊,請參閱 擷取未知長度的數據

[in, out] pcbFormat

變數的指標,指定 pbFormat 參數所指向緩衝區的大小,以位元組為單位。 當函式傳回時, 由 HTTPFormat 參數指向的變數會包含儲存在緩衝區中的位元元組數目。 只有當 pbFormatNULL 時,此參數才能是 NULL

注意 處理緩衝區中傳回的數據時,應用程式必須使用傳回之數據的實際大小。 實際大小可能會稍微小於輸入中指定的緩衝區大小。 (輸入時,緩衝區大小通常會指定夠大,以確保最大可能的輸出數據會放入 buffer。) On 輸出中,此參數所指向的變數會更新,以反映複製到緩衝區的實際數據大小。
 

傳回值

如果函式成功,則傳回值為 TRUE。 如果失敗,則傳回值為 FALSE。 若要擷取擴充的錯誤資訊,請使用 GetLastError 函 式。

備註

此函式的預設行為是傳回編碼數據的單行顯示,也就是說,每個子字段都會與一行上的逗號 (,) 串連。 如果您想要以多行顯示數據,請設定 CRYPT_FORMAT_STR_MULTI_LINE 旗標。 然後,每個子欄位都會顯示在個別行上。

如果未安裝或註冊 lpszStructType 參數的格式例程,則會傳回編碼 CRYPT_INTEGER_BLOB 的十六進位傾印。 用戶可以設定CRYPT_FORMAT_STR_NO_HEX旗標來停用十六進位傾印。

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CRYPT_INTEGER_BLOB