次の問題は、Android バージョン 4.3 および nexus 7 でテストされました。
Android バージョン 4.3 で KeyStore を使用する場合、ロック画面を [なし] に設定するとキーが削除されます。以前にロック画面が [なし] に設定されていたかどうかは関係ありません。
これを再現するには、
「sdk\samples\android-18\security\keystore\BasicAndroidKeyStore」にある提供されている Android サンプルを使用できます。
アプリケーションを実行した後:
- リスト項目
- 記号 (null にする必要があります)
- キーを生成する
- 署名する (何かに署名する)
- アプリケーションを閉じます
- 再開する
- 署名する (何かに署名する)
- 画面ロックを「なし」に設定します (以前はなかったとしても) (これは、設定 -> セキュリティ -> 画面セキュリティにあります)。
- アプリケーションに戻り、再度署名を試みます (null が返されます)
Android のソース コードを調べているときに、639 行目でキーストアがリセットされているように見えることがわかりました。参照: https://android.googlesource.com/platform/frameworks/base/+/52c489cd63cca0361f374f7cb392018fabfa8bcc/core/java/com/android/internal/widget/LockPatternUtils.java
なぜこれが起こるのか誰にも分かりますか?これを Android コミュニティに報告しました https://code.google.com/p/android/issues/detail?id=60176
編集: Android バージョン 4.2 では、いくつかのキーが保存されている場合、ロック画面を none に設定できませんでした。そうする前に、まず資格情報を削除する必要がありました。