証明書コンテキストのエンコードとデコード
CryptoAPI では、 証明書のエンコードとデコードがサポートされています。 CryptoAPI には、さまざまな方法でエンコードとデコードを可能にする関数と C 構造の広範で柔軟なシステムが含まれています。 CryptoAPI では、標準 の X.509 証明書構造と標準 の抽象構文表記 1 (ASN.1) エンコードがサポートされ、他のシステムとの相互運用性が提供されます。
エンコードされたデータの概要については、「エンコードされたデータ とデコードされたデータ」を参照してください。
証明書コンテキスト
証明書コンテキストCERT_CONTEXTは、エンコードされたメンバー、証明書ストアへのハンドル、元のエンコードされた証明書 BLOB へのポインター、および CERT_INFO C 構造体へのポインターを含む C 構造体です。
CERT_INFO構造は、証明書の中心です。 これには、直接の形式とエンコードされた形式で、証明書内のすべての基本情報が含まれています。 次の図は 、エンコード されたすべてのメンバーが網掛けとして表示されるCERT_INFO構造を示しています。
IssuerUniqueID および SubjectUniqueID メンバーは、X.509 バージョン 2 の証明書実装の一部ですが、ほとんど使用しません。 バージョン 3 の証明書拡張機能は、これらのメンバーの機能を置き換えます。
エンコードされた (網掛けされた) メンバー Issuer と Subject に含まれる情報が必要な場合は、それらのメンバーをデコードする必要があります。 これらのメンバーをデコードするには、 CryptDecodeObject を使用します。 次の図は、これらのメンバーの 1 つをデコードするプロセスを示しています。
図の場合、 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 構造体のデコード」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示