다음을 통해 공유


CertFindChainInStore 함수(wincrypt.h)

CertFindChainInStore 함수는 지정된 조건을 충족하는 저장소 첫 번째 또는 다음 인증서를 찾습니다. 그런 다음 해당 인증서에 대한 인증서 체인 컨텍스트를 빌드하고 확인합니다. 체인이 만들어지는 인증서는 dwFindFlags, dwFindTypepvFindPara 매개 변수에 의해 설정된 조건에 따라 선택됩니다. 이 함수는 루프에서 지정된 찾기 조건과 일치하는 인증서 저장소의 모든 인증서를 찾고 찾은 각 인증서에 대한 인증서 체인 컨텍스트를 빌드하는 데 사용할 수 있습니다.

통사론

PCCERT_CHAIN_CONTEXT CertFindChainInStore(
  [in] HCERTSTORE           hCertStore,
  [in] DWORD                dwCertEncodingType,
  [in] DWORD                dwFindFlags,
  [in] DWORD                dwFindType,
  [in] const void           *pvFindPara,
  [in] PCCERT_CHAIN_CONTEXT pPrevChainContext
);

매개 변수

[in] hCertStore

체인이 빌드된 인증서를 검색할 저장소의 핸들입니다. 이 핸들은 체인이 빌드될 때 CertGetCertificateChain 함수에 추가 저장소로 전달됩니다.

[in] dwCertEncodingType

인증서 인코딩 유형은 저장소를 인코딩하는 데 사용된. 이 값의 높은 WORD 포함된 메시지 인코딩 형식 식별자는 이 함수에서 무시됩니다.

이 매개 변수는 현재 정의된 다음 인증서 인코딩 유형일 수 있습니다.

의미
X509_ASN_ENCODING
1(0x1)
X.509 인증서 인코딩을 지정합니다.

[in] dwFindFlags

검색에 대한 추가 옵션을 포함합니다. 이 매개 변수의 가능한 값은 dwFindType 매개 변수의 값에 따라 달라집니다.

이 매개 변수는 dwFindTypeCERT_CHAIN_FIND_BY_ISSUER포함하는 경우 다음 값 중 하나 이상의 조합 또는 0을 포함할 수 있습니다.

의미
CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG
인증서의 공개 키를 암호화 서비스 공급자의공개 키비교합니다. 이 비교는 체인을 빌드할 때 마지막으로 수행한 검사입니다.

발급자의 hCryptProv 멤버에 프라이빗 키가 포함되어 있으므로 이 프로세스 중에 여러 번 확인해야 할 수 있습니다. 이 검사를 용이하게 하기 위해 dwAcquirePrivateKeyFlags 멤버를 CERT_CHAIN_FIND_BY_ISSUER_PARA 구조에서 설정하여 해당 hCryptProv캐싱할 수 있습니다.

CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG
기본적으로 첫 번째 단순 체인만 발급자 이름과 일치하는지 확인합니다. 이 플래그를 설정하면 기본값이 재정의되고 이후의 단순 체인도 발급자 이름 일치 여부를 확인합니다.
CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG
캐시된 시스템 저장소(Root, My, Ca, Trust)만 검색하여 발급자 인증서를 찾도록 하여 이 함수의 성능을 향상시킵니다. 이 플래그를 설정하지 않으면 함수는 캐시된 시스템 저장소와 hCertStore 매개 변수로 표시되는 저장소를 검색합니다.
CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG
URL 캐시만 검색됩니다. 인터넷이 검색되지 않습니다.
CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG
로컬 컴퓨터 인증서 저장소만 엽니다. 현재 사용자의 인증서 저장소가 열리지 않습니다.
CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG
인증서에 연결된 프라이빗 키가 있는지 여부를 확인하지 않습니다.

[in] dwFindType

저장소에서 인증서를 찾는 데 사용할 조건을 결정합니다.

이 매개 변수는 현재 정의된 다음 값일 수 있습니다.

CERT_CHAIN_FIND_BY_ISSUER

발급자의 이름을 기반으로 인증서를 찾습니다. pvFindPara 매개 변수는 검색을 수정하는 멤버를 포함하는 CERT_CHAIN_FIND_BY_ISSUER_PARA 구조체에 대한 포인터입니다.

인증서 체인은 사용 가능한 프라이빗 키있는 인증서용으로 빌드됩니다. 기본적으로 첫 번째 단순 체인의 발급자만 발급자 이름 일치에서 비교됩니다. 이 플래그를 설정하면 모든 체인이 발급자 이름 집합 중 하나와 일치하는 발급자 인증서를 확인합니다.

이 함수는 pvFindPara 구조에 전달된 BLOB 이름을 루트 인증서의 인증 기관뿐만 아니라 체인의 CA(인증 기관)와 비교합니다.

이 함수는 해지 검사를 수행하지 않습니다.

pPrevChainContext NULL않으면 이 함수는 함수가 호출될 때마다 다른 인증서에 대한 체인을 반환합니다. 적합한 인증서가 하나만 있지만 두 개의 일치하는 발급 인증 기관이 있는 경우 그 중 하나가 해지됩니다. 이 함수는 해지된 체인을 반환할 수 있습니다. 그런 다음 애플리케이션이 CertVerifyRevocation 함수에 대한 호출을 통해 해지 자체를 확인하고 체인이 적합하지 않은 경우 CertFindChainStore 함수에 대한 추가 호출은 유효한 인증 기관에서 동일한 인증서를 포함하는 체인을 반환하지 않습니다. 대신 다른 인증서 또는 NULL있는 완전히 다른 체인을 반환합니다( 이러한 체인을 찾을 수 없는 경우).

[in] pvFindPara

추가 검색 조건을 포함하는 포인터입니다. 이 매개 변수가 가리키는 데이터의 형식과 형식은 dwFindType 매개 변수의 값에 따라 달라집니다.

[in] pPrevChainContext

이 함수에 대한 이전 호출에서 반환된 CERT_CHAIN_CONTEXT 구조체에 대한 포인터입니다. 이 인증서에서 검색이 시작됩니다. 이 함수에 대한 첫 번째 호출의 경우 이 매개 변수는 NULL합니다. 후속 호출에서는 함수에 대한 이전 호출에서 반환된 포인터입니다. 이 매개 변수가 NULL않으면 이 함수는 이 구조를 해제합니다.

반환 값

첫 번째 또는 다음 체인 컨텍스트가 빌드되지 않은 경우 NULL 반환됩니다. 그렇지 않으면 읽기 전용 CERT_CHAIN_CONTEXT 구조체에 대한 포인터가 반환됩니다. 이 함수에 대한 후속 호출에서 pPrevChainContext 매개 변수로 전달되면 CERT_CHAIN_CONTEXT 구조체가 해제됩니다. 그렇지 않으면 CERT_CHAIN_CONTEXT 구조체는 CertFreeCertificateChain 함수를 호출하여 명시적으로 해제되어야 합니다.

발언

pPrevChainContext 매개 변수는 체인 컨텍스트를 빌드하기 위한 첫 번째 호출에서 NULL 합니다. 다음 체인 컨텍스트를 빌드하기 위해 pPrevChainContext 이전 호출에서 반환된 CERT_CHAIN_CONTEXT 구조체로 설정됩니다. pPrevChainContext NULL않으면 오류가 발생하더라도 CertFreeCertificateChain 함수를 사용하여 이 함수에 의해 구조가 항상 해제됩니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 wincrypt.h
라이브러리 Crypt32.lib
DLL Crypt32.dll

참고 항목

CERT_CHAIN_CONTEXT

CERT_CHAIN_FIND_BY_ISSUER_PARA

CertFreeCertificateChain

CertGetCertificateChain

인증서 체인 확인 함수