Share via


CertStrToNameA 함수(wincrypt.h)

CertStrToName 함수는 null로 종료된 X.500 문자열을 인코딩된 인증서 이름으로 변환합니다.

구문

BOOL CertStrToNameA(
  [in]            DWORD  dwCertEncodingType,
  [in]            LPCSTR pszX500,
  [in]            DWORD  dwStrType,
  [in, optional]  void   *pvReserved,
  [out]           BYTE   *pbEncoded,
  [in, out]       DWORD  *pcbEncoded,
  [out, optional] LPCSTR *ppszError
);

매개 변수

[in] dwCertEncodingType

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

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

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

[in] pszX500

변환할 null로 종료된 X.500 문자열에 대한 포인터입니다. 이 문자열의 형식은 dwStrType 매개 변수로 지정됩니다.

이 문자열은 CertNameToStr 함수의 출력과 동일한 형식으로 지정되어야 합니다.

[in] dwStrType

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

문자열 형식 지정자와 결합된 플래그가 없는 경우 문자열은 쉼표(,) 또는 세미콜론(RDN( 상대 고유 이름 )의 구분 기호로 ;) 및 더하기 기호(+)를 여러 RDN 값의 구분 기호로 포함할 수 있습니다.

따옴표("")가 지원됩니다. 따옴표는 두 개의 따옴표 집합(예: CN="User ""one"")을 사용하여 따옴표에 포함할 수 있습니다.

숫자 기호(#)로 시작하는 값은 ASCII 16진수로 처리되고 CERT_RDN_OCTET_STRING 변환됩니다. 포함된 공백은 무시됩니다. 예를 들어 1.2.3 = # AB CD 01은 1.2.3=#ABCD01 동일합니다.

키, 개체 식별자 및 값을 둘러싸는 공백은 무시됩니다.

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

의미
CERT_SIMPLE_NAME_STR
1
이 문자열 형식은 지원되지 않습니다.
CERT_OID_NAME_STR
2
문자열 형식이 지원되는지 확인합니다. 문자열은 OID( 개체 식별자 ) 또는 X.500 이름일 수 있습니다.
CERT_X500_NAME_STR
3
CERT_OID_NAME_STR 동일합니다. 문자열 형식이 지원되는지 확인합니다. 문자열은 OID( 개체 식별자 ) 또는 X.500 이름일 수 있습니다.
 

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

의미
CERT_NAME_STR_COMMA_FLAG
0x04000000
쉼표(,)만 RDN 구분 기호로 지원됩니다.
CERT_NAME_STR_SEMICOLON_FLAG
0x40000000
세미콜론(;)만 RDN 구분 기호로 지원됩니다.
CERT_NAME_STR_CRLF_FLAG
0x08000000
백슬래시 r(\r) 또는 백슬래시 n(\n)만 RDN 구분 기호로 지원됩니다.
CERT_NAME_STR_NO_PLUS_FLAG
0x20000000
더하기 기호(+)는 구분 기호로 무시되며 RDN당 여러 값은 지원되지 않습니다.
CERT_NAME_STR_NO_QUOTING_FLAG
0x10000000
따옴표는 지원되지 않습니다.
CERT_NAME_STR_REVERSE_FLAG
0x02000000
고유 이름의 RDN 순서는 인코딩 전에 반전됩니다. 이 플래그는 기본적으로 설정되지 않습니다.
CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG
0x00020000
CERT_RDN_T61_STRING 인코딩된 값 형식은 CERT_RDN_UNICODE_STRING 대신 사용됩니다. 모든 유니코드 문자가 0xFF 미만이거나 같은 경우 이 플래그를 사용할 수 있습니다.
CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG
0x00040000
CERT_RDN_UTF8_STRING 인코딩된 값 형식은 CERT_RDN_UNICODE_STRING 대신 사용됩니다.
CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG
0x00080000
X.500 키를 인쇄 가능한 유니코드(CERT_RDN_PRINTABLE_STRING) 문자열이 아닌 UTF-8(CERT_RDN_UTF8_STRING) 문자열로 인코딩하도록 강제합니다. Windows Server 2003부터 Microsoft 인증 기관의 기본값입니다.
CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG
0x00100000
UTF-8(CERT_RDN_UTF8_STRING)을 사용하여 인쇄 가능한 유니코드(CERT_RDN_PRINTABLE_STRING) X.500 키를 강제로 인코딩하지 않도록 합니다. 를 사용하여 CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG 설정된 경우 X.500 키를 유니코드 값으로 인코딩할 수 있습니다.
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
0x00200000
문자열에 이메일 RDN 값이 포함되어 있고 이메일 주소에 ASCII 문자 집합 외부의 유니코드 문자가 포함된 경우 이메일 주소의 호스트 이름 부분은 Punycode로 인코딩됩니다. 그러면 결과 전자 메일 주소가 IA5String 문자열로 인코딩됩니다. 호스트 이름의 Punycode 인코딩은 레이블별로 수행됩니다.

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

[in, optional] pvReserved

나중에 사용할 수 있으며 NULL이어야 합니다.

[out] pbEncoded

인코딩된 구조를 수신하는 버퍼에 대한 포인터입니다.

이 버퍼의 크기는 pcbEncoded 매개 변수에 지정됩니다.

이 매개 변수는 메모리 할당을 위해 필요한 버퍼 크기를 얻기 위해 NULL 일 수 있습니다. 자세한 내용은 알 수 없는 길이의 데이터 검색을 참조하세요.

[in, out] pcbEncoded

함수를 호출하기 전에 pbEncoded 매개 변수가 가리키는 버퍼의 크기(바이트)를 포함하는 DWORD에 대한 포인터입니다. 함수가 반환되면 DWORD 에는 버퍼에 저장된 바이트 수가 포함됩니다.

pbEncodedNULL이면 DWORD는 버퍼에 필요한 크기(바이트)를 받습니다.

[out, optional] ppszError

잘못된 입력 문자열에 대한 추가 오류 정보를 수신하는 문자열 포인터에 대한 포인터입니다.

pszX500 문자열이 유효하지 않으면 ppszError가 잘못된 문자 시퀀스의 시작을 가리키도록 이 함수에 의해 업데이트됩니다. 입력 문자열에서 오류가 검색되지 않으면 ppszErrorNULL로 설정됩니다.

이 정보가 필요하지 않은 경우 이 매개 변수에 대해 NULL 을 전달합니다.

이 매개 변수는 GetLastError에서 반환된 다음 오류 코드에 대해 업데이트됩니다.

CRYPT_E_INVALID_X500_STRING

CRYPT_E_INVALID_NUMERIC_STRING

CRYPT_E_INVALID_PRINTABLE_STRING

CRYPT_E_INVALID_IA5_STRING

반환 값

성공하면 0이 아닌 값을 반환하고 그렇지 않으면 0을 반환합니다.

확장 오류 정보는 GetLastError를 호출합니다.

설명

다음 표에는 지원되는 X.500 키, 해당 개체 식별자 문자열, 문자열 식별자(Wincrypt.h) 및 값 형식이 포함되어 있습니다.

개체 식별자 문자열 문자열 식별자 RDN 값 형식
CN 2.5.4.3 szOID_COMMON_NAME 인쇄 가능

T61

L 2.5.4.7 szOID_LOCALITY_NAME 인쇄 가능

T61

O 2.5.4.10 szOID_ORGANIZATION_NAME 인쇄 가능

T61

OU 2.5.4.11 szOID_ORGANIZATIONAL_UNIT_NAME 인쇄 가능

T61

E

메일

1.2.840.113549.1.9.1 szOID_RSA_emailAddr IA5
C 2.5.4.6 szOID_COUNTRY_NAME 인쇄 가능
S

ST

2.5.4.8 szOID_STATE_OR_PROVINCE_NAME 인쇄 가능

T61

STREET 2.5.4.9 szOID_STREET_ADDRESS 인쇄 가능

T61

T

제목

2.5.4.12 szOID_TITLE 인쇄 가능

T61

G

GivenName

2.5.4.42 szOID_GIVEN_NAME 인쇄 가능

T61

I

이니셜

2.5.4.43 szOID_INITIALS 인쇄 가능

T61

SN 2.5.4.4 szOID_SUR_NAME 인쇄 가능

T61

DC 0.9.2342.19200300.100.1.25 szOID_DOMAIN_COMPONENT IA5

UTF8

 

인쇄 가능 또는 T61이 키에 대한 RDN 값 형식으로 허용되는 경우 이름 문자열 구성 요소가 다음 문자 집합의 멤버인 경우 Printable이 자동으로 선택됩니다.

  • A, B, ..., Z
  • a, b, ..., z
  • 0, 1, ..., 9
  • (space) ' ( ) + , - . / : = ?

T61 형식은 UTF8로 인코딩됩니다.

예제

이 함수를 사용하는 예제는 예제 C 프로그램: 인증서에서 ASN.1로 이름 변환 및 뒤로를 참조하세요.

참고

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

요구 사항

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

추가 정보

CertNameToStr

데이터 변환 함수

GetLastError

알 수 없는 길이의 데이터 검색