擴充函式

X.509第 3 版憑證格式可識別多個可新增至憑證的延伸模組,以提供金鑰使用方式、憑證原則和條件約束、替代名稱表單等的增強資訊。

CertEnroll.dll實作下列介面來管理憑證延伸模組:

下列各節將討論Xenroll.dll匯出的函式,以管理憑證延伸模組。 每個章節也會討論如何使用 CertEnroll.dll 取代 函式,或指出兩個程式庫之間沒有對應:

AddCertTypeToRequestWStr

Xenroll.dll中的 AddCertTypeToRequestWStr 函式會依名稱將憑證範本新增至要求。

使用 CertEnroll.dll,在 CMC 要求上使用 PKCS#10 或 [*PKCS ) 要求物件或InitializeFromInnerRequestTemplateName 方法上的 InitializeFromTemplateName方法,慣用的方法就是在憑證要求中使用InitializeFromTemplateName方法。

如果用戶端上無法使用特定範本,但 預期憑證授權單位單位 (CA) 瞭解,您可以使用 IX509ExtensionTemplateName 介面來新增第 1 版範本,或者您可以使用 IX509ExtensionTemplate 介面將第 2 版範本新增至憑證要求。 例如,若要新增第 1 版範本,請執行下列動作:

  1. 建立 IX509Extensions 物件。
  2. 建立 IX509ExtensionTemplateName 物件,並呼叫 InitializeEncode 方法,並指定範本名稱。
  3. 藉由呼叫Add方法,將建立的擴充功能新增至IX509Extensions集合。
  4. 建立 IX509AttributeExtensions 物件並呼叫 InitializeEncode 方法,並在輸入上指定 IX509Extensions 集合。
  5. 在現有的IX509CertificateRequestPkcs10IX509CertificateRequestCmc要求物件上呼叫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 延伸模組新增至要求。

根據預設,當初始化 IX509CertificateRequestPkcs10要求物件時,就會建立 SubjectKeyIdentifier延伸模組。 您可以呼叫 SuppressOids 屬性來覆寫此行為。

如果您有 公開/私密金鑰組,您也可以在 CertEnroll.dll 中使用 IX509ExtensionSubjectKeyIdentifier 介面,藉由執行下列動作,將 SubjectKeyIdentifier 擴充功能新增至憑證要求:

  1. 建立 IX509Extensions 物件。
  2. 建立 IX509ExtensionSubjectKeyIdentifier 物件並呼叫 InitializeEncode 方法,並指定包含識別碼的字串。 一般而言,這是 CA 簽署憑證中包含的 公開金鑰 的 20 位元組 SHA-1 雜湊。
  3. 藉由呼叫Add方法,將建立的擴充功能新增至IX509Extensions集合。
  4. 建立 IX509AttributeExtensions 物件並呼叫 InitializeEncode 方法,並在輸入上指定 IX509Extensions 集合。
  5. 在現有的IX509CertificateRequestPkcs10IX509CertificateRequestCmc要求物件上呼叫CryptAttributes屬性,以擷取ICryptAttributes集合物件。

resetExtensions

Xenroll.dll中的 resetExtensions 函式會從要求中移除擴充集合。

若要使用索引編號從要求中移除擴充功能,請使用 CertEnroll.dll,在IX509Extensions集合上呼叫Remove方法。 若要從要求中移除所有屬性,請呼叫 Clear 方法。

將Xenroll.dll對應至CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions