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 成員一律為零。 必須呼叫 CertFindSubjectInSortedCTLCertEnumSubjectInSortedCTL 來尋找或列舉 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

傳回值

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

如果函式失敗,則傳回值為 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

憑證和證書存儲維護函式