CertGetNameStringA 함수(wincrypt.h)

CertGetNameString 함수는 인증서 CERT_CONTEXT 구조체에서 주체 또는 발급자 이름을 가져와서 null로 끝나는 문자열로 변환합니다.

구문

DWORD CertGetNameStringA(
  [in]  PCCERT_CONTEXT pCertContext,
  [in]  DWORD          dwType,
  [in]  DWORD          dwFlags,
  [in]  void           *pvTypePara,
  [out] LPSTR          pszNameString,
  [in]  DWORD          cchNameString
);

매개 변수

[in] pCertContext

변환할 주체 및 발급자 이름을 포함하는 CERT_CONTEXT 인증서 컨텍스트에 대한 포인터입니다.

[in] dwType

이름을 찾을 방법 및 출력의 형식을 지정하는 방법을 나타내는 DWORD입니다.

의미
CERT_NAME_EMAIL_TYPE
1
인증서에 주체 대체 이름 확장 또는 발급자 대체 이름이 있는 경우 첫 번째 rfc822Name 선택을 사용합니다. 확장에 rfc822Name 선택 항목이 없으면 Email OID에 주체 이름 필드를 사용합니다. rfc822Name 또는 Email OID가 발견되면 는 문자열을 사용합니다. 그렇지 않으면 가 빈 문자열을 반환합니다(반환된 문자 수는 1). pvTypePara 는 사용되지 않으며 NULL로 설정됩니다.
CERT_NAME_RDN_TYPE
2
CertNameToStr을 호출하여 주체 이름 BLOB을 변환합니다. pvTypeParaCertNameToStr에 전달된 dwStrType이 포함된 DWORD를 가리킵니다. 주체 이름 필드가 비어 있고 인증서에 주체 대체 이름 확장이 있는 경우 에서는 CertNameToStr의 첫 번째 디렉터리 이름 선택을 사용합니다.
CERT_NAME_ATTR_TYPE
3
pvTypePara 는 반환할 이름 특성을 지정하는 OID( 개체 식별자 )를 가리킵니다. 예를 들어 pvTypePara 가 szOID_COMMON_NAME 경우 는 주체 이름 멤버를 사용합니다. 주체 이름 멤버가 비어 있고 인증서에 주체 대체 이름 확장이 있는 경우 는 첫 번째 directoryName 선택을 사용합니다.
CERT_NAME_SIMPLE_DISPLAY_TYPE
4
이름 특성 목록을 반복하고 szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME 또는 szOID_RSA_emailAddr 처음 나타나는 경우 주체 이름 또는 주체 대체 이름 확장을 사용합니다.

이러한 특성 중 하나를 찾을 수 없는 경우 rfc822Name 선택에 주체 대체 이름 확장을 사용합니다. 여전히 일치하는 항목이 없으면 는 첫 번째 특성을 사용합니다.

pvTypePara 는 사용되지 않으며 NULL로 설정됩니다.

CERT_NAME_FRIENDLY_DISPLAY_TYPE
5
인증서에서 CERT_FRIENDLY_NAME_PROP_ID 속성을 확인합니다. 인증서에 이 속성이 있으면 반환됩니다. 인증서에 속성이 없으면 CERT_NAME_SIMPLE_DISPLAY_TYPE 반환됩니다.
CERT_NAME_DNS_TYPE
6
인증서에 발급자의 주체 대체 이름 확장인 발급자 대체 이름이 있는 경우 첫 번째 DNSName 선택을 검색합니다.

확장에서 DNSName 선택을 찾을 수 없는 경우 주체 이름 필드에서 CN OID "2.5.4.3"을 검색합니다.

DNSName 또는 CN OID가 발견되면 문자열을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다.

CERT_NAME_URL_TYPE
7
인증서에 발급자의 주체 대체 이름 확장인 발급자 대체 이름이 있는 경우 첫 번째 URL 선택을 검색합니다. URL 선택이 발견되면 문자열을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다.
CERT_NAME_UPN_TYPE
8
인증서에 주체 대체 이름 확장이 있는 경우 PszObjId == szOID_NT_PRINCIPAL_NAME("1.3.6.1.4.1.311.20.2.3")을 찾는 OtherName 선택 항목을 검색합니다.

UPN OID가 발견되면 BLOB을 X509_UNICODE_ANY_STRING 디코딩하고 디코딩된 문자열을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다.

[in] dwFlags

필요한 처리 유형을 나타냅니다.

의미
CERT_NAME_ISSUER_FLAG
0x1
발급자의 이름을 가져옵니다. 설정되지 않은 경우 는 주체의 이름을 가져옵니다.
CERT_NAME_DISABLE_IE4_UTF8_FLAG
0x00010000
값을 UTF8로 디코딩하려는 기본 초기 시도를 건너뛰고 8비트 문자로 디코딩합니다.
CERT_NAME_SEARCH_ALL_NAMES_FLAG
0x2
dwType 매개 변수가 CERT_NAME_DNS_TYPE 설정된 경우 지정된 DNS 값에 해당하는 모든 이름이 반환됩니다. DNS 이름이 없지만 주체에 CN 구성 요소가 있는 경우 CN이 대신 반환됩니다. CN 및 DNS 이름이 있는 경우 DNS 이름만 반환됩니다. 이는 SSL 체인 빌드 정책을 모방합니다. CERT_NAME_DNS_TYPE 이외의 이름 형식에 대해 이 플래그를 설정하면 이 함수는 null로 끝나는 빈 문자열을 반환합니다.

Windows 8 및 Windows Server 2012: 이 플래그에 대한 지원이 시작됩니다.

CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
이 플래그를 사용하면 아래에 정의된 dwType 매개 변수 값을 기반으로 IA5String 문자열을 유니코드 문자열 값으로 디코딩할 수 있습니다.
  • CERT_NAME_EMAIL_TYPE: 이메일 주소의 호스트 이름 부분에 Punycode로 인코딩된 IA5String 구성 요소가 포함된 경우 해당 유니코드로 변환됩니다.
  • CERT_NAME_SIMPLE_DISPLAY_TYPE: 주체 대체 이름의 szOID_RSA_emailAddr 주체 이름 또는 주체 대체 이름의 rfc822Name이 인증서에서 반환되고 전자 메일 주소의 호스트 이름 부분에 Punycode로 인코딩된 IA5String 구성 요소가 포함된 경우 유니코드에 해당하는 유니코드로 변환됩니다.
  • CERT_NAME_DNS_TYPE: 인증서에 DNSName을 선택한 발급자 대체 이름이 있고 전자 메일 주소의 호스트 이름 부분에 Punycode로 인코딩된 IA5String 구성 요소가 포함된 경우 해당 유니코드로 변환됩니다.
  • CERT_NAME_URL_TYPE: URI가 디코딩되고 이스케이프되지 않습니다. URI의 서버 호스트 이름에 Punycode로 인코딩된 IA5String 구성 요소가 포함된 경우 호스트 이름 문자열은 동일한 유니코드로 변환됩니다.
Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다.

[in] pvTypePara

dwStrType을 포함하는 DWORD 또는 이름 특성을 지정하는 OID(개체 식별자)에 대한 포인터입니다. 가리키는 형식은 dwType 값에 따라 결정됩니다.

[out] pszNameString

반환된 문자열을 받을 할당된 버퍼에 대한 포인터입니다. pszNameStringNULL이 아니고 cchNameString이 0이 아닌 경우 pszNameStringnull로 끝나는 문자열입니다.

CERT_NAME_SEARCH_ALL_NAMES_FLAGdwFlags 매개 변수에 지정되고 CERT_NAME_DNS_TYPEdwType 매개 변수에 설정된 경우 반환된 문자열에는 적용되는 모든 DNS 이름이 포함됩니다. 출력 문자열의 각 문자열은 null로 종료되고 마지막 문자열은 이중 null로 종료됩니다. DNS 이름을 찾을 수 없으면 null로 끝나는 단일 빈 문자열이 반환됩니다.

[in] cchNameString

반환된 문자열에 할당된 크기(문자)입니다. 크기는 종료 NULL 문자를 포함해야 합니다.

반환 값

종결 0 문자를 포함하여 변환된 문자 수를 반환합니다. pszNameStringNULL이거나 cchNameString이 0이면 대상 문자열의 필수 크기(종료 NULL 문자 포함)를 반환합니다. 지정된 이름 형식을 찾을 수 없으면 반환된 문자 수가 1인 null로 끝나는 빈 문자열을 반환합니다.

설명

참고

wincrypt.h 헤더는 CERtGetNameString을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

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

추가 정보

데이터 변환 함수