CertNameToStrA 함수(wincrypt.h)

CertNameToStr 함수는 CERT_NAME_BLOB 구조체의 인코딩된 이름을 null로 끝나는 문자열로 변환합니다.

문자열 표현은 RFC 1779의 고유 이름 사양을 따릅니다. 이 규칙에 대한 예외는 아래의 주의 섹션에 나열되어 있습니다.

구문

DWORD CertNameToStrA(
  [in]  DWORD           dwCertEncodingType,
  [in]  PCERT_NAME_BLOB pName,
  [in]  DWORD           dwStrType,
  [out] LPSTR           psz,
  [in]  DWORD           csz
);

매개 변수

[in] dwCertEncodingType

이름을 인 코딩하는 데 사용된 인증서 인코딩 형식 입니다. 이 값의 높은 WORD에 포함된 메시지 인코딩 형식 식별자는 이 함수에서 무시됩니다.

이 매개 변수는 현재 정의된 다음 인증서 인코딩 유형일 수 있습니다.

의미
X509_ASN_ENCODING
1(0x1)
X.509 인증서 인코딩을 지정합니다.

[in] pName

변환할 CERT_NAME_BLOB 구조체에 대한 포인터입니다.

[in] dwStrType

이 매개 변수는 출력 문자열의 형식을 지정합니다. 이 매개 변수는 문자열의 내용에 대한 다른 옵션도 지정합니다.

이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
CERT_SIMPLE_NAME_STR
1
모든 개체 식별자 (OID)는 삭제됩니다. CERT_RDN 항목은 쉼표와 공백(, )으로 구분됩니다. CERT_RDN 여러 특성은 공백( + )에 묶인 더하기 기호로 구분됩니다(예: Microsoft, Kim Abercrombie + 프로그래머).
CERT_OID_NAME_STR
2
OID는 해당 특성 값의 등호(=) 구분 기호와 함께 포함됩니다. CERT_RDN 항목은 쉼표와 공백(, )으로 구분됩니다. CERT_RDN 여러 특성은 더하기 기호와 공백(+ )으로 구분됩니다.
CERT_X500_NAME_STR
3
OID는 X.500 키 이름으로 변환됩니다. 그렇지 않으면 CERT_OID_NAME_STR 동일합니다. OID에 해당 X.500 이름이 없는 경우 OID는 OID 접두사로 사용됩니다.

RDN 값은 선행 또는 후행 공백 또는 다음 문자 중 하나가 포함된 경우 따옴표가 붙습니다.

  • 쉼표(,)
  • 더하기 기호(+)
  • 등호(=)
  • 인치 표시(")
  • 백슬래시 뒤에 문자 n(\n)
  • 보다 작음 기호(<)
  • 보다 큼 기호(>)
  • 숫자 기호(#)
  • 세미콜론(;)
따옴표 문자는 인치 표시(")입니다. RDN 값에 인치 표시가 포함된 경우 따옴표("")로 묶습니다.
 

다음 옵션을 위의 값과 결합하여 문자열에 대한 추가 옵션을 지정할 수도 있습니다.

의미
CERT_NAME_STR_SEMICOLON_FLAG
0x40000000
쉼표 뒤에 공백(, ) 구분 기호를 세미콜론 뒤에 공백(; ) 구분 기호로 바꿉니다.
CERT_NAME_STR_CRLF_FLAG
0x08000000
쉼표 뒤에 공백(, ) 구분 기호를 백슬래시로 바꾸고 r 문자 뒤에 백슬래시 뒤에 n(\r\n) 구분 기호로 바꿉니다.
CERT_NAME_STR_NO_PLUS_FLAG
0x20000000
공백( + ) 구분 기호 내에 묶인 더하기 기호를 단일 공백 구분 기호로 바꿉니다.
CERT_NAME_STR_NO_QUOTING_FLAG
0x10000000
따옴표 처리를 사용하지 않도록 설정합니다.
CERT_NAME_STR_REVERSE_FLAG
0x02000000
고유 이름 문자열의 RDN 순서는 디코딩 후 역방향으로 바뀝니다. 이 플래그는 기본적으로 설정되지 않습니다.
CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG
0x00010000
기본적으로 CERT_RDN_T61_STRING X.500 키 문자열은 UTF8로 디코딩됩니다. UTF8 디코딩에 실패하면 X.500 키가 8비트 문자로 디코딩됩니다. CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG 사용하여 UTF8로 디코딩하려는 초기 시도를 건너뜁니다.
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
pName 매개 변수가 가리키는 이름에 이메일 RDN이 포함되어 있고 이메일 주소의 호스트 이름 부분에 Punycode 인코딩된 IA5String이 포함된 경우 이름은 유니코드에 해당하는 이름으로 변환됩니다.

Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다.

[out] psz

반환된 문자열을 수신하는 문자 버퍼에 대한 포인터입니다. 이 버퍼의 크기는 csz 매개 변수에 지정됩니다.

[in] csz

psz 버퍼의 크기(문자)입니다. 크기는 종료 null 문자를 포함해야 합니다.

반환 값

종료 null 문자를 포함하여 변환된 문자 수를 반환합니다.

pszNULL이거나 csz가 0이면 대상 문자열의 필요한 크기를 반환합니다.

설명

pszNULL이 아니고 csz가 0이 아닌 경우 반환된 psz는 항상 null로 끝나는 문자열입니다.

디코딩이 발생할 때 가능한 순서 지정 문제를 방지하려면 다중 구성 요소 RDN(예: CN=James+O=Microsoft)을 사용하지 않는 것이 좋습니다. 대신 단일 값 RDN(예: CN=James, O=Microsoft)을 사용하는 것이 좋습니다.

문자열 표현은 다음 목록에 설명된 편차를 제외하고 RFC 1779 의 고유 이름 사양을 따릅니다.

  • 따옴표를 포함하는 이름은 큰따옴표로 묶입니다.
  • 빈 문자열은 큰따옴표로 묶입니다.
  • 연속된 공백이 포함된 문자열은 따옴표 안에 묶이지 않습니다.
  • CERT_RDN_ENCODED_BLOB 또는CERT_RDN_OCTET_STRING 형식의 RDN(Relative Distinguished Name) 값은 16진수 형식으로 지정됩니다.
  • OID에 해당 X.500 이름이 없는 경우 OID 앞에 "OID" 접두사를 사용합니다.
  • RDN 값은 선행 공백, 후행 공백 또는 다음 문자 중 하나가 포함된 경우 큰따옴표("\"가 아닌)로 묶입니다.
    • 쉼표(,)
    • 더하기 기호(+)
    • 등호(=)
    • 인치 표시(")
    • 백슬래시(/)
    • 보다 작음 기호(<)
    • 보다 큼 기호(>)
    • 숫자 기호(#)
    • 세미콜론(;)
  • stateOrProvinceName(2.5.4.8) OID의 X.500 키 이름은 "S"입니다. 이 값은 RFC 1779 X.500 키 이름("ST")과 다릅니다.
또한 다음 X.500 키 이름은 RFC 1779에서 언급되지 않지만 이 API에서 반환될 수 있습니다.
개체 식별자 문자열
E 1.2.840.113549.1.9.1
T 2.5.4.12
G 2.5.4.42
I 2.5.4.43
SN 2.5.4.4
 

예제

이 함수를 사용하는 예제는

예제 C 프로그램: 인증서에서 ASN.1 및 뒤로 이름을 변환합니다.

참고

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

요구 사항

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

추가 정보

CertRDNValueToStr

CertStrToName

데이터 변환 함수