CertGetCRLFromStore 함수(wincrypt.h)

CertGetCRLFromStore 함수는 지정된 발급자의 인증서 저장소에서 첫 번째 또는 다음 CRL(인증서 해지 목록) 컨텍스트를 가져옵니다. 또한 함수는 CRL에서 활성화된 확인 검사를 수행합니다. 이 함수 대신 새 인증서 체인 확인 함수 를 사용하는 것이 좋습니다.

구문

PCCRL_CONTEXT CertGetCRLFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in, optional] PCCERT_CONTEXT pIssuerContext,
  [in]           PCCRL_CONTEXT  pPrevCrlContext,
  [in, out]      DWORD          *pdwFlags
);

매개 변수

[in] hCertStore

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

[in, optional] pIssuerContext

발급자 CERT_CONTEXT 대한 포인터입니다. pIssuerContext 포인터는 이 저장소 또는 다른 저장소에서 오거나 CertCreateCertificateContext를 호출하여 만들 수 있습니다. 이 매개 변수에 대해 NULL 이 전달되면 저장소의 모든 CRL이 발견됩니다.

[in] pPrevCrlContext

CRL_CONTEXT 대한 포인터입니다. 발급자에서 여러 CRL을 가질 수 있습니다. 예를 들어 X.509 버전 3 확장을 사용하여 델타 CRL을 생성할 수 있습니다. CRL을 얻으려면 첫 번째 호출에서 이 매개 변수가 NULL 이어야 합니다. 발급자의 다음 CRL을 가져오기 위해 매개 변수는 이전 호출에서 반환된 CRL_CONTEXT 설정됩니다. NULL이 아닌 pPrevCrlContext는 오류가 발생하더라도 CertFreeCRLContext를 호출하여 이 함수에서 항상 해제됩니다.

[in, out] pdwFlags

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

의미
CERT_STORE_SIGNATURE_FLAG
발급자 인증서의 공개 키를 사용하여 반환된 CRL에서 서명을 확인합니다.
CERT_STORE_TIME_VALIDITY_FLAG
현재 시간을 가져오고 CRL의 ThisUpdate와 NextUpdate 사이의 시간 내에 있는지 확인합니다.
CERT_STORE_BASE_CRL_FLAG
기본 CRL을 가져옵니다.
CERT_STORE_DELTA_CRL_FLAG
델타 CRL을 가져옵니다.
 

활성화된 확인 검사 성공하면 해당 플래그가 0으로 설정됩니다.

활성화된 확인 검사 실패하면 반환 시 플래그가 설정된 상태로 유지됩니다. pIssuerContextNULL이면 활성화된 CERT_STORE_SIGNATURE_FLAG 항상 실패하고 CERT_STORE_NO_ISSUER_FLAG 설정됩니다. 자세한 내용은 설명을 참조하세요.

CERT_STORE_BASE_CRL_FLAG 또는 CERT_STORE_DELTA_CRL_FLAG 중 하나만 설정된 경우 이 함수는 기본 또는 델타 CRL을 반환하고 반환 시 적절한 기본 또는 델타 플래그가 지워집니다. 두 플래그가 모두 설정되면 플래그 중 하나만 지워집니다.

확인 검사 실패의 경우 첫 번째 또는 다음 CRL_CONTEXT 대한 포인터가 여전히 반환되고 GetLastError가 업데이트되지 않습니다.

반환 값

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

함수가 실패하고 첫 번째 또는 다음 CRL을 찾을 수 없는 경우 반환 값은 NULL입니다.

반환된 CRL_CONTEXTCertFreeCRLContext를 호출하여 해제해야 합니다. 그러나 후속 호출에서 pPrevCrlContext에 대해 반환된 CRL_CONTEXT 제공되면 함수는 이를 해제합니다.

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

Description
E_INVALIDARG
hCertStore 매개 변수의 핸들은 pPrevCrlContext 매개 변수가 가리키는 CRL 컨텍스트의 핸들과 동일하지 않거나 pdwFlags에서 지원되지 않는 플래그가 설정되었습니다.
CRYPT_E_NOT_FOUND
발급자의 저장소에 CRL이 없거나 함수가 저장소 목록의 끝에 도달했습니다.

설명

CertDuplicateCRLContext 를 호출하여 중복 CRL을 만들 수 있습니다.

플래그의 16진수 값은 비트 OR 연산을 사용하여 결합하여 두 확인을 모두 사용하도록 설정할 수 있습니다. 예를 들어 두 확인을 모두 사용하도록 설정하려면 pdwFlags에서 가리키는 DWORD 값이 CERT_STORE_SIGNATURE_FLAG 값으로 설정됩니다. CERT_STORE_TIME_VALIDITY_FLAG. CERT_STORE_SIGNATURE_FLAG 확인에 성공했지만 CERT_STORE_TIME_VALIDITY_FLAG 확인에 실패한 경우 함수가 반환될 때 pdwFlags가 가리키는 DWORD 값이 CERT_STORE_TIME_VALIDITY_FLAG 설정됩니다.

요구 사항

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

추가 정보

CRL_CONTEXT

CertCreateCertificateContext

CertDuplicateCRLContext

CertFreeCRLContext

CertGetCRLContextProperty

인증서 해지 목록 함수