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입니다.
값 | 의미 |
---|---|
|
인증서에 주체 대체 이름 확장 또는 발급자 대체 이름이 있는 경우 첫 번째 rfc822Name 선택을 사용합니다. 확장에 rfc822Name 선택 항목이 없으면 Email OID에 주체 이름 필드를 사용합니다. rfc822Name 또는 Email OID가 발견되면 는 문자열을 사용합니다. 그렇지 않으면 가 빈 문자열을 반환합니다(반환된 문자 수는 1). pvTypePara 는 사용되지 않으며 NULL로 설정됩니다. |
|
CertNameToStr을 호출하여 주체 이름 BLOB을 변환합니다. pvTypePara는 CertNameToStr에 전달된 dwStrType이 포함된 DWORD를 가리킵니다. 주체 이름 필드가 비어 있고 인증서에 주체 대체 이름 확장이 있는 경우 에서는 CertNameToStr의 첫 번째 디렉터리 이름 선택을 사용합니다. |
|
pvTypePara 는 반환할 이름 특성을 지정하는 OID( 개체 식별자 )를 가리킵니다. 예를 들어 pvTypePara 가 szOID_COMMON_NAME 경우 는 주체 이름 멤버를 사용합니다. 주체 이름 멤버가 비어 있고 인증서에 주체 대체 이름 확장이 있는 경우 는 첫 번째 directoryName 선택을 사용합니다. |
|
이름 특성 목록을 반복하고 szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME 또는 szOID_RSA_emailAddr 처음 나타나는 경우 주체 이름 또는 주체 대체 이름 확장을 사용합니다.
이러한 특성 중 하나를 찾을 수 없는 경우 rfc822Name 선택에 주체 대체 이름 확장을 사용합니다. 여전히 일치하는 항목이 없으면 는 첫 번째 특성을 사용합니다. pvTypePara 는 사용되지 않으며 NULL로 설정됩니다. |
|
인증서에서 CERT_FRIENDLY_NAME_PROP_ID 속성을 확인합니다. 인증서에 이 속성이 있으면 반환됩니다. 인증서에 속성이 없으면 CERT_NAME_SIMPLE_DISPLAY_TYPE 반환됩니다. |
|
인증서에 발급자의 주체 대체 이름 확장인 발급자 대체 이름이 있는 경우 첫 번째 DNSName 선택을 검색합니다.
확장에서 DNSName 선택을 찾을 수 없는 경우 주체 이름 필드에서 CN OID "2.5.4.3"을 검색합니다. DNSName 또는 CN OID가 발견되면 문자열을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다. |
|
인증서에 발급자의 주체 대체 이름 확장인 발급자 대체 이름이 있는 경우 첫 번째 URL 선택을 검색합니다. URL 선택이 발견되면 문자열을 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다. |
|
인증서에 주체 대체 이름 확장이 있는 경우 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
필요한 처리 유형을 나타냅니다.
값 | 의미 |
---|---|
|
발급자의 이름을 가져옵니다. 설정되지 않은 경우 는 주체의 이름을 가져옵니다. |
|
값을 UTF8로 디코딩하려는 기본 초기 시도를 건너뛰고 8비트 문자로 디코딩합니다. |
|
dwType 매개 변수가 CERT_NAME_DNS_TYPE 설정된 경우 지정된 DNS 값에 해당하는 모든 이름이 반환됩니다. DNS 이름이 없지만 주체에 CN 구성 요소가 있는 경우 CN이 대신 반환됩니다. CN 및 DNS 이름이 있는 경우 DNS 이름만 반환됩니다. 이는 SSL 체인 빌드 정책을 모방합니다. CERT_NAME_DNS_TYPE 이외의 이름 형식에 대해 이 플래그를 설정하면 이 함수는 null로 끝나는 빈 문자열을 반환합니다.
Windows 8 및 Windows Server 2012: 이 플래그에 대한 지원이 시작됩니다. |
|
이 플래그를 사용하면 아래에 정의된 dwType 매개 변수 값을 기반으로 IA5String 문자열을 유니코드 문자열 값으로 디코딩할 수 있습니다.
|
[in] pvTypePara
dwStrType을 포함하는 DWORD 또는 이름 특성을 지정하는 OID(개체 식별자)에 대한 포인터입니다. 가리키는 형식은 dwType 값에 따라 결정됩니다.
[out] pszNameString
반환된 문자열을 받을 할당된 버퍼에 대한 포인터입니다. pszNameString이 NULL이 아니고 cchNameString이 0이 아닌 경우 pszNameString은 null로 끝나는 문자열입니다.
CERT_NAME_SEARCH_ALL_NAMES_FLAGdwFlags 매개 변수에 지정되고 CERT_NAME_DNS_TYPEdwType 매개 변수에 설정된 경우 반환된 문자열에는 적용되는 모든 DNS 이름이 포함됩니다. 출력 문자열의 각 문자열은 null로 종료되고 마지막 문자열은 이중 null로 종료됩니다. DNS 이름을 찾을 수 없으면 null로 끝나는 단일 빈 문자열이 반환됩니다.
[in] cchNameString
반환된 문자열에 할당된 크기(문자)입니다. 크기는 종료 NULL 문자를 포함해야 합니다.
반환 값
종결 0 문자를 포함하여 변환된 문자 수를 반환합니다. pszNameString이 NULL이거나 cchNameString이 0이면 대상 문자열의 필수 크기(종료 NULL 문자 포함)를 반환합니다. 지정된 이름 형식을 찾을 수 없으면 반환된 문자 수가 1인 null로 끝나는 빈 문자열을 반환합니다.
설명
참고
wincrypt.h 헤더는 CERtGetNameString을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |