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


Метод IObjectId::InitializeFromAlgorithmName (certenroll.h)

Метод InitializeFromAlgorithmName инициализирует объект из имени алгоритма или идентификатора объекта. Этот метод предоставляется в основном для инициализации объекта из API шифрования: имя алгоритма следующего поколения (CNG). Однако можно указать любое имя OID. Этот метод включен через Интернет.

Синтаксис

HRESULT InitializeFromAlgorithmName(
  [in] ObjectIdGroupId        GroupId,
  [in] ObjectIdPublicKeyFlags KeyFlags,
  [in] AlgorithmFlags         AlgFlags,
  [in] BSTR                   strAlgorithmName
);

Параметры

[in] GroupId

Значение перечисления ObjectIdGroupId , указывающее группу OID для поиска. Это может быть любая из следующих групп алгоритмов:

  • XCN_CRYPT_HASH_ALG_OID_GROUP_ID
  • XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID
  • XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • XCN_CRYPT_SIGN_ALG_OID_GROUP_ID
Кроме того, можно также указать группы, которые не содержат алгоритмы шифрования:
  • XCN_CRYPT_RDN_ATTR_OID_GROUP_ID
  • XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID
  • XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID
  • XCN_CRYPT_POLICY_OID_GROUP_ID
  • XCN_CRYPT_TEMPLATE_OID_GROUP_ID

[in] KeyFlags

Значение перечисления ObjectIdPublicKeyFlags , указывающее, следует ли искать алгоритм подписывания или шифрования. Может иметь одно из следующих значений:

  • XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
  • XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Вы можете использовать любое из значений для устранения неоднозначности алгоритмов, таких как RSA, которые можно использовать как для шифрования, так и для подписи сообщений. Необходимо также указать XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID в параметре GroupId .

[in] AlgFlags

Значение перечисления AlgorithmFlags . Может иметь одно из следующих значений:

  • AlgorithmFlagsNone
  • AlgorithmFlagsWrap
Если вы укажете XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID для параметра GroupId , можно использовать перечисление AlgorithmFlags для поиска объекта OID, который можно использовать для упаковки ключа. Например, можно получить сведения об алгоритме AES128wrap, если указать битовую длину 128 (см. раздел Примечания), задать для параметра strAlgorithmName значение AES и указать AlgorithmFlagsWrap.

[in] strAlgorithmName

Переменная BSTR , содержащая имя. Имя или OID можно указать в десятичном формате с точками. Метод проверяет, соответствует ли формат стандарту ASN.1 X.208. Дополнительные сведения об именах алгоритмов CNG см. в разделе Идентификаторы алгоритмов CNG.

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

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

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

Возвращаемый код/значение Описание
CERTSRV_E_PROPERTY_EMPTY
Не удалось найти сведения об идентификаторе идентификатора.
CRYPT_E_UNKNOWN_ALGO
Имя алгоритма не распознано.
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
Объект уже инициализирован.

Комментарии

Можно использовать верхние 16 бит параметра GroupId , чтобы указать размер ключа для алгоритмов, которые принимают переменную битовую длину. Например, чтобы инициализировать объект IObjectId из 192-разрядного алгоритма AES, укажите "AES" для параметра strAlgorithmName , сместите длину влево на 16 и выполните побитовое сочетание или для смещенной длины бита и значения GroupId .

Требования

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

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

IObjectId