다음을 통해 공유


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

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

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

인증서 컨텍스트

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

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

인증서 정보 구조

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

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

cryptdecodeobject디코딩

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

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

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