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


Метод 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 для поиска идентификатора, который можно использовать для упаковки ключа. Например, можно получить сведения о алгоритме AES128wrap, если указать битовую длину 128 (см. раздел "Примечания"), задайте для параметра strAlgorithmName значение AES и укажите AlgorithmFlagsWrap.

[in] strAlgorithmName

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

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

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

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

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

Замечания

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

Требования

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

См. также

IObjectId