我有一个使用AndroidKeystore的应用程序,我希望在卸载我的应用程序时从Android密钥库中清除我的应用程序特定的密钥条目(因此,应用程序没有太多控制权来调用deleteEntry)。
我相信当我的应用程序被卸载时,android会清理,但我不知道如何确认。我在android-dev上找不到关于clenaup的更多信息。
任何人都可以确认或帮助我们确定在卸载该应用时是否会删除应用的密钥库条目?
答案 0 :(得分:0)
是的,密钥将从AndroidKeyStore中删除。为了确保其安全,可以使用创建密钥的方法(如果在KeyStore.getInstance()
调用后不存在该密钥),并验证在应用程序卸载时正在调用这些密钥。
private static void init() throws KeyStoreException {
keyStore = KeyStore.getInstance(ANDROID_KEY_STORE);
try {
keyStore = loadKeystore();
} catch (CertificateException | IOException | NoSuchAlgorithmException e) {
e.printStackTrace();
}
if (!keyStore.containsAlias(KEY_ALIAS)) {
Log.w(Constants.TAG, "GENERATING KEYS");
//KEY ABSENT, generate it
}else{
//EXISTING KEY
}
}
另请参见this reply
答案 1 :(得分:0)
是的,删除应用程序后,密钥库密钥会自动删除。具体而言,每当应用程序被删除时,PackageManagerService.removeKeyStoreDataIfNeeded被调用。这会调用KeyStoreService::clear_uid,它会查找并删除指定应用程序UID的所有键别名。