Поделиться через


Интерфейс IX509CertificateRequestPkcs7 (certenroll.h)

Интерфейс IX509CertificateRequestPkcs7 представляет объект синтаксиса сообщений сертификата PKCS #7 (CMS). PKCS 7 определяет формат сообщений, отправляемых в центр сертификации или регистрации для запроса сертификата с открытым ключом. Интерфейс IX509CertificateRequestPkcs7 может запутать, так как его реализация не совсем зеркало то, как большинство специалистов по безопасности думает о стандарте PKCS 7. Чтобы избежать этой путаницы, учитывайте следующие моменты:

  • Хотя сообщение PKCS #7 используется для упаковки запроса CMC, объект IX509CertificateRequestPkcs7 не может содержать объект IX509CertificateRequestCmc . Вместо этого интерфейс IX509CertificateRequestCmc наследует и реализует интерфейс IX509CertificateRequestPkcs7 . Таким образом, запрос CMC представляет собой объект PKCS #7 SignedData , содержащий содержимое CMC, первичную подпись, которая имеет значение NULL или на основе ключа, а также ноль или несколько подписей на основе сертификата. В отличие от этого, запрос PKCS #7 является объектом SignedData , который содержит содержимое PKCS #10 (см. следующий элемент в этом списке) и имеет ровно одну подпись на основе сертификата.
  • Объект IX509CertificateRequestPkcs7 должен содержать объект IX509CertificateRequestPkcs10. Main преимуществом упаковки запроса PKCS #10 в сообщение PKCS #7 является возможность добавления нескольких подписывающих. Запрос PKCS #10 подписывается связанным закрытым ключом, а также подписывается сообщение PKCS #7, которое заключает запрос PKCS #10. Этот второй подписыватель использует обновляемый сертификат (для запроса на продление) или сертификат агента регистрации (для запроса регистрации от имени).
  • Вы можете создать и зарегистрировать автономный запрос сертификата IX509CertificateRequestPkcs10 , не упаковывая его в объект IX509CertificateRequestPkcs7 .

Представление asn.1 объекта PKCS #7 в следующем примере синтаксиса показывает, что он может состоять из различных типов данных.


PKCS7ContentTable PKCS7-CONTENT-TYPE ::=
{
    data | signed-data | enveloped-data | signed-and-enveloped-data |
    digested-data | encrypted-data | authenticated-data, ...
}

Из них наиболее актуальным является показанный ниже объект SignedData . Объект SignerInfo, на который ссылается объект SignedData , содержит сведения о подписи. Более подробное обсуждение см. в разделе Атрибуты PKCS #7.


-------------------------------------------------------------------
-- signed-data
-------------------------------------------------------------------

SignedData ::= SEQUENCE 
{
  version           INTEGER,
  digestAlgorithms  DigestAlgorithmIdentifiers,
  contentInfo       ContentInfo,
  certificates      [0] IMPLICIT Certificates OPTIONAL,
  crls              [1] IMPLICIT CertificateRevocationLists OPTIONAL,
  signerInfos       SignerInfos
}

SignerInfo ::= SEQUENCE 
{
  version                     INTEGER,
  sid                         CertIdentifier,
  digestAlgorithm             DigestAlgorithmIdentifier,
  authenticatedAttributes     [0] IMPLICIT Attributes OPTIONAL,
  signatureAlgorithm          SignatureAlgorithmIdentifier,
  signature                   SignatureValue,
  unauthenticatedAttributes   [1] IMPLICIT Attributes
}
 

Наследование

Интерфейс IX509CertificateRequestPkcs7 наследуется от IX509CertificateRequest. IX509CertificateRequestPkcs7 также имеет следующие типы элементов:

Методы

Эти методы доступны в интерфейсе IX509CertificateRequestPkcs7 .

 
IX509CertificateRequestPkcs7::get_RequesterName

Указывает или извлекает строку, содержащую имя диспетчера учетных записей безопасности (SAM) конечной сущности, запрашивающей сертификат. (Получить)
IX509CertificateRequestPkcs7::get_SignerCertificate

Указывает или извлекает сертификат, используемый для подписи запроса на сертификат. (Получить)
IX509CertificateRequestPkcs7::InitializeDecode

Декодирует существующий подписанный или неподписанный PKCS (IX509CertificateRequestPkcs7.InitializeDecode)
IX509CertificateRequestPkcs7::InitializeFromCertificate

Инициализирует запрос сертификата, используя существующий сертификат. (IX509CertificateRequestPkcs7.InitializeFromCertificate)
IX509CertificateRequestPkcs7::InitializeFromInnerRequest

Инициализирует запрос сертификата из внутреннего PKCS
IX509CertificateRequestPkcs7::InitializeFromTemplateName

Инициализирует запрос сертификата с помощью шаблона. (IX509CertificateRequestPkcs7.InitializeFromTemplateName)
IX509CertificateRequestPkcs7::p ut_RequesterName

Указывает или извлекает строку, содержащую имя диспетчера учетных записей безопасности (SAM) конечной сущности, запрашивающей сертификат. (Put)
IX509CertificateRequestPkcs7::p ut_SignerCertificate

Указывает или извлекает сертификат, используемый для подписи запроса на сертификат. (Put)

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header certenroll.h

См. также раздел

Интерфейсы CertEnroll

IX509CertificateRequest