Share via


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 位長度為 128 (請參閱一) 節,請將 strAlgorithmName 參數設定為 AES,並指定 AlgorithmFlagsWrap,您可以擷取 AES128wrap 演演算法的相關信息。

[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)
對象已經初始化。

備註

您可以使用 GroupId 參數的上限 16 位來指定接受可變位長度之演算法的金鑰大小。 例如,若要從 192 位 AES 演算法初始化 IObjectId 物件,請為 strAlgorithmName 參數指定 “AES”,將長度向左移 16,然後在移位位長度和 GroupId 值上執行位 OR 組合。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 certenroll.h
Dll CertEnroll.dll

另請參閱

IObjectId