共用方式為


CERT_STORE_PROV_FIND_INFO結構 (wincrypt.h)

許多存放區提供者回呼函式都會使用 CERT_STORE_PROV_FIND_INFO 結構。 其中包含尋找憑證、憑證撤銷清單 (CRL) ,或憑證存放區中 CTL) (憑證信任清單的尋找準則。

語法

typedef struct _CERT_STORE_PROV_FIND_INFO {
  DWORD      cbSize;
  DWORD      dwMsgAndCertEncodingType;
  DWORD      dwFindFlags;
  DWORD      dwFindType;
  const void *pvFindPara;
} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;

成員

cbSize

結構的大小。

dwMsgAndCertEncodingType

指定用於訊息和憑證的編碼類型。 憑證和 訊息編碼類型 可以與位OR 作業結合。 以下是定義的編碼類型:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

dwFindFlags

與某些 dwFindType 值搭配使用,以修改搜尋準則。 對於大部分 dwFindType 值,不會使用 dwFindFlags ,而且應該設定為零。

dwFindType

指定要進行的搜尋類型。 搜尋類型會決定資料類型、內容,以及 pvFindPara的使用。 目前定義的 dwFindType 值和 pvFindPara 所需的資料類型如下。

意義
CERT_FIND_ANY
Null; pvFindPara 未使用
未使用搜尋準則。 傳回存放區中的下一個憑證。
CERT_FIND_CERT_ID
CERT_ID 結構
尋找指定 之CERT_ID所識別的憑證。
CERT_FIND_CTL_USAGE
CTL_USAGE 結構
搜尋具有szOID_ENHANCED_KEY_USAGE延伸模組的憑證,或符合CTL_USAGE結構 之 pszUsageIdentifier 成員的 CERT_CTL_PROP_ID
CERT_FIND_ENHKEY_USAGE
CERT_ENHKEY_USAGE 結構
在存放區中搜尋具有增強金鑰使用延伸模組或增強金鑰使用方式屬性的憑證,以及符合CERT_ENHKEY_USAGE結構中pszUsageIdentifier成員的使用識別碼。

如果憑證具有pszObjId成員設定為szOID_ENHANCED_KEY_USAGE 的CERT_EXTENSION結構,則憑證具有增強的金鑰使用方式延伸模組。 如果已設定憑證的CERT_ENHKEY_USAGE_PROP_ID識別碼,則憑證具有增強的金鑰使用方式屬性。

如果pvFindParaNullCERT_ENHKEY_USAGEcUsageIdentifier成員為零,則任何具有增強金鑰使用延伸或增強金鑰使用屬性的憑證都符合選取準則。

如果pvFindParaNullCERT_ENHKEY_USAGE結構的cUsageIdentifier成員為零,則任何具有增強金鑰使用方式的憑證都相符。

如果在 dwFindFlags中設定CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG,則不含金鑰使用方式延伸模組或屬性的憑證也會相符。 設定此旗標的優先順序高於在pvFindPara中傳遞Null

如果已設定CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG,則只會在金鑰使用方式延伸模組上完成比對。

如需有關搜尋準則之旗標修改的資訊,請參閱。

CERT_FIND_EXISTING
CERT_CONTEXT 結構
搜尋與指定憑證內容完全相符的憑證。
CERT_FIND_HASH
CRYPT_HASH_BLOB 結構
搜尋具有 SHA1 雜湊的憑證,該雜湊符合 CRYPT_HASH_BLOB 結構中的雜湊。
CERT_FIND_ISSUER_ATTR
CERT_RDN 結構
搜尋具有指定簽發者屬性的憑證,該屬性符合 CERT_RDN 結構中的屬性。 如果已設定這些值,函式會比較憑證中簽發者的屬性與這個CERT_RDN結構中CERT_RDN_ATTR陣列的專案。 比較會逐一查看 CERT_RDN_ATTR屬性, 尋找與憑證簽發者屬性相符的專案。

如果CERT_RDN_ATTRpszObjId成員為Null,則會忽略屬性物件識別碼。

如果CERT_RDN_ANY_TYPE CERT_RDN_ATTRdwValueType成員,則會忽略實值型別。

如果CERT_RDN_VALUE_BLOBpbData成員是Null,則任何值都是相符的。

目前僅支援完全區分大小寫的比對。 如需 Unicode 選項的相關資訊,請參閱。 設定這些值時,搜尋會限制為編碼類型符合 dwMsgAndCertEncodingType的憑證。

CERT_FIND_ISSUER_NAME
CERT_NAME_BLOB 結構
搜尋與整個簽發者名稱完全相符的憑證,並在 CERT_NAME_BLOB中搜尋名稱。 搜尋僅限於符合 dwMsgAndCertEncodingType的憑證。
CERT_FIND_ISSUER_OF
CERT_CONTEXT 結構
搜尋具有符合 CERT_CONTEXT中簽發者的簽發者的憑證。

不使用具有此值的 CertFindCertificateInStore 函式,而是使用 CertGetCertificateChain 函式。

CERT_FIND_ISSUER_STR
以 Null結尾的寬 (Unicode) 字串
搜尋包含指定簽發者名稱字串的憑證。 憑證的簽發者成員會使用格式化為 CERT_SIMPLE_NAME_STR 的適當 CertNameToStr 格式,轉換成適當類型的名稱字串。 接著會執行不區分大小寫的子字串內相符專案。 設定此值時,搜尋會限制為編碼類型符合 dwMsgAndCertEncodingType的憑證。
CERT_FIND_KEY_IDENTIFIER
CRYPT_HASH_BLOB 結構
搜尋具有符合 CRYPT_HASH_BLOB中金鑰識別碼之CERT_KEY_IDENTIFIER_PROP_ID屬性的憑證。
CERT_FIND_KEY_SPEC
包含金鑰規格的 DWORD
搜尋具有符合 pvFindPara中金鑰規格的CERT_KEY_SPEC_PROP_ID屬性的憑證。
CERT_FIND_MD5_HASH
CRYPT_HASH_BLOB 結構
搜尋具有符合 CRYPT_HASH_BLOB中雜湊的 MD5 雜湊的憑證。
CERT_FIND_PROPERTY
包含屬性識別碼的 DWORD
搜尋具有屬性的憑證,該憑證符合pvFindParaDWORD所指定的屬性識別碼。
CERT_FIND_PUBLIC_KEY
CERT_PUBLIC_KEY_INFO 結構
搜尋具有符合 CERT_PUBLIC_KEY_INFO 結構中公開金鑰的公開金鑰的憑證。
CERT_FIND_SHA1_HASH
CRYPT_HASH_BLOB 結構
搜尋具有 SHA1 雜湊的憑證,該雜湊符合 CRYPT_HASH_BLOB 結構中的雜湊。
CERT_FIND_SIGNATURE_HASH
CRYPT_HASH_BLOB 結構
搜尋具有簽章雜湊的憑證,該憑證符合 CRYPT_HASH_BLOB 結構中的簽章雜湊。
CERT_FIND_SUBJECT_ATTR
CERT_RDN 結構
搜尋具有符合 CERT_RDN 結構中屬性之指定主體屬性的憑證。 如果已設定 RDN 值,函式會比較憑證中主體的屬性與此CERT_RDN結構中CERT_RDN_ATTR陣列的專案。 比較會逐一查看 CERT_RDN_ATTR 屬性,尋找與憑證主體屬性相符的專案。

如果CERT_RDN_ATTRpszObjId成員為Null,則會忽略屬性物件識別碼。

如果CERT_RDN_ATTRdwValueType成員CERT_RDN_ANY_TYPE,則會忽略實數值型別。

如果CERT_RDN_VALUE_BLOBpbData成員為Null,則任何值都是相符的。

目前僅支援完全區分大小寫的比對。

如需 Unicode 選項的相關資訊,請參閱。 設定這些值時,搜尋僅限於編碼類型符合 dwMsgAndCertEncodingType的憑證。

CERT_FIND_SUBJECT_CERT
CERT_INFO 結構
搜尋具有簽發者和序號的憑證,其符合 CERT_INFO 結構中的簽發者和序號。
CERT_FIND_SUBJECT_NAME
CERT_NAME_BLOB 結構
搜尋完整主體名稱與 CERT_NAME_BLOB 結構中名稱完全相符的憑證。 搜尋僅限於符合 dwMsgAndCertEncodingType值的憑證。
CERT_FIND_SUBJECT_STR
以 Null結尾的寬 (Unicode) 字串
搜尋包含指定主體名稱字串的憑證。 憑證的主體成員會 使用格式化為 CERT_SIMPLE_NAME_STR 的適當格式,轉換成適當類型的名稱字串。 然後執行不區分大小寫的子字串內字串比對。 設定此值時,搜尋僅限於編碼類型符合 dwMsgAndCertEncodingType的憑證。
 
注意pvFindPara中傳遞字串的dwFindType值有替代形式。 一個表單使用 Unicode 字串,另一個是 ASCII 字串。 結尾為 「_W」 或不含尾碼的值會使用 Unicode。 結尾為 「_A」 的值會使用 ASCII 字串。
 

pvFindPara

指向要與 dwFindType值所指出之尋找類型搭配使用的資料項目或結構。

備註

dwFindFlags成員可用來修改某些搜尋類型的準則。

CERT_UNICODE_IS_RDN_ATTRS_FLAG的 dwFindFlags值只會與dwFindType的CERT_FIND_SUBJECT_ATTR和CERT_FIND_ISSUER_ATTR值搭配使用。 如果pvFindPara所指向的CERT_RDN_ATTR結構是以 Unicode 字串初始化,就必須設定CERT_UNICODE_IS_RDN_ATTRS_FLAG。 進行任何比較之前,會使用 X509_UNICODE_NAME 來提供 Unicode 比較來轉換要比對的字串。

下列 dwFindFlags 值只會與 dwFindType的CERT_FIND_ENKEY_USAGE值搭配使用。

意義
CERT_FIND_OR_ENHKEY_USAGE_FLAG 您可以藉由設定一或多個旗標來改變搜尋準則。 根據預設,如果pvFindPara所指向之CERT_ENHKEY_USAGE結構的pszUsageIdentifier成員必須相符,每個識別碼都必須符合搜尋準則。 不過,如果已設定CERT_FIND_OR_ENHKEY_USAGE_FLAG,則可以使用位OR 運算來結合所有識別碼;因此,比對任一識別碼就已足夠。
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 設定此旗標時,除了一般相符專案之外,任何沒有增強金鑰使用延伸模組或增強金鑰使用屬性的憑證都符合搜尋準則。
CERT_FIND_NO_ENHKEY_USAGE_FLAG 設定此旗標時,只有沒有增強金鑰使用方式或增強金鑰使用方式屬性的憑證相符。 此旗標設定優先于 pvFindParaNull
CERT_FIND_VALID_ENHKEY_USAGE_FLAG 設定此旗標時,函式只會符合符合指定使用方式有效的憑證。 根據預設,為了比對,憑證必須對所有使用方式有效。

如果憑證只需要對其中一個指定的使用方式有效,也可以設定CERT_FIND_OR_ENHKEY_USAGE_FLAG。 請注意, 系統會呼叫 CertGetValidUsages 來取得憑證的有效用法清單。 只有在設定CERT_FIND_VALID_ENHKEY_USAGE_FLAG時,才能套用CERT_FIND_OR_ENHKEY_USAGE_FLAG。

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 設定此旗標時,比對程式只會牽涉到延伸模組使用識別碼。 如果pvFindParaNullpvFindPara所指向之CERT_ENHKEY_USAGE結構的cUsageIdentifier成員為零,則具有增強金鑰使用延伸模組的任何憑證都相符。 如果也設定了CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG,任何沒有增強金鑰使用延伸模組的憑證也會相符。 如果同時設定CERT_FIND_NO_ENHKEY_USAGE_FLAG,則只會比對沒有增強金鑰使用延伸模組的憑證。
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG 設定此旗標時,比對程式只會牽涉到屬性的使用識別碼。 如果 pvFindParaNullcUsageIdentifier 設定為零,則具有增強金鑰使用屬性的任何憑證都相符。 如果同時設定CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG,任何沒有增強金鑰使用方式屬性的憑證也會相符。 如果已設定CERT_FIND_NO_ENHKEY_USAGE_FLAG,則只會比對沒有增強金鑰使用方式屬性的憑證。
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 僅適用于 dwFindType的 CERT_FIND_SUBJECT_ATTR 和 CERT_FIND_ISSUER-ATTR 值。 根據預設,會進行區分大小寫的完全相符專案。 如果設定此旗標,則比對不區分大小寫。

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 wincrypt.h