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_ID所識別的憑證。 |
|
搜尋具有szOID_ENHANCED_KEY_USAGE延伸模組的憑證,或符合CTL_USAGE結構 之 pszUsageIdentifier 成員的 CERT_CTL_PROP_ID 。 |
|
在存放區中搜尋具有增強金鑰使用延伸模組或增強金鑰使用方式屬性的憑證,以及符合CERT_ENHKEY_USAGE結構中pszUsageIdentifier成員的使用識別碼。
如果憑證具有pszObjId成員設定為szOID_ENHANCED_KEY_USAGE 的CERT_EXTENSION結構,則憑證具有增強的金鑰使用方式延伸模組。 如果已設定憑證的CERT_ENHKEY_USAGE_PROP_ID識別碼,則憑證具有增強的金鑰使用方式屬性。 如果pvFindPara為Null或CERT_ENHKEY_USAGE的cUsageIdentifier成員為零,則任何具有增強金鑰使用延伸或增強金鑰使用屬性的憑證都符合選取準則。 如果pvFindPara為Null或CERT_ENHKEY_USAGE結構的cUsageIdentifier成員為零,則任何具有增強金鑰使用方式的憑證都相符。 如果在 dwFindFlags中設定CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG,則不含金鑰使用方式延伸模組或屬性的憑證也會相符。 設定此旗標的優先順序高於在pvFindPara中傳遞Null。 如果已設定CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG,則只會在金鑰使用方式延伸模組上完成比對。 如需有關搜尋準則之旗標修改的資訊,請參閱。 |
|
搜尋與指定憑證內容完全相符的憑證。 |
|
搜尋具有 SHA1 雜湊的憑證,該雜湊符合 CRYPT_HASH_BLOB 結構中的雜湊。 |
|
搜尋具有指定簽發者屬性的憑證,該屬性符合 CERT_RDN 結構中的屬性。 如果已設定這些值,函式會比較憑證中簽發者的屬性與這個CERT_RDN結構中CERT_RDN_ATTR陣列的專案。 比較會逐一查看 CERT_RDN_ATTR屬性, 尋找與憑證簽發者屬性相符的專案。
如果CERT_RDN_ATTR的pszObjId成員為Null,則會忽略屬性物件識別碼。 如果CERT_RDN_ANY_TYPE CERT_RDN_ATTR的dwValueType成員,則會忽略實值型別。 如果CERT_RDN_VALUE_BLOB的pbData成員是Null,則任何值都是相符的。 目前僅支援完全區分大小寫的比對。 如需 Unicode 選項的相關資訊,請參閱。 設定這些值時,搜尋會限制為編碼類型符合 dwMsgAndCertEncodingType的憑證。 |
|
搜尋與整個簽發者名稱完全相符的憑證,並在 CERT_NAME_BLOB中搜尋名稱。 搜尋僅限於符合 dwMsgAndCertEncodingType的憑證。 |
|
搜尋具有符合 CERT_CONTEXT中簽發者的簽發者的憑證。
不使用具有此值的 CertFindCertificateInStore 函式,而是使用 CertGetCertificateChain 函式。 |
|
搜尋包含指定簽發者名稱字串的憑證。 憑證的簽發者成員會使用格式化為 CERT_SIMPLE_NAME_STR 的適當 CertNameToStr 格式,轉換成適當類型的名稱字串。 接著會執行不區分大小寫的子字串內相符專案。 設定此值時,搜尋會限制為編碼類型符合 dwMsgAndCertEncodingType的憑證。 |
|
搜尋具有符合 CRYPT_HASH_BLOB中金鑰識別碼之CERT_KEY_IDENTIFIER_PROP_ID屬性的憑證。 |
|
搜尋具有符合 pvFindPara中金鑰規格的CERT_KEY_SPEC_PROP_ID屬性的憑證。 |
|
搜尋具有符合 CRYPT_HASH_BLOB中雜湊的 MD5 雜湊的憑證。 |
|
搜尋具有屬性的憑證,該憑證符合pvFindPara中DWORD所指定的屬性識別碼。 |
|
搜尋具有符合 CERT_PUBLIC_KEY_INFO 結構中公開金鑰的公開金鑰的憑證。 |
|
搜尋具有 SHA1 雜湊的憑證,該雜湊符合 CRYPT_HASH_BLOB 結構中的雜湊。 |
|
搜尋具有簽章雜湊的憑證,該憑證符合 CRYPT_HASH_BLOB 結構中的簽章雜湊。 |
|
搜尋具有符合 CERT_RDN 結構中屬性之指定主體屬性的憑證。 如果已設定 RDN 值,函式會比較憑證中主體的屬性與此CERT_RDN結構中CERT_RDN_ATTR陣列的專案。 比較會逐一查看 CERT_RDN_ATTR 屬性,尋找與憑證主體屬性相符的專案。
如果CERT_RDN_ATTR的pszObjId成員為Null,則會忽略屬性物件識別碼。 如果CERT_RDN_ATTR的dwValueType成員CERT_RDN_ANY_TYPE,則會忽略實數值型別。 如果CERT_RDN_VALUE_BLOB的pbData成員為Null,則任何值都是相符的。 目前僅支援完全區分大小寫的比對。 如需 Unicode 選項的相關資訊,請參閱。 設定這些值時,搜尋僅限於編碼類型符合 dwMsgAndCertEncodingType的憑證。 |
|
搜尋具有簽發者和序號的憑證,其符合 CERT_INFO 結構中的簽發者和序號。 |
|
搜尋完整主體名稱與 CERT_NAME_BLOB 結構中名稱完全相符的憑證。 搜尋僅限於符合 dwMsgAndCertEncodingType值的憑證。 |
|
搜尋包含指定主體名稱字串的憑證。 憑證的主體成員會 使用格式化為 CERT_SIMPLE_NAME_STR 的適當格式,轉換成適當類型的名稱字串。 然後執行不區分大小寫的子字串內字串比對。 設定此值時,搜尋僅限於編碼類型符合 dwMsgAndCertEncodingType的憑證。 |
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 | 設定此旗標時,只有沒有增強金鑰使用方式或增強金鑰使用方式屬性的憑證相符。 此旗標設定優先于 pvFindPara 為 Null。 |
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 | 設定此旗標時,比對程式只會牽涉到延伸模組使用識別碼。 如果pvFindPara為Null或pvFindPara所指向之CERT_ENHKEY_USAGE結構的cUsageIdentifier成員為零,則具有增強金鑰使用延伸模組的任何憑證都相符。 如果也設定了CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG,任何沒有增強金鑰使用延伸模組的憑證也會相符。 如果同時設定CERT_FIND_NO_ENHKEY_USAGE_FLAG,則只會比對沒有增強金鑰使用延伸模組的憑證。 |
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG | 設定此旗標時,比對程式只會牽涉到屬性的使用識別碼。 如果 pvFindPara 為 Null 或 cUsageIdentifier 設定為零,則具有增強金鑰使用屬性的任何憑證都相符。 如果同時設定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 |