Share via


ICertServerPolicy::GetCertificateExtensionFlags 메서드(certif.h)

GetCertificateExtensionFlags 메서드는 GetCertificateExtension에 대한 최신 호출에서 획득한 확장과 연결된 플래그를 검색합니다.

구문

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

매개 변수

[out] pExtFlags

확장 플래그를 포함하는 LONG 변수에 대한 포인터입니다.

반환 값

C++

메서드가 성공하면 메서드는 S_OK 반환하고 pExtFlags 매개 변수에는 GetCertificateExtension에 대한 최신 호출에서 얻은 확장의 플래그가 포함됩니다.

메서드가 실패하면 오류를 나타내는 HRESULT 값이 반환됩니다. 일반적인 오류 코드 목록은 일반적인 HRESULT 값을 참조하세요.

VB

반환 값은 GetCertificateExtension에 대한 최신 호출에서 얻은 확장의 플래그입니다.

설명

GetCertificateExtensionFlags 전에 SetContextGetCertificateExtension 메서드를 호출해야 합니다. SetContext 메서드는 현재 컨텍스트로 사용되는 요청을 지정하고 GetCertificateExtension 메서드는 요청에 대한 확장을 검색합니다.

확장에는 정책 및 원본 플래그가 포함될 수 있습니다. 정책 플래그는 인증서 확장에 대한 정보를 제공합니다. 정책 플래그는 정책 모듈에서 설정할 수 있습니다. 원본 플래그는 인증서 확장을 설정하는 모듈을 나타냅니다. 원본 플래그는 서버 엔진에서만 설정됩니다.

확장에서 하나 이상의 정책 플래그를 반환할 수 있습니다. 다음은 미리 정의된 정책 플래그입니다.

정책 플래그 값 설명
EXTENSION_CRITICAL_FLAG 이는 중요한 확장입니다.
EXTENSION_DISABLE_FLAG 확장은 사용되지 않습니다.
 

다음 원본 플래그 중 하나를 반환할 수도 있습니다.

원본 플래그 값 설명
EXTENSION_ORIGIN_REQUEST 확장은 PKCS #10 요청의 szOID_CERT_EXTENSIONS(1.3.6.1.4.1.311.2.1.14) 또는 szOID_RSA_certExtensions(1.2.840.113549.1.9.14) 특성에 저장된 확장 배열에서 추출되었습니다.
EXTENSION_ORIGIN_POLICY 정책 모듈은 확장을 설정합니다.
EXTENSION_ORIGIN_ADMIN 관리자가 확장을 설정합니다. 자세한 내용은 ICertAdmin::SetCertificateExtension을 참조하세요.
EXTENSION_ORIGIN_SERVER 서버 엔진이 확장을 설정합니다.
EXTENSION_ORIGIN_RENEWALCERT 확장은 PKCS #10 갱신 요청의 szOID_RENEWAL_CERTIFICATE(1.3.6.1.4.1.311.13.1) 특성에 저장된 인증서에서 추출되었습니다.
EXTENSION_ORIGIN_IMPORTEDCERT 확장이 가져온 인증서에서 추출되었습니다(인증서가 ICertAdmin::ImportCertificate에 전달됨).
EXTENSION_ORIGIN_PKCS7 확장은 PKCS #7 요청의 szOID_CERT_EXTENSIONS(1.3.6.1.4.1.311.2.1.14) 또는 szOID_RSA_certExtensions(1.2.840.113549.1.9.14) 특성에 저장된 확장 배열에서 추출되었습니다.
 

반환 값에 설정된 플래그를 결정하는 데 사용하기 쉽게 미리 정의된 마스크가 제공됩니다. 다음 마스크가 제공됩니다.

마스크 값 설명
EXTENSION_POLICY_MASK 이 값(0x0000FFFF)은 정책 플래그를 검사하는 데 사용됩니다.
EXTENSION_ORIGIN_MASK 이 값(0x000F0000)은 원본 플래그를 검사하는 데 사용됩니다.
 

사용자 지정 데이터에 높은 8비트 EXTENSION_POLICY_MASK 사용하는 것이 안전합니다. 이러한 비트는 데이터베이스에 영구적으로 저장되지만 인증서 확장에 기록되지는 않습니다.

예제

HRESULT  hr;
LONG     ExtFlags;
// pCertServerPolicy has been used to call SetContext previously.
hr = pCertServerPolicy->GetCertificateExtensionFlags( &ExtFlags);

// More than one policy flag might be set.
LONG ExtPolicyFlags = ExtFlags & EXTENSION_POLICY_MASK;

if (ExtPolicyFlags & EXTENSION_CRITICAL_FLAG)
{
    // Do something.
}

if (ExtPolicyFlags & EXTENSION_DISABLE_FLAG)
{
    // Do something.
}

// only one origin flag can be set
switch (ExtFlags & EXTENSION_ORIGIN_MASK)
{
    case EXTENSION_ORIGIN_REQUEST:
        // Extension was set in certificate request.
        break;
    case EXTENSION_ORIGIN_POLICY:
        // Extension was set by policy module.
        break;
    case EXTENSION_ORIGIN_ADMIN:
        // Extension was set by administrator.
        break;
    case EXTENSION_ORIGIN_SERVER:
        // Extension was set by server engine.
        break;
    default:
        break;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 지원되는 버전 없음
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 certif.h(Certsrv.h 포함)
라이브러리 Certidl.lib
DLL Certcli.dll

추가 정보

ICertAdmin::SetCertificateExtension

ICertServerPolicy

ICertServerPolicy::GetCertificateExtension

ICertServerPolicy::SetContext

IEnumCERTVIEWEXTENSION::GetFlags