編碼和解碼憑證內容
CryptoAPI 支援 憑證的編碼和解碼。 CryptoAPI 包含廣泛的函式和 C 結構系統,以各種方式允許編碼和解碼。 CryptoAPI 支援標準 X.509 憑證結構和標準 抽象語法標記法一 (ASN.1) 編碼,以提供與其他系統的互通性。
如需編碼資料的概觀,請參閱 編碼和解碼的資料。
憑證內容
憑證內容CERT_CONTEXT是 C 結構,其中包含編碼成員、憑證存放區的控制碼、原始編碼憑證 BLOB的指標,以及CERT_INFO C 結構的指標。
CERT_INFO結構是憑證的核心。 它以直接形式和編碼形式包含憑證中的所有基本資訊。 下圖顯示 CERT_INFO 結構,其所有編碼成員都會顯示為陰影。
IssuerUniqueID和SubjectUniqueID成員是X.509第 2 版憑證實作的一部分,但很少使用。 第 3 版中的憑證延伸模組會取代這些成員的功能。
如果需要編碼 (著色) 成員 簽發 者和 主體 中包含的資訊,則必須解碼這些成員。 使用 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,則值成員會包含位元組寬度、以零結束的字元字串。 如果CERT_RDN_UNICODE_STRING,字串是雙角 (字) 大小的字元字串。
如需編碼和解碼憑證的詳細程式,請參閱編碼CERT_INFO結構和解碼CERT_INFO結構。