DevicePolicyManager.GenerateKeyPair 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| GenerateKeyPair(ComponentName, String, KeyGenParameterSpec, IdAttestationFlags) |
此 API 可由以下方式呼叫以產生新的私鑰/公鑰對:ul<li 裝置>擁有者</li><li>個人資料擁有者</li><li>委派憑證安裝程式</li><>li 憑證管理應用程式</li><li>持有<權限>的應用程式/li |
| GenerateKeyPair(String, KeyGenParameterSpec, IdAttestationFlags, KeyChainManagerKeyPairScope) |
產生一對新的私鑰/公鑰,並指定範圍。 |
GenerateKeyPair(ComponentName, String, KeyGenParameterSpec, IdAttestationFlags)
此 API 可由以下方式呼叫以產生新的私鑰/公鑰對:ul<li 裝置>擁有者</li><li>個人資料擁有者</li><li>委派憑證安裝程式</li><>li 憑證管理應用程式</li><li>持有<權限>的應用程式/liandroid.Manifest.permission#MANAGE_DEVICE_POLICY_CERTIFICATES</ul><>若裝置支援透過安全硬體產生金鑰,此方法有助於在鑰匙鏈中建立從未離開安全硬體的金鑰。
[Android.Runtime.Register("generateKeyPair", "(Landroid/content/ComponentName;Ljava/lang/String;Landroid/security/keystore/KeyGenParameterSpec;I)Landroid/security/AttestedKeyPair;", "GetGenerateKeyPair_Landroid_content_ComponentName_Ljava_lang_String_Landroid_security_keystore_KeyGenParameterSpec_IHandler", ApiSince=28)]
[Android.Runtime.RequiresPermission("android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES")]
public virtual Android.Security.AttestedKeyPair? GenerateKeyPair(Android.Content.ComponentName? admin, string algorithm, Android.Security.Keystore.KeyGenParameterSpec keySpec, Android.App.Admin.IdAttestationFlags idAttestationFlags);
[<Android.Runtime.Register("generateKeyPair", "(Landroid/content/ComponentName;Ljava/lang/String;Landroid/security/keystore/KeyGenParameterSpec;I)Landroid/security/AttestedKeyPair;", "GetGenerateKeyPair_Landroid_content_ComponentName_Ljava_lang_String_Landroid_security_keystore_KeyGenParameterSpec_IHandler", ApiSince=28)>]
[<Android.Runtime.RequiresPermission("android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES")>]
abstract member GenerateKeyPair : Android.Content.ComponentName * string * Android.Security.Keystore.KeyGenParameterSpec * Android.App.Admin.IdAttestationFlags -> Android.Security.AttestedKeyPair
override this.GenerateKeyPair : Android.Content.ComponentName * string * Android.Security.Keystore.KeyGenParameterSpec * Android.App.Admin.IdAttestationFlags -> Android.Security.AttestedKeyPair
參數
- admin
- ComponentName
這個請求是與哪個 DeviceAdminReceiver 裝置相關聯,或者 null 如果呼叫者不是裝置管理員。
- algorithm
- String
密鑰產生演算法,請參見 java.security.KeyPairGenerator。
- keySpec
- KeyGenParameterSpec
要產生的金鑰規格,請參見 java.security.KeyPairGenerator。
- idAttestationFlags
- IdAttestationFlags
一個位元遮罩,記錄應包含在認證記錄中應包含的識別碼(ID_TYPE_BASE_INFO、、ID_TYPE_SERIALID_TYPE_IMEI和ID_TYPE_MEID),以及ID_TYPE_INDIVIDUAL_ATTESTATION是否應使用個別認證憑證簽署。
<若證明記錄中不需裝置識別,且使用批次證明證書,則應通過 P>0 測試。
<p> 若指定任何旗標,則必須包含證明挑戰。keySpec
傳回
若金鑰產生成功,則為非空 AttestedKeyPair ,否則為空。
- 屬性
備註
此 API 可由以下方式呼叫以產生新的私鑰/公鑰對:ul<li 裝置>擁有者</li><li>個人資料擁有者</li><li>委派憑證安裝程式</li><>li 憑證管理應用程式</li><li>持有<權限>的應用程式/liandroid.Manifest.permission#MANAGE_DEVICE_POLICY_CERTIFICATES</ul><>若裝置支援透過安全硬體產生金鑰,此方法有助於在鑰匙鏈中建立從未離開安全硬體的金鑰。 存取金鑰的方式與 中 #installKeyPair相同。
從 Android android.os.Build.VERSION_CODES#S版本,憑證管理應用程式可以呼叫這個 API。 若憑證管理應用程式呼叫,元件名稱必須為 null。 請注意,憑證管理應用程式只能在未受管理的裝置上安裝。
由於此方法可能需要數秒鐘完成,因此應僅從工作執行緒呼叫。 此方法在從主執行緒呼叫時回傳 null 。
此方法並非執行緒安全,若同時從多個執行緒呼叫,會導致行為未定義。 如果呼叫執行緒在調用過程中被中斷,最終會終止並返回 null。
注意:若提供的 alias 是現有別名,該應用程式先前獲得的存取該別名金鑰及憑證的授權將被撤銷。
驗證:為了啟用認證,請透過 設定一個認證挑戰keySpecKeyGenParameterSpec.Builder#setAttestationChallenge。 透過為參數指定旗標 idAttestationFlags ,可以請求將裝置的唯一身份納入證明記錄中。
可在認證記錄中包含特定識別碼,並可使用個別認證證書來簽署認證記錄。 要了解裝置是否支援這些功能,請參考 #isDeviceIdAttestationSupported() 和 #isUniqueDeviceAttestationSupported()。
裝置擁有者、個人資料擁有者、其委派憑證安裝程式及憑證管理應用程式,皆可申請 #ID_TYPE_BASE_INFO 在認證記錄中包含一般裝置資訊,包括製造商、型號、品牌、裝置及產品。 只有裝置擁有者、組織擁有裝置或關聯使用者的設定檔擁有者,以及其委託的憑證安裝者可以使用 #ID_TYPE_SERIAL, #ID_TYPE_IMEI 並且 #ID_TYPE_MEID 在裝置支援的情況下,請求認證唯一裝置識別碼(序號、IMEI 和 MEID), #isDeviceIdAttestationSupported()如 。 此外,裝置擁有者、組織擁有裝置的設定檔擁有者及其委派憑證安裝者,也可以透過指定 #ID_TYPE_INDIVIDUAL_ATTESTATION 旗標(若裝置支援,請參見 #isUniqueDeviceAttestationSupported())請求以個別認證憑證簽署該紀錄。
若 、 #ID_TYPE_SERIAL 和 #ID_TYPE_IMEI 中任一#ID_TYPE_MEID為 ,則隱含假設 也#ID_TYPE_BASE_INFO為 。
只有在 StrongBox 中完成金鑰產生時,才能請求使用 #ID_TYPE_INDIVIDUAL_ATTESTATION 認證。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
GenerateKeyPair(String, KeyGenParameterSpec, IdAttestationFlags, KeyChainManagerKeyPairScope)
產生一對新的私鑰/公鑰,並指定範圍。
[Android.Runtime.Register("generateKeyPair", "(Ljava/lang/String;Landroid/security/keystore/KeyGenParameterSpec;II)Landroid/security/AttestedKeyPair;", "GetGenerateKeyPair_Ljava_lang_String_Landroid_security_keystore_KeyGenParameterSpec_IIHandler", ApiSince=37)]
[Android.Runtime.RequiresPermission("android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES")]
public virtual Android.Security.AttestedKeyPair GenerateKeyPair(string algorithm, Android.Security.Keystore.KeyGenParameterSpec keySpec, Android.App.Admin.IdAttestationFlags idAttestationFlags, Android.Security.KeyChainManagerKeyPairScope scope);
[<Android.Runtime.Register("generateKeyPair", "(Ljava/lang/String;Landroid/security/keystore/KeyGenParameterSpec;II)Landroid/security/AttestedKeyPair;", "GetGenerateKeyPair_Ljava_lang_String_Landroid_security_keystore_KeyGenParameterSpec_IIHandler", ApiSince=37)>]
[<Android.Runtime.RequiresPermission("android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES")>]
abstract member GenerateKeyPair : string * Android.Security.Keystore.KeyGenParameterSpec * Android.App.Admin.IdAttestationFlags * Android.Security.KeyChainManagerKeyPairScope -> Android.Security.AttestedKeyPair
override this.GenerateKeyPair : string * Android.Security.Keystore.KeyGenParameterSpec * Android.App.Admin.IdAttestationFlags * Android.Security.KeyChainManagerKeyPairScope -> Android.Security.AttestedKeyPair
參數
- algorithm
- String
密鑰產生演算法,請參見 java.security.KeyPairGenerator。
- keySpec
- KeyGenParameterSpec
要產生的金鑰規格,請參見 java.security.KeyPairGenerator。
- idAttestationFlags
- IdAttestationFlags
一個應包含在證明記錄中識別碼的位元遮罩。 詳情請參見基礎方法。
金鑰對的作用範圍: KeyChainManager#KEYPAIR_SCOPE_USER 或 KeyChainManager#KEYPAIR_SCOPE_DEVICE。
傳回
非零 AttestedKeyPair。
- 屬性