다음을 통해 공유


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

GetCertificateExtensionFlags 메서드는 ICertServerExit::GetCertificateExtension에 대한 최신 호출에서 획득한 확장의 플래그를 가져옵니다.

구문

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

매개 변수

[out] pExtFlags

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

반환 값

C++

메서드가 성공하면 메서드는 S_OK 반환하고 *pExtFlagsICertServerExit::GetCertificateExtension에 대한 최신 호출로 얻은 확장의 플래그를 포함하는 변수로 설정됩니다.

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

VB

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

설명

확장에는 정책 플래그 및 원본 플래그라는 두 가지 종류의 플래그가 사용됩니다.

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

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

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

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

원본 플래그 값 설명
EXTENSION_ORIGIN_REQUEST 확장은 PKCS #10 요청의 szOID_CERT_EXTENSIONS(1.3.6.1.4.1.311.2.1.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.1.14) 또는 szOID_RSA_certExtensions(1.2.840.113549.1.9.14) 특성에 저장된 확장 배열에서 추출되었습니다.
 

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

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

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

이 메서드를 사용하기 전에 ICertServerExit::SetContext 를 호출해야 합니다.

예제

HRESULT  hr;
LONG     ExtFlags;

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

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

if (ExtPolicyFlags & EXTENSION_CRITICAL_FLAG)
{
    // Perform the desired operation.
}

if (ExtPolicyFlags & EXTENSION_DISABLE_FLAG)
{
    // Perform the desired operation.
}

// 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;
    case EXTENSION_ORIGIN_RENEWALCERT:
        // Extension was set by renewal certificate.
        break;
    case EXTENSION_ORIGIN_IMPORTEDCERT:
        // Extension was set by imported certificate.
        break;
    case EXTENSION_ORIGIN_PKCS7:
        // Extension was set by PKCS #7.
        break;
    default:
        break;
}

요구 사항

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

추가 정보

CCertServerExit

ICertAdmin::SetCertificateExtension

ICertServerExit

ICertServerExit::GetCertificateExtension

IEnumCERTVIEWEXTENSION::GetFlags