Share via


CertVerifyRevocation 함수(wincrypt.h)

CertVerifyRevocation 함수는 rgpvContext 배열에 포함된 인증서의 해지 상태 확인합니다. 목록의 인증서가 해지된 것으로 확인되면 추가 검사가 수행되지 않습니다. 이 배열은 최종 엔터티에서 루트 기관으로 위쪽으로 전파되는 인증서 체인일 수 있지만 인증서 목록의 이러한 특성은 필요하지 않거나 가정되지 않습니다.

구문

BOOL CertVerifyRevocation(
  [in]           DWORD                   dwEncodingType,
  [in]           DWORD                   dwRevType,
  [in]           DWORD                   cContext,
  [in]           PVOID []                rgpvContext,
  [in]           DWORD                   dwFlags,
  [in, optional] PCERT_REVOCATION_PARA   pRevPara,
  [in, out]      PCERT_REVOCATION_STATUS pRevStatus
);

매개 변수

[in] dwEncodingType

사용되는 인코딩 형식을 지정합니다. 현재는 X509_ASN_ENCODING 및 PKCS_7_ASN_ENCODING만 사용되고 있습니다. 그러나 나중에 추가 인코딩 형식이 추가될 수 있습니다. 현재 인코딩 형식의 경우 X509_ASN_ENCODING 사용 | PKCS_7_ASN_ENCODING.

[in] dwRevType

rgpvContext에 전달된 컨텍스트 구조체의 형식을 나타냅니다. 현재 CERT_CONTEXT_REVOCATION_TYPE 인증서 해지만 정의됩니다.

[in] cContext

rgpvContext 배열의 요소 수입니다.

[in] rgpvContext

dwRevType이 CERT_CONTEXT_REVOCATION_TYPE 경우 rgpvContextCERT_CONTEXT 구조체에 대한 포인터 배열입니다. 이러한 컨텍스트에는 설치 가능 또는 등록된 해지 DLL이 해지 서버를 찾을 수 있도록 충분한 정보가 포함되어야 합니다. 이 정보는 일반적으로 PKIX 1부의 IETF(인터넷 엔지니어링 태스크 포스)에서 정의한 CRLDistributionsPoints 확장과 같은 확장에서 전달됩니다.

효율성을 위해 한 번에 전달되는 컨텍스트가 많을수록 좋습니다.

[in] dwFlags

특별한 처리 요구 사항을 나타냅니다. 이 매개 변수는 다음 플래그 중 하나일 수 있습니다.

의미
CERT_VERIFY_REV_CHAIN_FLAG
인증서 체인의 확인은 첫 번째 인증서가 인증서 앞에 오는 인증서의 발급자임을 제외하고 각 인증서를 가정하여 수행됩니다. dwRevType이 CERT_CONTEXT_REVOCATION_TYPE 않으면 컨텍스트 순서에 대한 가정이 이루어지지 않습니다.
CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
해지 처리기가 해지 확인을 위해 네트워크 기반 리소스에 액세스하지 못하도록 합니다.
CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
설정된 경우 dwUrlRetrievalTimeout 은 모든 URL 와이어 검색에서 누적 시간 제한입니다.
CERT_VERIFY_REV_SERVER_OCSP_FLAG
설정된 경우 이 함수는 해지 검사에 OCSP(온라인 인증서 상태 프로토콜)만 사용합니다. 인증서에 OCSP AIA URL이 없는 경우 pRevStatus 매개 변수의 dwError 멤버가 CRYPT_E_NOT_IN_REVOCATION_DATABASE 설정됩니다.

[in, optional] pRevPara

필요에 따라 발급자를 찾는 데 도움이 되도록 설정합니다. 자세한 내용은 CERT_REVOCATION_PARA 구조를 참조하세요.

[in, out] pRevStatus

certVerifyRevocation이 호출되기 전에 pRevStatus가 가리키는 CERT_REVOCATION_STATUScbSize 멤버만 설정해야 합니다.

함수가 FALSE를 반환하는 경우 이 구조체의 멤버에는 오류 상태 정보가 포함됩니다. 자세한 내용은 CERT_REVOCATION_STATUS 참조하세요. 해지 확인 문제가 발생할 때 pRevStatus 가 업데이트되는 방법에 대한 설명은 비고를 참조하세요.

반환 값

함수가 모든 컨텍스트를 성공적으로 검사하고 취소된 컨텍스트가 없는 경우 함수는 TRUE를 반환 합니다. 함수가 실패하면 FALSE 를 반환하고 CERT_REVOCATION_STATUS 설명된 대로 pRevStatus 가 가리키는 CERT_REVOCATION_STATUS 구조를 업데이트합니다.

오류로 인해 컨텍스트의 해지 처리기가 FALSE를 반환하면 pRevStatus가 가리키는 구조체의 dwError 멤버가 처리기에 의해 설정되어 발생한 오류를 지정합니다. GetLastErrorCERT_REVOCATION_STATUS 구조체의 dwError 멤버에 지정된 오류와 동일한 오류 코드를 반환합니다. GetLastError 는 다음 값 중 하나일 수 있습니다.

Description
CRYPT_E_NO_REVOCATION_CHECK
설치되거나 등록된 해지 함수가 컨텍스트에서 해지 검사 수행할 수 없습니다.
CRYPT_E_NO_REVOCATION_DLL
해지를 확인할 수 있는 설치 또는 등록된 DLL이 없습니다.
CRYPT_E_NOT_IN_REVOCATION_DATABASE
확인할 컨텍스트가 해지 서버의 데이터베이스에서 찾을 수 없습니다.
CRYPT_E_REVOCATION_OFFLINE
해지 서버에 연결할 수 없습니다.
CRYPT_E_REVOKED
컨텍스트가 취소되었습니다. pRevStatusdwReason에는 해지 이유가 포함되어 있습니다.
ERROR_SUCCESS
컨텍스트가 좋았습니다.
E_INVALIDARG
pRevStatuscbSize는 sizeof(CERT_REVOCATION_STATUS)보다 작습니다. pRevStatusdwError는 이 오류에 대해 업데이트되지 않습니다.

설명

다음 예제에서는 해지 확인 문제가 발생할 때 pRevStatus 가 업데이트되는 방법을 보여 줍니다.

cContext가 4인 경우를 고려합니다.

CertVerifyRevocation에서 rgpvContext[0] 및 rgpvContext[1]이 해지되지 않은지 확인할 수 있는 경우 그러나 rgpvContext[2]를 검사 수 없습니다. pRevStatus 멤버 dwIndex는 2로 설정됩니다. 이는 인덱스 2의 컨텍스트에 문제가 있음을 나타내고 pRevStatusdwError 멤버는 CRYPT_E_NO_REVOCATION_CHECK 설정되고 FALSE는 반환됩니다.

rgpvContext[2]가 해지된 것으로 확인되면 pRevStatusdwIndex 멤버가 2로 설정되고 pRevStatusdwError 멤버가 CRYPT_E_REVOKED, dwReason이 업데이트되고 FALSE가 반환됩니다.

두 경우 모두 rgpvContext[0] 및 rgpvContext[1]은 취소되지 않는 것으로 확인되고 , rgpvContext[2]는 마지막으로 검사된 배열 인덱스이며 rgpvContext[3]은 검사되지 않았습니다.

요구 사항

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

추가 정보

CERT_CONTEXT

CERT_REVOCATION_PARA

CERT_REVOCATION_STATUS

CertVerifyCRLTimeValidity

CertVerifyTimeValidity

CertVerifyValidityNesting

데이터 관리 함수