IObjectId::InitializeFromAlgorithmName 方法 (certenroll.h)

InitializeFromAlgorithmName 方法从算法名称或对象标识符初始化对象。 提供此方法主要用于从加密 API 初始化对象:下一代 (CNG) 算法名称。 但是,可以指定任何 OID 名称。 此方法已启用 Web。

语法

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)之间的歧义。 还必须在 GroupId 参数中指定XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID

[in] AlgFlags

AlgorithmFlags 枚举值。 这可以是以下值之一:

  • AlgorithmFlagsNone
  • AlgorithmFlagsWrap
如果为 GroupId 参数指定XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID,则可以使用 AlgorithmFlags 枚举搜索可用于包装密钥的 OID。 例如,如果指定位长度为 128,则可以检索有关 AES128wrap 算法的信息 (请参阅“备注”部分) ,将 strAlgorithmName 参数设置为 AES,并指定 AlgorithmFlagsWrap

[in] strAlgorithmName

包含名称的 BSTR 变量。 可以指定一个名称,或一个 OID,采用点点十进制格式。 方法验证格式是否与 ASN.1 X.208 标准一致。 有关 CNG 算法名称的详细信息,请参阅 CNG 算法标识符

返回值

如果函数成功,该函数将返回 S_OK

如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括(但并不限于)下表中的项。 有关常见错误代码的列表,请参阅 常见 HRESULT 值

返回代码/值 说明
CERTSRV_E_PROPERTY_EMPTY
找不到 OID 信息。
CRYPT_E_UNKNOWN_ALGO
无法识别算法名称。
HRESULT_FROM_WIN32 (ERROR_ALREADY_INITIALIZED)
对象已初始化。

注解

可以使用 GroupId 参数的上限 16 位来指定接受可变位长度的算法的密钥大小。 例如,若要从 192 位 AES 算法初始化 IObjectId 对象,请为 strAlgorithmName 参数指定“AES”,将剩余长度移 16,并对移位长度和 GroupId 值执行按位 OR 组合。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 certenroll.h
DLL CertEnroll.dll

另请参阅

IObjectId