Android KeyChain: реагируйте на изменения - PullRequest
1 голос
/ 19 марта 2019

Я использую Android KeyChain для хранения закрытого ключа / сертификатов из приложения.

Теперь, если пользователь (по каким-либо причинам) удаляет запись в KeyChainвручную из системных настроек приложение должно действовать в соответствии с этим событием.

Мне удалось получить соответствующую трансляцию ACTION_KEYCHAIN_CHANGED, когда удаляется запись в генерируемой мной цепочке ключей.

Однако яне знаю, как программно проверить, действительно ли трансляция была вызвана удалением моей записи в KeyChain или удалением какой-либо другой записи.Конечно, я хочу, чтобы приложение реагировало только в том случае, если оно действительно является «своей» записью.

Кто-нибудь может проверить, существует ли еще конкретная запись в KeyChain (например, с псевдонимом = "xyz")?

РЕДАКТИРОВАТЬ 1:
Я уже пытался проверить, существует ли псевдоним, выполнив следующие действия, но не смог найти его там.Он попытался набрать «AndroidCAStore» (содержащий все сертификаты ЦС системы и пользователя, но ничего из KeyChain) и набрать «AndroidKeyStore» (без записей)

Может быть, мне нужно использовать хранилище ключей другого типа?

val ks = KeyStore.getInstance("AndroidCAStore")
ks.load(null, null)
val containsAlias = ks.containsAlias("alias_of_the_entry_in_KeyChain")

РЕДАКТИРОВАТЬ 2: ОК, по крайней мере, в соответствии с этим веб-сайтом Samsung Knox :

Пользовательские приложения, напрямую обращающиеся к Android Keystore, не имеют доступа кучетные данные, хранящиеся в Android KeyChain, и, следовательно, должны использовать Android KeyChain API для доступа к этим учетным данным.

Однако я не нашел способа проверить, существует ли запись / псевдоним в KeyChain черезAPI KeyChain.

...