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 선택 항목이 없으면 전자 메일 OID에 주체 이름 필드를 사용합니다. rfc822Name 또는 Email OID가 있는 경우 문자열을 사용합니다. 그렇지 않으면 빈 문자열을 반환합니다(반환된 문자 수는 1). |
|
CertNameToStr호출하여 주체 이름 BLOB을 변환합니다. pvTypeParaCertNameToStr전달된 dwStrType 포함하는 DWORD 가리킵니다. 주체 이름 필드가 비어 있고 인증서에 주체 대체 이름 확장이 있는 경우 CertNameToStr첫 번째 디렉터리 이름 선택을 사용합니다. |
|
pvTypePara 반환할 이름 특성을 지정하는 개체 식별자(OID)를 가리킵니다. 예를 들어 pvTypePara szOID_COMMON_NAME 경우 주체 이름 멤버를 사용합니다. 주체 이름 멤버가 비어 있고 인증서에 주체 대체 이름 확장이 있는 경우 첫 번째 directoryName 선택을 사용합니다. |
|
이름 특성 목록을 반복하고 szOID_COMMON_NAME, szOID_ORGANIZATIONAL_UNIT_NAME, szOID_ORGANIZATION_NAME 또는 szOID_RSA_emailAddr 처음 나타나는 경우 주체 이름 또는 주체 대체 이름 확장을 사용합니다.
이러한 특성 중 하나를 찾을 수 없는 경우 rfc822Name 선택에 주체 대체 이름 확장을 사용합니다. 일치하는 항목이 없으면 첫 번째 특성을 사용합니다. |
|
인증서에서 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
반환된 문자열을 받을 할당된 버퍼에 대한 포인터입니다.
CERT_NAME_SEARCH_ALL_NAMES_FLAGdwFlags 매개 변수에 지정되고 CERT_NAME_DNS_TYPEdwType 매개 변수에 설정된 경우 반환된 문자열에는 적용되는 모든 DNS 이름이 포함됩니다. 출력 문자열의 각 문자열은 null로 종료되고 마지막 문자열은 이중 null로 종료됩니다. DNS 이름을 찾을 수 없으면 null로 끝나는 빈 문자열이 하나 반환됩니다.
[in] cchNameString
반환된 문자열에 할당된 크기(문자 단위)입니다. 크기는 종료 NULL 문자를 포함해야 합니다.
반환 값
종료 0자를 포함하여 변환된 문자 수를 반환합니다.
발언
메모
wincrypt.h 헤더는 CERtGetNameString을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |