다음을 통해 공유


인증서 컨텍스트 인코딩 및 디코딩

CryptoAPI 는 인증서의 인코딩 및 디코딩을 지원 합니다. CryptoAPI에는 다양한 방법으로 인코딩 및 디코딩을 허용하는 광범위한 유연한 함수 및 C 구조 시스템이 포함되어 있습니다. CryptoAPI는 표준 X.509 인증서 구조 및 표준 ASN.1( 추상 구문 표기법 1) 인코딩을 지원하여 다른 시스템과의 상호 운용성을 제공합니다.

인코딩된 데이터에 대한 개요는 인코딩 및 디코딩된 데이터를 참조하세요.

인증서 컨텍스트

CERT_CONTEXT인증서 컨텍스트는 인코딩된 멤버, 인증서 저장소에 대한 핸들, 원래 인코딩된 인증서 BLOB에 대한 포인터 및 CERT_INFO C 구조체에 대한 포인터를 포함하는 C 구조체입니다.

CERT_INFO 구조는 인증서의 핵심입니다. 여기에는 직접 형식 및 인코딩된 형식으로 인증서의 모든 기본 정보가 포함됩니다. 다음 그림에서는 모든 인코딩된 멤버가 음영으로 표시된 CERT_INFO 구조를 보여 줍니다.

cert-info 구조

IssuerUniqueIDSubjectUniqueID 멤버는 X.509 버전 2 인증서 구현의 일부이지만 거의 사용되지 않습니다. 버전 3의 인증서 확장은 이러한 멤버의 기능을 대체합니다.

인코딩된(음영 처리된) 멤버 발급자Subject 에 포함된 정보가 필요한 경우 해당 멤버를 디코딩해야 합니다. CryptDecodeObject를 사용하여 이러한 멤버를 디코딩합니다. 다음 그림에서는 이러한 멤버 중 하나를 디코딩하는 프로세스를 보여 줍니다.

cryptdecodeobject를 사용하여 디코딩

설명된 경우 CryptDecodeObject 함수는 CERT_NAME_INFO 구조체, CERT_RDN 구조체 배열, 해당 CERT_RDN_ATTR 구조체 배열 및 이름이 포함된 문자열을 만듭니다. CERT_RDN_ATTR 구조체의 멤버는 문자열의 내용을 결정합니다. 예를 들어 pszObjId 멤버가 2.5.4.3이면 문자열에 공통 이름이 포함됩니다. 2.5.4.10이면 문자열에 organization 이름이 포함됩니다. 이러한 OID( 개체 식별자 ) 목록은 CERT_RDN_ATTR 참조하세요.

dwValueType 멤버에는 문자열 형식에 대한 정보가 포함되어 있습니다. CERT_RDN_PRINTABLE_STRING 경우 값 멤버에는 바이트 너비의 0으로 끝나는 문자열이 포함됩니다. CERT_RDN_UNICODE_STRING 경우 문자열은 두 배 너비(단어 크기) 문자열입니다.

인증서 인코딩 및 디코딩에 대한 자세한 프로세스는 CERT_INFO 구조 인코딩CERT_INFO 구조 디코딩을 참조하세요.