Функции расширения
Формат сертификата X.509 версии 3 определяет несколько расширений, которые можно добавить в сертификат для предоставления расширенных сведений об использовании ключей, политиках сертификатов и ограничениях, альтернативных формах имен и т. д.
CertEnroll.dll реализует следующие интерфейсы для управления расширениями сертификатов:
- IX509Extension
- IX509Extensions
- IX509ExtensionAlternativeNames
- IX509ExtensionAuthorityKeyIdentifier
- IX509ExtensionBasicConstraints
- IX509ExtensionCertificatePolicies
- IX509ExtensionEnhancedKeyUsage
- IX509ExtensionKeyUsage
- IX509ExtensionMSApplicationPolicies
- IX509ExtensionSmimeCapabilities
- IX509ExtensionSubjectKeyIdentifier
- IX509ExtensionTemplate
- IX509ExtensionTemplateName
В каждом из следующих разделов рассматривается функция, экспортируемая Xenroll.dll для управления расширениями сертификатов. В каждом разделе также описывается, как использовать CertEnroll.dll для замены функции или указывает, что сопоставление между двумя библиотеками не существует:
- AddCertTypeToRequestWStr
- AddCertTypeToRequestWStrEx
- AddExtensionsToRequest
- addExtensionToRequestWStr
- EnableSMIMECapabilities
- IncludeSubjectKeyID
- resetExtensions
- Связанные разделы
AddCertTypeToRequestWStr
Функция AddCertTypeToRequestWStr в Xenroll.dll добавляет шаблон сертификата по имени в запрос.
С помощью CertEnroll.dll предпочтительный метод включения шаблона в запрос сертификата заключается в использовании метода InitializeFromTemplateName в объекте запроса PKCS#10 или [*PKCS) или методе InitializeFromInnerRequestTemplateName в запросе CMC.
Если определенный шаблон недоступен на клиенте, но, как ожидается, будет понят центром сертификации (ЦС), можно использовать интерфейс IX509ExtensionTemplateName для добавления шаблона версии 1 или использовать интерфейс IX509ExtensionTemplate для добавления шаблона версии 2 в запрос сертификата. Например, чтобы добавить шаблон версии 1, выполните следующие действия:
- Создайте объект IX509Extensions .
- Создайте объект IX509ExtensionTemplateName и вызовите метод InitializeEncode , указав имя шаблона.
- Добавьте расширение, созданное в коллекцию IX509Extensions , вызвав метод Add .
- Создайте объект IX509AttributeExtensions и вызовите метод InitializeEncode , указав коллекцию IX509Extensions во входных данных.
- Получите объект коллекции ICryptAttributes , вызвав свойство CryptAttributes для существующего объекта запроса IX509CertificateRequestPkcs10 или IX509CertificateRequestCmc .
AddCertTypeToRequestWStrEx
Функция AddCertTypeToRequestWStrEx в Xenroll.dll добавляет шаблон сертификата в запрос по имени, идентификатору объекта и версии.
Сведения об использовании CertEnroll.dll для включения сведений о шаблоне в запрос см. в разделе AddCertTypeToRequestWStr.
AddExtensionsToRequest
Функция AddExtensionsToRequest в Xenroll.dll добавляет коллекцию расширений в запрос.
В CertEnroll.dll расширения добавляются в коллекцию атрибутов CMC или запроса PKCS #10. Чтобы добавить расширения, выполните следующие действия:
- Создайте объект IX509Extensions .
- Создайте объект IX509Extension и вызовите метод Initialize , чтобы создать расширение из идентификатора объекта и значения расширения или использовать любой из перечисленных ранее интерфейсов, чтобы определить одно из наиболее распространенных расширений.
- Добавьте каждое новое расширение, созданное на предыдущем шаге, в коллекцию 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 в запрос сертификата, выполнив следующие действия:
- Создайте объект IX509Extensions .
- Создайте объект IX509ExtensionSubjectKeyIdentifier и вызовите метод InitializeEncode , указав строку, содержащую идентификатор. Как правило, это 20-байтовый хэш SHA-1 открытого ключа , содержащегося в сертификате подписи ЦС.
- Добавьте расширение, созданное в коллекцию IX509Extensions , вызвав метод Add .
- Создайте объект IX509AttributeExtensions и вызовите метод InitializeEncode , указав коллекцию IX509Extensions во входных данных.
- Получите объект коллекции ICryptAttributes , вызвав свойство CryptAttributes для существующего объекта запроса IX509CertificateRequestPkcs10 или IX509CertificateRequestCmc .
resetExtensions
Функция resetExtensions в Xenroll.dll удаляет коллекцию расширений из запроса.
Чтобы удалить расширение из запроса по номеру индекса с помощью CertEnroll.dll, вызовите метод Remove в коллекции IX509Extensions . Чтобы удалить все атрибуты из запроса, вызовите метод Clear .
Связанные темы