Функции расширения

Формат сертификата X.509 версии 3 определяет несколько расширений, которые можно добавить в сертификат, чтобы предоставить расширенные сведения об использовании ключа, политиках и ограничениях сертификатов, альтернативных формах имен и многом другом.

CertEnroll.dll реализует следующие интерфейсы для управления расширениями сертификатов:

В каждом из следующих разделов рассматривается функция, экспортируемая Xenroll.dll для управления расширениями сертификатов. В каждом разделе также описывается, как использовать CertEnroll.dll для замены функции, или указано, что сопоставление между двумя библиотеками не существует:

AddCertTypeToRequestWStr

Функция AddCertTypeToRequestWStr в Xenroll.dll добавляет шаблон сертификата по имени в запрос.

При использовании CertEnroll.dll для включения шаблона в запрос сертификата рекомендуется использовать метод InitializeFromTemplateName для объекта запроса PKCS#10 или [*PKCS ) или метода InitializeFromInnerRequestTemplateName в запросе CMC.

Если определенный шаблон недоступен на клиенте, но ожидается, что он будет понят центру сертификации (ЦС), можно использовать интерфейс IX509ExtensionTemplateName для добавления шаблона версии 1 или с помощью интерфейса IX509ExtensionTemplate для добавления шаблона версии 2 в запрос на сертификат. Например, чтобы добавить шаблон версии 1, выполните следующие действия:

  1. Создайте объект IX509Extensions .
  2. Создайте объект IX509ExtensionTemplateName и вызовите метод InitializeEncode , указав имя шаблона.
  3. Добавьте расширение, созданное в коллекцию IX509Extensions , вызвав метод Add .
  4. Создайте объект IX509AttributeExtensions и вызовите метод InitializeEncode , указав коллекцию IX509Extensions для входных данных.
  5. Получите объект коллекции ICryptAttributes , вызвав свойство CryptAttributes для существующего объекта запроса IX509CertificateRequestPkcs10 или IX509CertificateRequestCmc .

AddCertTypeToRequestWStrEx

Функция AddCertTypeToRequestWStrEx в Xenroll.dll добавляет шаблон сертификата в запрос по имени, идентификатору объекта и версии.

Сведения об использовании CertEnroll.dll для включения сведений о шаблоне в запрос см. в разделе AddCertTypeToRequestWStr.

AddExtensionsToRequest

Функция AddExtensionsToRequest в Xenroll.dll добавляет коллекцию расширений в запрос.

В CertEnroll.dll расширения добавляются в коллекцию атрибутов запроса CMC или PKCS #10. Чтобы добавить расширения, выполните следующие действия.

  1. Создайте объект IX509Extensions .
  2. Создайте объект IX509Extension и вызовите метод Initialize , чтобы создать расширение на основе идентификатора объекта и значения расширения, или используйте любой из перечисленных выше интерфейсов для определения одного из наиболее распространенных расширений.
  3. Добавьте каждое новое расширение, созданное на предыдущем шаге, в коллекцию IX509Extensions , вызвав метод Add .

addExtensionToRequestWStr

Функция addExtensionToRequestWStr в Xenroll.dll добавляет в запрос определенное расширение.

В CertEnroll.dll определенное расширение должно быть определено и добавлено в коллекцию расширений перед добавлением коллекции расширений в коллекцию атрибутов CMC или запроса PKCS #10. Дополнительные сведения см. в описании AddExtensionsToRequest выше.

EnableSMIMECapabilities

Функция EnableSMIMECapabilities в Xenroll.dll задает или извлекает логическое значение, указывающее, следует ли добавлять расширение SMIMECapabilities в запрос.

Вы можете вызвать свойство SmimeCapabilities объекта IX509CertificateRequestPkcs10 , чтобы автоматически добавить объект IX509ExtensionSmimeCapabilities в запрос перед кодировкой.

IncludeSubjectKeyID

Функция IncludeSubjectKeyID в Xenroll.dll задает или извлекает логическое значение, указывающее, следует ли добавлять расширение SubjectKeyIdentifier в запрос.

По умолчанию расширение SubjectKeyIdentifier создается при инициализации объекта запроса IX509CertificateRequestPkcs10 . Это поведение можно переопределить, вызвав свойство SuppressOids .

Если у вас есть пара открытого и закрытого ключей, вы также можете использовать интерфейс IX509ExtensionSubjectKeyIdentifier в CertEnroll.dll, чтобы добавить расширение SubjectKeyIdentifier в запрос на сертификат, выполнив следующие действия:

  1. Создайте объект IX509Extensions .
  2. Создайте объект IX509ExtensionSubjectKeyIdentifier и вызовите метод InitializeEncode , указав строку, содержащую идентификатор. Как правило, это 20-байтовый хэш SHA-1 открытого ключа , содержащегося в сертификате подписи ЦС.
  3. Добавьте расширение, созданное в коллекцию IX509Extensions , вызвав метод Add .
  4. Создайте объект IX509AttributeExtensions и вызовите метод InitializeEncode , указав коллекцию IX509Extensions для входных данных.
  5. Получите объект коллекции ICryptAttributes , вызвав свойство CryptAttributes для существующего объекта запроса IX509CertificateRequestPkcs10 или IX509CertificateRequestCmc .

resetExtensions

Функция resetExtensions в Xenroll.dll удаляет коллекцию расширений из запроса.

Чтобы удалить расширение из запроса по номеру индекса с помощью CertEnroll.dll, вызовите метод Remove в коллекции IX509Extensions . Чтобы удалить все атрибуты из запроса, вызовите метод Clear .

Сопоставление Xenroll.dll с CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions