Функции закрытого и открытого ключей

CertEnroll.dll реализует интерфейсы IX509PrivateKey и IX509PublicKey . Например, можно использовать интерфейс IX509PrivateKey для выполнения следующих действий с закрытым ключом:

  • Создание, открытие, закрытие, импорт, экспорт и удаление ключа.
  • Укажите или получите алгоритм открытого ключа.
  • Укажите или получите сведения о доступном поставщике служб шифрования (CSP), который поддерживает алгоритм открытого ключа.
  • Укажите или получите сертификат , связанный с закрытым ключом.
  • Укажите или получите имя контейнера ключей.
  • Укажите или получите описание и отображаемое имя ключа.
  • Укажите или получите ограничения экспорта, размещенные в закрытом ключе.
  • Укажите или получите логическое значение, указывающее, существует ли ключ.
  • Укажите или получите значение, указывающее, как защищен ключ перед использованием.
  • Укажите или получите значение, указывающее, можно ли использовать ключ для подписывания, шифрования или и того, и другого.
  • Укажите или получите значение, определяющее конкретную цель, для которой можно использовать ключ.
  • Укажите или получите длину ключа.
  • Укажите или получите значение, указывающее, используется ли ключ или сохраняется в контексте компьютера или пользователя.
  • Получение логического значения, указывающего, был ли открыт ключ.
  • Укажите личный идентификационный номер для доступа к закрытому ключу на смарт-карта.
  • Укажите или получите имя CSP, связанного с ключом.
  • Укажите или получите дескриптор безопасности для ключа.

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

ContainerNameWStr

Функция ContainerNameWStr в Xenroll.dll задает или извлекает имя контейнера ключей.

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

  1. Вызовите свойство Request для существующего объекта IX509Enrollment .
  2. Вызовите метод GetInnerRequest для запроса, возвращенного на шаге 1, чтобы получить самый внутренний запрос.
  3. Вызовите QueryInterface для объекта IX509CertificateRequest , возвращенного из шага 2, для приведения к объекту IX509CertificateRequestPkcs10 .
  4. Вызовите свойство PrivateKey в запросе PKCS #10.
  5. Вызовите свойство ContainerName для объекта IX509PrivateKey , полученного на шаге 4.

GenKeyFlags

Функция GenKeyFlags , определенная в Xenroll.dll, задает или извлекает флаги, используемые для создания закрытого ключа или пары открытого и закрытого ключей.

При использовании CertEnroll.dll можно указать ряд различных свойств, которые будут определять способ создания закрытого ключа. Дополнительные сведения см. в разделе Создание.

GetKeyLen

Функция GetKeyLen , определенная в Xenroll.dll, извлекает максимальный или минимальный размер ключа шифрования.

При использовании CertEnroll.dll можно вызвать свойство Length для объекта IX509PrivateKey или IX509PublicKey , чтобы получить размер ключа в битах.

GetKeyLenEx

Функция GetKeyLenEx , определенная в Xenroll.dll, извлекает максимальный или минимальный размер ключа или длину приращения ключа шифрования.

При использовании CertEnroll.dll можно вызвать свойство Length для объекта IX509PrivateKey или IX509PublicKey , чтобы получить размер ключа в битах. Если алгоритм поддерживает добавочную длину ключа, можно вызвать свойство IncrementLength объекта ICspAlgorithm , чтобы получить значение приращения. Можно также вызвать свойства MinLength и MaxLength , чтобы получить минимальный и максимальный размер ключа.

GetSupportedKeySpec

Функция GetSupportedKeySpec , определенная в Xenroll.dll, извлекает значение, указывающее, поддерживает ли CSP ключи обмена, ключи подписывания или и то, и другое.

При использовании CertEnroll.dll можно вызвать свойство KeySpec в объектах IX509PrivateKey или ICspInformation , чтобы получить операции, поддерживаемые ключом.

KeySpec

Функция KeySpec, определенная в Xenroll.dll, задает или извлекает тип ключа.

При использовании CertEnroll.dll можно вызвать свойство KeySpec для объекта IX509PrivateKey , чтобы получить операции, поддерживаемые ключом.

LimitExchangeKeyToEncipherment

Функция LimitExchangeKeyToEncipherment , определенная в Xenroll.dll, задает или извлекает логическое значение, указывающее, можно ли использовать ключ шифрования только для данных или шифрования ключа.

CertEnroll.dll не содержит прямого эквивалента этой функции. Однако можно достичь почти эквивалентного результата, указав объект IX509ExtensionKeyUsage и добавив его в запрос сертификата.

PVKFileNameWStr

Функция PVKFileNameWStr , определенная в Xenroll.dll, задает или извлекает имя файла, содержащего экспортированные ключи.

При использовании CertEnroll.dll можно вызвать метод Export для объекта IX509PrivateKey для экспорта ключа в BSTR. Вы можете вызвать метод ExportPublicKey для экспорта части открытого ключа асимметричной пары ключей.

ReuseHardwareKeyIfUnableToGenNew

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

При использовании CertEnroll.dll можно вызвать метод InitializeFromCertificate для объекта IX509CertificateRequestPkcs10 и указать значение типа перечисления X509RequestInheritOptions для повторного использования существующего закрытого ключа.

UseExistingKeySet

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

При использовании CertEnroll.dll можно вызвать метод InitializeFromCertificate для объекта IX509CertificateRequestPkcs10 и указать значение типа перечисления X509RequestInheritOptions для повторного использования существующих закрытых и открытых ключей.

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