拡張関数

X.509 バージョン 3 の証明書形式では、証明書に追加できる複数の拡張機能を識別して、キーの使用法、証明書のポリシーと制約、別名フォームなどの情報を拡張できます。

CertEnroll.dllは、証明書拡張機能を管理するために次のインターフェイスを実装します。

次の各セクションでは、証明書拡張機能を管理するために、Xenroll.dllによってエクスポートされる関数について説明します。 各セクションでは、CertEnroll.dllを使用して関数を置き換える方法、または 2 つのライブラリ間にマッピングが存在しないことを示す方法についても説明します。

AddCertTypeToRequestWStr

Xenroll.dll の AddCertTypeToRequestWStr 関数は、名前によって証明書テンプレートを要求に追加します。

CertEnroll.dllを使用してテンプレートを証明書要求に組み込むには、PKCS#10 または [*PKCS) 要求オブジェクトの InitializeFromTemplateName メソッド、または CMC 要求で InitializeFromInnerRequestTemplateName メソッドを使用することをお勧めします。

クライアントで特定のテンプレートを使用できないが 、証明機関 (CA) によって認識されることが予想される場合は、 IX509ExtensionTemplateName インターフェイスを使用してバージョン 1 テンプレートを追加するか、 IX509ExtensionTemplate インターフェイスを使用してバージョン 2 テンプレートを証明書要求に追加できます。 たとえば、バージョン 1 のテンプレートを追加するには、次の操作を実行します。

  1. IX509Extensions オブジェクトを作成します。
  2. IX509ExtensionTemplateName オブジェクトを作成し、テンプレート名を指定して InitializeEncode メソッドを呼び出します。
  3. Add メソッドを呼び出して 、IX509Extensions コレクションに作成された拡張機能を 追加 します。
  4. IX509AttributeExtensions オブジェクトを作成し、InitializeEncode メソッドを呼び出して、入力時に IX509Extensions コレクションを指定します。
  5. 既存の IX509CertificateRequestPkcs10 または IX509CertificateRequestCmc 要求オブジェクトで CryptAttributes プロパティを呼び出して、ICryptAttributes コレクション オブジェクトを取得します。

AddCertTypeToRequestWStrEx

Xenroll.dllの AddCertTypeToRequestWStrEx 関数は、名前、オブジェクト識別子、およびバージョンによって要求に証明書テンプレートを追加します。

CertEnroll.dllを使用して要求にテンプレート情報を組み込む方法については、「AddCertTypeToRequestWStr」を参照してください。

AddExtensionsToRequest

Xenroll.dllの AddExtensionsToRequest 関数は、要求に拡張機能のコレクションを追加します。

CertEnroll.dllでは、拡張機能が CMC または PKCS #10 要求の属性コレクションに追加されます。 拡張機能を追加するには、次のアクションを実行します。

  1. IX509Extensions オブジェクトを作成します。
  2. IX509Extension オブジェクトを作成し、Initialize メソッドを呼び出して、オブジェクト識別子と拡張値から拡張を作成するか、前述のインターフェイスのいずれかを使用して、より一般的な拡張のいずれかを定義します。
  3. 前の手順で作成した新しい拡張機能をそれぞれ、Add メソッドを呼び出して IX509Extensions コレクションに追加します。

addExtensionToRequestWStr

Xenroll.dllの addExtensionToRequestWStr 関数は、要求に特定の拡張機能を追加します。

CertEnroll.dllでは、拡張機能コレクションが CMC または PKCS #10 要求の属性コレクションに追加される前に、特定の拡張機能を定義して拡張機能コレクションに追加する必要があります。 詳細については、上記の AddExtensionsToRequest に関する説明を参照してください。

EnableSMIMECapabilities

Xenroll.dllの EnableSMIMECapabilities 関数は、 SMIMECapabilities 拡張機能を要求に追加するかどうかを示すブール値を指定または取得します。

IX509CertificateRequestPkcs10 オブジェクトの SmimeCapabilities プロパティを呼び出して、エンコード前に IX509ExtensionSmimeCapabilities オブジェクトを要求に自動的に追加できます。

IncludeSubjectKeyID

Xenroll.dllの IncludeSubjectKeyID 関数は、 SubjectKeyIdentifier 拡張機能を要求に追加するかどうかを示すブール値を指定または取得します。

既定では、 SubjectKeyIdentifier 拡張機能は 、IX509CertificateRequestPkcs10 要求オブジェクトが初期化されるときに作成されます。 SuppressOids プロパティを呼び出すことで、この動作をオーバーライドできます。

公開キーと秘密キーのペアがある場合は、CertEnroll.dllの IX509ExtensionSubjectKeyIdentifier インターフェイスを使用して、次のアクションを実行して、証明書要求に SubjectKeyIdentifier 拡張機能を追加することもできます。

  1. IX509Extensions オブジェクトを作成します。
  2. IX509ExtensionSubjectKeyIdentifier オブジェクトを作成し、InitializeEncode メソッドを呼び出して、識別子を含む文字列を指定します。 通常、これは CA 署名証明書に含まれる 公開キー の 20 バイト SHA-1 ハッシュです。
  3. Add メソッドを呼び出して 、IX509Extensions コレクションに作成された拡張機能を 追加 します。
  4. IX509AttributeExtensions オブジェクトを作成し、InitializeEncode メソッドを呼び出して、入力時に IX509Extensions コレクションを指定します。
  5. 既存の IX509CertificateRequestPkcs10 または IX509CertificateRequestCmc 要求オブジェクトで CryptAttributes プロパティを呼び出して、ICryptAttributes コレクション オブジェクトを取得します。

resetExtensions

Xenroll.dllの resetExtensions 関数は、要求から拡張コレクションを削除します。

CertEnroll.dllを使用してインデックス番号による要求から拡張機能を削除するには、IX509Extensions コレクションの Remove メソッドを呼び出します。 要求からすべての属性を削除するには、 Clear メソッドを呼び出します。

CertEnroll.dllへのXenroll.dllのマッピング

ICryptAttributes

IX509Extension

IX509Extensions