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


Метод IX509SignatureInformation::GetSignatureAlgorithm (certenroll.h)

Метод GetSignatureAlgorithm извлекает идентификатор объекта (OID) алгоритма подписывания.

Синтаксис

HRESULT GetSignatureAlgorithm(
  [in]  VARIANT_BOOL Pkcs7Signature,
  [in]  VARIANT_BOOL SignatureKey,
  [out] IObjectId    **ppValue
);

Параметры

[in] Pkcs7Signature

Переменная VARIANT_BOOL , указывающая, будет ли алгоритм использоваться для подписания запроса сертификата PKCS #7 или CMC.

[in] SignatureKey

Переменная VARIANT_BOOL , указывающая, является ли алгоритм, используемый только для подписывания, предпочтительнее, если OID алгоритма связан с несколькими целями. Например, XCN_OID_RSA_RSA (1.2.840.113549.1.1) можно использовать как для подписывания, так и для обмена ключами.

[out] ppValue

Адрес переменной, получающей указатель на интерфейс IObjectId , представляющий OID алгоритма.

Возвращаемое значение

Если функция завершается успешно, функция возвращает S_OK.

Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Возвращаемый код/значение Описание
CERTSRV_E_PROPERTY_EMPTY
OID алгоритма хэширования или свойство NullSigned не задано , но не удается найти OID алгоритма подписи.
CRYPT_E_UNKNOWN_ALGO
Не удалось найти алгоритм объединенной сигнатуры.

Комментарии

Этот метод выполняет поиск кэшированного алгоритма подписывания, который соответствует входным параметрам. Если ни один из них не найден, метод использует входные параметры, а также значения, присвоенные различным свойствам IX509SignatureInformation , как указано в следующем списке.

  • Pkcs7Signature = true, NullSigned = true

    Этот случай представляет собой запрос сертификата PKCS #7 со знаком NULL. Метод возвращает XCN_OID_PKIX_NO_SIGNATURE (1.3.6.1.5.5.7.6.2) OID.

  • Pkcs7Signature = true, NullSigned = false

    В этом случае извлекается дискретный алгоритм сигнатуры OID для запроса PKCS #7, который не имеет нулевой подписи. Дискретная сигнатура требует установки свойств HashAlgorithm и PublicKeyAlgorithm . В особом случае, когда алгоритм открытого ключа XCN_OID_X957_DSA, а алгоритм хэширования не XCN_OID_OIWSEC_sha1, полученный идентификатор XCN_OID_X957_SHA1DSA алгоритма сигнатуры (1.2.840.10040.4.3).

  • Pkcs7Signature = false, NullSigned = false, AlternateSignatureAlgorithm = true

    В этом случае извлекается дискретный OID алгоритма сигнатуры для запроса PKCS #10 и кодируется идентификатор хэш-алгоритма в свойстве Parameters . Необходимо задать свойства HashAlgorithm и PublicKeyAlgorithm .

  • Pkcs7Signature = false, NullSigned = false, AlternateSignatureAlgorithm = false

    В этом случае извлекается дискретный идентификатор алгоритма подписи для запроса PKCS #7. Необходимо задать свойства HashAlgorithm и PublicKeyAlgorithm .

Требования

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

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

IX509SignatureInformation