Share via


CertGetIssuerCertificateFromStore 함수(wincrypt.h)

CertGetIssuerCertificateFromStore 함수는 지정된 주체 인증서의 첫 번째 또는 다음 발급자에 대한 인증서 저장소에서 인증서 컨텍스트를 검색합니다. 이 함수를 사용하는 대신 새 인증서 체인 확인 함수를 사용하는 것이 좋습니다.

구문

PCCERT_CONTEXT CertGetIssuerCertificateFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in]           PCCERT_CONTEXT pSubjectContext,
  [in, optional] PCCERT_CONTEXT pPrevIssuerContext,
  [in, out]      DWORD          *pdwFlags
);

매개 변수

[in] hCertStore

인증서 저장소의 핸들입니다.

[in] pSubjectContext

주체 정보를 포함하는 CERT_CONTEXT 구조체에 대한 포인터입니다. 이 매개 변수는 인증서 저장소에서 가져오거나 CertCreateCertificateContext 함수를 사용하여 호출 애플리케이션에서 만들 수 있습니다.

[in, optional] pPrevIssuerContext

발급자 정보를 포함하는 CERT_CONTEXT 구조체에 대한 포인터입니다. 발급자에서는 특히 유효 기간이 변경되는 경우 여러 인증서를 가질 수 있습니다. 첫 번째 발급자 인증서를 얻으려면 호출에서 이 매개 변수가 NULL 이어야 합니다. 발급자에 대한 다음 인증서를 얻으려면 pPrevIssuerContext 를 이전 호출에서 반환된 CERT_CONTEXT 구조로 설정합니다.

이 함수는 이 매개 변수의 NULL이 아닌 값에서 참조하는 CERT_CONTEXT 해제합니다.

[in, out] pdwFlags

다음 플래그는 반환된 인증서에 대한 확인 검사를 사용하도록 설정합니다. 비트 OR 연산을 사용하여 결합하여 여러 인증을 사용하도록 설정할 수 있습니다.

의미
CERT_STORE_NO_CRL_FLAG
일치하는 CRL을 찾을 수 없음을 나타냅니다.
CERT_STORE_NO_ISSUER_FLAG
발급자 인증서를 찾을 수 없음을 나타냅니다.
CERT_STORE_REVOCATION_FLAG
주체 인증서가 발급자의 해지 목록에 있는지 확인합니다.
CERT_STORE_SIGNATURE_FLAG
발급자 인증서의 공개 키를 사용하여 주체 인증서의 서명을 확인합니다.
CERT_STORE_TIME_VALIDITY_FLAG
현재 시간을 가져오고 주체 인증서의 유효 기간 내에 있는지 확인합니다.
 

활성화된 형식의 확인 검사 성공하면 해당 플래그가 0으로 설정됩니다. 실패하면 플래그는 반환 시 설정된 상태로 유지됩니다. CERT_STORE_REVOCATION_FLAG 경우 함수가 주체 인증서와 관련된 CRL을 찾지 못하면 확인이 성공합니다.

CERT_STORE_REVOCATION_FLAG 설정되고 발급자의 저장소에 CRL이 없는 경우 CERT_STORE_NO_CRL_FLAG 설정되고 CERT_STORE_REVOCATION_FLAG 설정된 상태로 유지됩니다.

CERT_STORE_SIGNATURE_FLAG 또는 CERT_STORE_REVOCATION_FLAG 설정된 경우 함수가 저장소에서 발급자 인증서를 찾지 못하면 CERT_STORE_NO_ISSUER_FLAG 설정됩니다. 자세한 내용은 설명을 참조하세요.

확인 검사 실패의 경우 발급자의 CERT_CONTEXT 대한 포인터가 여전히 반환되고 GetLastError가 업데이트되지 않습니다.

반환 값

함수가 성공하면 반환 값은 읽기 전용 발급자 CERT_CONTEXT 대한 포인터입니다.

함수가 실패하고 첫 번째 또는 다음 발급자 인증서를 찾을 수 없는 경우 반환 값은 NULL입니다.

마지막으로 반환된 CERT_CONTEXT 구조체만 CertFreeCertificateContext를 호출하여 해제해야 합니다. 함수에 대한 한 번의 호출에서 반환된 CERT_CONTEXT 후속 호출에서 pPrevIssuerContext 매개 변수로 제공되면 컨텍스트는 함수 작업의 일부로 해제됩니다.

확장된 오류 정보는 GetLastError를 호출합니다. 몇 가지 가능한 오류 코드는 다음과 같습니다.

반환 코드 설명
CRYPT_E_NOT_FOUND
주체 인증서에 대한 발급자를 찾을 수 없습니다.
CRYPT_E_SELF_SIGNED
발급자 인증서는 주체 인증서와 동일합니다. 자체 서명된 루트 인증서입니다.
E_INVALIDARG
hCertStore 매개 변수의 핸들은 pPrevIssuerContext 매개 변수가 가리키는 인증서 컨텍스트와 동일하지 않거나 pdwFlags에서 지원되지 않는 플래그가 설정되었습니다.

설명

반환된 포인터는 함수에 대한 후속 호출에서 pPrevIssuerContext 매개 변수로 전달될 때 해제됩니다. 그렇지 않으면 CertFreeCertificateContext를 호출하여 포인터를 명시적으로 해제해야 합니다. NULL이 아닌 pPrevIssuerContext는 함수에 오류가 있더라도 CertFreeCertificateContext 호출을 사용하여 CertGetIssuerCertificateFromStore에서 항상 해제됩니다.

CertDuplicateCertificateContext 를 호출하여 발급자 인증서를 복제할 수 있습니다.

dwFlags의 16진수 값은 비트 OR 연산을 사용하여 결합하여 여러 확인을 사용하도록 설정할 수 있습니다. 예를 들어 서명 및 시간 유효성을 모두 사용하도록 설정하려면 입력 시 0x00000003 값이 dwFlags 로 전달됩니다. 이 경우 CERT_STORE_SIGNATURE_FLAG 확인이 성공하지만 CERT_STORE_TIME_VALIDITY_FLAG 확인에 실패하면 dwFlags 는 출력 시 0x00000002 반환합니다.

요구 사항

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

추가 정보

인증서 함수