CertCreateContext 函式 (wincrypt.h)

CertCreateContext 函式會從編碼的位元組建立指定的內容。 建立的內容不包含任何擴充屬性。

語法

const void * CertCreateContext(
  [in]           DWORD                     dwContextType,
  [in]           DWORD                     dwEncodingType,
  [in]           const BYTE                *pbEncoded,
  [in]           DWORD                     cbEncoded,
  [in]           DWORD                     dwFlags,
  [in, optional] PCERT_CREATE_CONTEXT_PARA pCreatePara
);

參數

[in] dwContextType

指定可建立的內容。 例如,若要建立 憑證內容,請將 dwContextType 設定為 CERT_STORE_CERTIFICATE_CONTEXT。

下表顯示目前定義的內容類型旗標。

值 意義
CERT_STORE_CERTIFICATE_CONTEXT
憑證內容。
CERT_STORE_CRL_CONTEXT
CRL 內容。
CERT_STORE_CTL_CONTEXT
CTL 內容。

[in] dwEncodingType

指定使用的編碼類型。 目前只會使用X509_ASN_ENCODING和PKCS_7_ASN_ENCODING;不過,未來可能會新增其他編碼類型。 針對目前的編碼類型,請使用:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING。

[in] pbEncoded

緩衝區的指標,其中包含要複製的現有編碼內容內容。

[in] cbEncoded

pbEncoded 緩衝區的大小,以位元組為單位。

[in] dwFlags

下列旗標值已定義,而且可以使用位 OR 運算來結合。

值 意義
CERT_CREATE_CONTEXT_NOCOPY_FLAG
建立的內容會直接指向 pbEncoded 所指向的內容,而不是配置的複本。
CERT_CREATE_CONTEXT_SORTED_FLAG
函式會建立具有已排序項目的內容。 目前,此旗標僅適用於 CTL 內容。

針對 CCL,傳回之CTL_INFO結構的 cCTLEntry 成員一律為零。 必須呼叫 CertFindSubjectInSortedCTL 和 CertEnumSubjectInSortedCTL 來尋找或列舉 CTL 專案。

CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG
根據預設,建立 CTL 內容時,就會建立其 SignedData 訊息的 HCRYTPMSG 句柄。 這個旗標可以設定為藉由建立這個句柄來改善效能。 只有在 dwContextType CERT_STORE_CTL_CONTEXT時,才能使用此旗標。
CERT_CREATE_CONTEXT_NO_ENTRY_FLAG
根據預設,建立 CTL 內容時,其項目會譯碼。 設定此旗標時,不會譯碼專案,且效能會改善。 只有在 dwContextType CERT_STORE_CTL_CONTEXT時,才能使用此旗標。

[in, optional] pCreatePara

CERT_CREATE_CONTEXT_PARA 結構的指標。

如果 pCreatePara 及其 pfnFree 成員都是非 NULL,pfnFree 成員會用來釋放 pvFree 成員所指定的記憶體。 如果 pvFree 成員為 NULL,pfnFree 成員會用來釋放 pbEncoded 指標。

如果 pCreatePara 或其 pfnFree 成員為 NULL,則不會嘗試釋放 pbEncoded。

傳回值

如果函式成功,則傳回值是新建立內容的指標。 必須呼叫 pCreatePara 的 pvFree 成員,以釋放建立的內容。

如果函式失敗,則傳回值為 NULL。 如需擴充錯誤資訊,請呼叫 GetLastError。

如果 GetLastError 傳回 ERROR_CANCELLED,這表示 PFN_CERT_CREATE_CONTEXT_SORT_FUNC 回呼函式傳回 FALSE 以停止排序。

規格需求

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

另請參閱

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

憑證和證書存儲維護函式