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 경우 rgpvContext는 CERT_CONTEXT 구조체에 대한 포인터 배열입니다. 이러한 컨텍스트에는 설치 가능 또는 등록된 해지 DLL이 해지 서버를 찾을 수 있도록 충분한 정보가 포함되어야 합니다. 이 정보는 일반적으로 PKIX 1부의 IETF(인터넷 엔지니어링 태스크 포스)에서 정의한 CRLDistributionsPoints 확장과 같은 확장에서 전달됩니다.
효율성을 위해 한 번에 전달되는 컨텍스트가 많을수록 좋습니다.
[in] dwFlags
특별한 처리 요구 사항을 나타냅니다. 이 매개 변수는 다음 플래그 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
인증서 체인의 확인은 첫 번째 인증서가 인증서 앞에 오는 인증서의 발급자임을 제외하고 각 인증서를 가정하여 수행됩니다. dwRevType이 CERT_CONTEXT_REVOCATION_TYPE 않으면 컨텍스트 순서에 대한 가정이 이루어지지 않습니다. |
|
해지 처리기가 해지 확인을 위해 네트워크 기반 리소스에 액세스하지 못하도록 합니다. |
|
설정된 경우 dwUrlRetrievalTimeout 은 모든 URL 와이어 검색에서 누적 시간 제한입니다. |
|
설정된 경우 이 함수는 해지 검사에 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 멤버가 처리기에 의해 설정되어 발생한 오류를 지정합니다. GetLastError는 CERT_REVOCATION_STATUS 구조체의 dwError 멤버에 지정된 오류와 동일한 오류 코드를 반환합니다. GetLastError 는 다음 값 중 하나일 수 있습니다.
값 | Description |
---|---|
|
설치되거나 등록된 해지 함수가 컨텍스트에서 해지 검사 수행할 수 없습니다. |
|
해지를 확인할 수 있는 설치 또는 등록된 DLL이 없습니다. |
|
확인할 컨텍스트가 해지 서버의 데이터베이스에서 찾을 수 없습니다. |
|
해지 서버에 연결할 수 없습니다. |
|
컨텍스트가 취소되었습니다. pRevStatus의 dwReason에는 해지 이유가 포함되어 있습니다. |
|
컨텍스트가 좋았습니다. |
|
pRevStatus의 cbSize는 sizeof(CERT_REVOCATION_STATUS)보다 작습니다. pRevStatus의 dwError는 이 오류에 대해 업데이트되지 않습니다. |
설명
다음 예제에서는 해지 확인 문제가 발생할 때 pRevStatus 가 업데이트되는 방법을 보여 줍니다.
cContext가 4인 경우를 고려합니다.
CertVerifyRevocation에서 rgpvContext[0] 및 rgpvContext[1]이 해지되지 않은지 확인할 수 있는 경우 그러나 rgpvContext[2]를 검사 수 없습니다. pRevStatus 멤버 dwIndex는 2로 설정됩니다. 이는 인덱스 2의 컨텍스트에 문제가 있음을 나타내고 pRevStatus의 dwError 멤버는 CRYPT_E_NO_REVOCATION_CHECK 설정되고 FALSE는 반환됩니다.
rgpvContext[2]가 해지된 것으로 확인되면 pRevStatus의 dwIndex 멤버가 2로 설정되고 pRevStatus의 dwError 멤버가 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 |