PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET回呼函式 (wincrypt.h)

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET回呼函式會擷取 物件。 您必須實作此函式作為自定義提供者的一部分。 此函式目前僅由安全通道 (安全通道) 安全性套件呼叫。

語法

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET PfnCryptObjectLocatorProviderGet;

BOOL PfnCryptObjectLocatorProviderGet(
  [in, optional] LPVOID pPluginContext,
  [in, optional] PCRYPT_DATA_BLOB pIdentifier,
  [in]           DWORD dwNameType,
  [in]           PCERT_NAME_BLOB pNameBlob,
  [out]          PBYTE *ppbContent,
  [out]          DWORD *pcbContent,
  [out]          PCWSTR *ppwszPassword,
  [out]          PCRYPT_DATA_BLOB *ppIdentifier
)
{...}

參數

[in, optional] pPluginContext

這個提供者所定義的選擇性緩衝區指標,並由 PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE 函式傳回。 呼叫端不會修改緩衝區。 您的提供者可以使用數據來協助判斷要執行的動作,或維護其他資訊。

[in, optional] pIdentifier

包含物件標識碼 之CRYPTOAPI_BLOB 結構的指標。 第一次呼叫此函式時,這個值應該一律為 NULL

[in] dwNameType

pNameBlob 參數的名稱格式。 可能的值如下所列。 此函式的實作必須能夠處理 Schannel 傳入CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE

CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE (1 (0x1) )

CRYPT_OBJECT_LOCATOR_LAST_RESERVED_NAME_TYPE (32 (0x20) )

CRYPT_OBJECT_LOCATOR_FIRST_RESERVED_USER_NAME_TYPE (33 (0x21) )

CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE (0x0000FFFF)

[in] pNameBlob

包含呼叫應用程式用來唯一識別物件的名稱 之CRYPTOAPI_BLOB 結構的指標。 您的提供者會使用此名稱來找出要求的物件。 Schannel 目前會提交 DNS (域名系統,) 以 UTF8 編碼的主機名,並使用從 punycode 轉換的 IDN 名稱。

[out] ppbContent

位元組陣列的指標,其中包含要傳回的物件。

[out] pcbContent

ppbContent 參數所指向之物件的大小,以位元組為單位。

[out] ppwszPassword

包含密碼的 Null 終止 Unicode 字串,如果有的話,用來加密物件。 如果對像是 PFX) 檔案 (個人資訊交換,則通常會使用密碼來執行加密。 如果不需要任何密碼,這個值可以是 NULL

[out] ppIdentifier

接收選擇性標識碼指標的位址,可在後續呼叫此函式和變更通知期間使用。 如需詳細資訊,請參閱<備註>。 如果您的提供者將此值設定為 NULL,Schannel 會在內部使用 pNameBlob 參數值。

傳回值

如果函式成功,則傳回非零 (TRUE) 。

如果函式失敗, (FALSE) 傳回零,並在 SetLastError 函式中指定適當的錯誤。 大部分的錯誤都會透過安全通道未變更傳遞,但並不保證此行為。 某些錯誤可能會對應至其他錯誤。

如果無法針對指定的 DNS 名稱傳回物件, (pNameBlob) 或標識碼 (pIdentifier) ,請在 SetLastError 函式中傳回 FALSE 並指定CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND

備註

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET回呼函式目前只有安全通道 (安全通道) 安全性套件呼叫。 您可以傳回封裝下列其中一項的物件:

  • PFX) 位元組數位 (個人資訊交換
  • 證書存儲。
  • 泛型 BLOB。 Schannel 目前不支援此功能。
第一次呼叫此函式時,Schannel 會在 pNameBlob 自變數中提交 DNS 主機名,以指定對象的預定主機。 您的提供者必須處理名稱 (符合通配符、建置檔案路徑等) ,以判斷要尋找的物件。

因為許多主機名都可以對應到一個物件,所以您的提供者可以使用 ppIdentifier 參數,傳回內部定義的標識符,以供密碼編譯 API (CAPI) 函式用於提供者的後續呼叫中。 提供者接著可以使用標識碼來協助尋找適當的物件。

規格需求

需求
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
目標平台 Windows
標頭 wincrypt.h

另請參閱

CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE

PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE