CertVerifyCTLUsage 함수(wincrypt.h)

CertVerifyCTLUsage 함수는 주체가 포함된 사용 식별자가 있는 서명되고 시간이 유효한 CTL(인증서 신뢰 목록)을 찾아 주체가 지정된 사용에 대해 신뢰할 수 있는지 확인합니다. 인증서의 주체는 인증서 컨텍스트 또는 주체 인증서의 SHA1 해시 와 같은 고유 식별자로 식별할 수 있습니다.

구문

BOOL CertVerifyCTLUsage(
  [in]           DWORD                    dwEncodingType,
  [in]           DWORD                    dwSubjectType,
  [in]           void                     *pvSubject,
  [in]           PCTL_USAGE               pSubjectUsage,
  [in]           DWORD                    dwFlags,
  [in, optional] PCTL_VERIFY_USAGE_PARA   pVerifyUsagePara,
  [in, out]      PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus
);

매개 변수

[in] dwEncodingType

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

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] dwSubjectType

dwSubjectType 매개 변수가 CTL_CERT_SUBJECT_TYPE 설정된 경우 pvSubjectCERT_CONTEXT 구조를 가리킵니다. 구조체의 SubjectAlgorithm 멤버를 검사하여 주체 ID의 표현을 확인합니다. 처음에는 SHA1 및 MD5 해시만 SubjectAlgorithm의 값으로 지원됩니다. 적절한 해시 속성은 CERT_CONTEXT 구조체에서 가져옵니다.

dwSubjectType 매개 변수가 CTL_ANY_SUBJECT_TYPE 설정된 경우 pvSubjectCTL_ANY_SUBJECT_INFO 구조를 가리킵니다. 이 구조체의 SubjectAlgorithm 멤버는 CTL의 알고리즘 형식과 일치해야 하며 SubjectIdentifier 멤버는 CTL 항목 중 하나와 일치해야 합니다.

dwSubjectType이 이전 값 중 하나로 설정된 경우 dwEncodingType은 사용되지 않습니다.

[in] pvSubject

dwSubjectType 매개 변수와 함께 사용되는 값입니다.

[in] pSubjectUsage

주체의 의도된 사용을 지정하는 데 사용되는 CTL_USAGE 구조체에 대한 포인터입니다.

[in] dwFlags

CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 설정되지 않은 경우 CTL_VERIFY_USAGE_PARA rghCtlStore 에 지정된 저장소 중 하나에서 시간이 더 이상 유효하지 않은 CTL을 바꿀 수 있습니다 . 교체되면 CERT_VERIFY_UPDATED_CTL_FLAG pVerifyUsageStatusdwFlags 멤버에 설정됩니다. 이 플래그를 설정하면 저장소에 있고 시간이 더 이상 유효하지 않은 CTL에 대해 시간 유효하고 업데이트된 CTL이 수신되더라도 업데이트가 수행되지 않습니다.

CERT_VERIFY_TRUSTED_SIGNERS_FLAG 설정되면 CTL_VERIFY_USAGE_PARArghSignerStore에서 지정한 서명자 저장소만 검색되어 서명자를 찾습니다. 그렇지 않으면 서명자 저장소는 서명자의 인증서를 찾기 위한 추가 원본을 제공합니다. 자세한 내용은 설명 부분을 참조하세요.

CERT_VERIFY_NO_TIME_CHECK_FLAG 설정된 경우 CTL이 시간 유효성을 검사하지 않습니다. 그렇지 않으면, 그들은.

CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 설정된 경우 CTL에는 pSubjectUsage에서 지정한 식별자 외에 사용 식별자가 포함될 수 있습니다. 그렇지 않으면 발견된 CTL에 추가 사용 식별자가 포함되지 않습니다.

[in, optional] pVerifyUsagePara

검색할 저장소를 지정하는 CTL_VERIFY_USAGE_PARA 구조체에 대한 포인터로, CTL 및 허용되는 CTL 서명자가 포함된 저장소를 찾습니다. ListIdentifier 멤버를 설정하면 검색이 추가로 제한됩니다.

[in, out] pVerifyUsageStatus

CTL_VERIFY_USAGE_STATUS 구조체에 대한 포인터입니다. 구조체의 cbSize 멤버는 구조체의 크기(바이트)로 설정해야 하며 CertVerifyCTLUsage 가 호출되기 전에 다른 모든 필드를 0으로 설정해야 합니다. 자세한 내용은 CTL_VERIFY_USAGE_STATUS 참조하세요.

반환 값

지정된 사용량에 대해 주체를 신뢰할 수 있으면 TRUE 가 반환됩니다. 그렇지 않으면 FALSE 가 반환됩니다. GetLastError 는 다음 오류 코드 중 하나를 반환할 수 있습니다.

설명
CRYPT_E_NO_VERIFY_USAGE_DLL
주체 사용을 확인하기 위해 DLL 또는 내보낸 함수를 찾을 수 없습니다.
CRYPT_E_NO_VERIFY_USAGE_CHECK
호출된 함수가 주체에 대한 사용 검사 수행할 수 없습니다.
CRYPT_E_VERIFY_USAGE_OFFLINE
서버가 오프라인 상태였습니다. 따라서 호출된 함수가 사용 검사 완료할 수 없습니다.
CRYPT_E_NOT_IN_CTL
CTL에서 제목을 찾을 수 없습니다.
CRYPT_E_NO_TRUSTED_SIGNER
메시지 또는 신뢰 목록의 서명을 확인하기 위해 신뢰할 수 있는 서명자를 찾을 수 없습니다.
 

pVerifyUsageStatus가 가리키는 CTL_VERIFY_USAGE_PARAdwError 멤버가 동일한 오류 코드로 설정됩니다.

설명

CertVerifyCTLUsage 는 OID( 개체 식별자 )를 사용하여 설치할 수 있는 함수에 대한 디스패처입니다. 먼저 pSubjectUsage가 가리키는 CLT_USAGE 구조체의 첫 번째 사용 개체 식별자와 일치하는 OID 함수를 찾으려고 합니다. 실패하면 기본 CertDllVerifyCTLUsage 함수를 사용합니다.

Cryptnet.dll CertDllVerifyCTLUsage 함수는 OID를 사용하여 설치할 수 있습니다. 다음과 같은 속성이 있습니다.

  • pVerifyUsagePararghCtlStore에서 CTL 저장소를 지정하는 경우 해당 저장소만 검색되어 CTL을 찾습니다. 그렇지 않으면 트러스트 시스템 저장소가 검색되어 CTL을 찾습니다.
  • CERT_VERIFY_TRUSTED_SIGNERS_FLAG 설정된 경우 pVerifyUsagePararghSignerStore로 지정된 서명자 저장소만 검색되어 서명자의 발급자 및 일련 번호에 해당하는 인증서를 찾습니다. 그렇지 않으면 CTL 메시지의 저장소, pVerifyUsagePararghSignerStore로 지정된 서명자 저장소, 신뢰 시스템 저장소, CA 시스템 저장소, ROOT 및 SPC(소프트웨어 게시자 인증서) 시스템 저장소가 검색되어 서명자의 인증서를 찾습니다. 두 경우 모두 찾은 인증서의 공개 키를 사용하여 CTL의 서명을 확인합니다.
  • CTL에 NextUpdate 멤버가 설정되어 있고 CERT_VERIFY_NO_TIME_CHECK 설정되지 않은 경우 시간 유효성이 확인됩니다.
  • 저장소에서 가져온 CTL에 유효하지 않은 시간이 있는 경우 시간이 유효한 버전을 가져오려고 시도합니다. CertDllVerifyCTLUsage 함수는 CTL의 NextUpdateLocation 속성 또는 NextUpdateLocation 확장을 사용하거나 서명자의 정보를 검색하여 NextUpdateLocation 특성을 검색합니다.

요구 사항

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

추가 정보

CTL_VERIFY_USAGE_PARA

CTL_VERIFY_USAGE_STATUS

CertFindCTLInStore

CertFindSubjectInCTL

CTL을 사용하는 확인 함수