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 포함된 메시지 인코딩 형식 식별자는 이 함수에서 무시됩니다.
이 매개 변수는 현재 정의된 다음 인증서 인코딩 유형일 수 있습니다.
값 | 의미 |
---|---|
|
X.509 인증서 인코딩을 지정합니다. |
[in] pName
변환할 CERT_NAME_BLOB 구조체에 대한 포인터입니다.
[in] dwStrType
이 매개 변수는 출력 문자열의 형식을 지정합니다. 이 매개 변수는 문자열의 내용에 대한 다른 옵션도 지정합니다.
이 매개 변수는 다음 값 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
모든 개체 식별자(OID)는 삭제됩니다. CERT_RDN 항목은 공백(, )과 쉼표로 구분됩니다. CERT_RDN 여러 특성은 공백(+) 내에 묶인 더하기 기호(예: Microsoft, Kim Abercrombie + 프로그래머)로 구분됩니다. |
|
OID는 해당 특성 값의 등호(=) 구분 기호와 함께 포함됩니다. CERT_RDN 항목은 공백(, )과 쉼표로 구분됩니다. CERT_RDN 여러 특성은 더하기 기호와 공백(+)으로 구분됩니다. |
|
OID는 X.500 키 이름으로 변환됩니다. 그렇지 않으면 CERT_OID_NAME_STR동일합니다. OID에 해당 X.500 이름이 없는 경우 OID는 OID 접두사로 사용됩니다.
선행 또는 후행 공백 또는 다음 문자 중 하나가 포함된 경우 RDN 값이 따옴표로 묶입니다.
|
다음 옵션을 위의 값과 결합하여 문자열에 대한 추가 옵션을 지정할 수도 있습니다.
값 | 의미 |
---|---|
|
쉼표 뒤에 공백(, ) 구분 기호를 세미콜론으로 바꾸고 공백(; ) 구분 기호로 바꿉니다. |
|
쉼표 뒤에 공백(, ) 구분 기호를 백슬래시로 바꾼 다음 r 문자 뒤에 백슬래시, 문자 n(\r\n) 구분 기호로 바꿉니다. |
|
공백(+) 구분 기호로 묶인 더하기 기호를 단일 공백 구분 기호로 바꿉니다. |
|
따옴표를 사용하지 않도록 설정합니다. |
|
고유 이름 문자열의 RDN 순서는 디코딩 후 역방향으로 바뀝니다. 이 플래그는 기본적으로 설정되지 않습니다. |
|
기본적으로 CERT_RDN_T61_STRING X.500 키 문자열은 UTF8로 디코딩됩니다. UTF8 디코딩에 실패하면 X.500 키가 8비트 문자로 디코딩됩니다. CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG 사용하여 UTF8로 디코딩하려는 초기 시도를 건너뜁니다. |
|
pName 매개 변수가 가리키는 이름에 전자 메일 RDN이 포함되어 있고 전자 메일 주소의 호스트 이름 부분에 Punycode로 인코딩된 IA5String포함된 경우 이름은 동일한 유니코드로 변환됩니다.
Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다. |
[out] psz
반환된 문자열을 받는 문자 버퍼에 대한 포인터입니다. 이 버퍼의 크기는 csz 매개 변수에 지정됩니다.
[in] csz
psz 버퍼의 크기(문자)입니다. 크기는 종료 null 문자를 포함해야 합니다.
반환 값
종료 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")과 다릅니다.
열쇠 | 개체 식별자 문자열 |
---|---|
E | 1.2.840.113549.1.9.1 |
T | 2.5.4.12 |
G | 2.5.4.42 |
나는 | 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 |