인증서 컨텍스트 인코딩 및 디코딩
CryptoAPI인증서의 인코딩 및 디코딩을 지원합니다. CryptoAPI에는 다양한 방법으로 인코딩 및 디코딩을 허용하는 광범위하고 유연한 함수 시스템 및 C 구조가 포함되어 있습니다. CryptoAPI는 표준 X.509 인증서 구조 및 표준 ASN.1(Abstract Syntax Notation One) 인코딩을 지원하여 다른 시스템과의 상호 운용성을 제공합니다.
인코딩된 데이터에 대한 개요는 인코딩 및 디코딩된 데이터참조하세요.
인증서 컨텍스트
CERT_CONTEXT인증서 컨텍스트인코딩된 멤버, 인증서 저장소대한 핸들, 원래 인코딩된 인증서 BLOB대한 포인터 및 CERT_INFO C 구조에 대한 포인터를 포함하는 C 구조입니다.
CERT_INFO 구조는 인증서의 핵심입니다. 여기에는 직접 형식 및 인코딩된 형식으로 인증서의 모든 기본 정보가 포함됩니다. 다음 그림에서는 인코딩된 멤버가 모두 음영으로 표시된 CERT_INFO 구조를 보여 줍니다.
인증서 정보 구조
IssuerUniqueID 및 SubjectUniqueID 멤버는 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 구조체 디코딩를 참조하세요.