java.безопасность.KeyStoreException: Не удалось удалить запись: псевдоним в KeyStore.deleteEntry(строка)

#java #android #keystore

#java #Android #хранилище ключей

Вопрос:

Я вижу, что эти исключения возникают для моих производственных пользователей, но я не могу их воспроизвести. Это вызывает множество других ошибок, которые заканчиваются неустранимым исключением и сбоем приложения.

 KeyStore keyStore = KeyStore.getInstance("keystorename");
keyStore.load(null);
keyStore.deleteEntry("aliasname");//throws java.security.KeyStoreException: Failed to delete entry: aliasname
  

Есть ли способ воспроизвести это, вручную повредив хранилище ключей или что-то подобное?

Вот (слегка отредактированная / запутанная) трассировка стека:

 com.myapp.exception.WrappedException: java.security.KeyStoreException: Failed to delete entry: aliasname 
at com.myapp.ClassOne.someErrorReportingMethod(ClassOne.java:161) 
at com.myapp.ClassOne.exitMethod(ClassOne.java:135) 
at com.myapp.ClassThree.someOtherMethod(ClassThree.java:51) 
at com.myapp.ClassTwo$ClassTwoImpl.something(ClassTwo.java:313) 
at com.myapp.ClassTwo$ClassTwoImpl.removeKey(ClassTwo.java:281) 
at com.myapp.ClassTwo$ClassTwoImpl.someOtherThing_aroundBody2(ClassTwo.java:225) 
at com.myapp.ClassTwo$ClassTwoImpl$AjcClosure3.run(ClassTwo.java:1) 
at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) 
at com.myapp.ClassThree.someOtherMethod(ClassThree.java:47) 
at com.myapp.ClassTwo$ClassTwoImpl.initCipher(ClassTwo.java:225) 
at com.myapp.ClassTwo.initCipher(ClassTwo.java:57) 
at com.myapp.ClassFour.confirmFingerprint_aroundBody0(ClassFour.java:68) 
at com.myapp.ClassFour$AjcClosure1.run(ClassFour.java:1) 
at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) 
at com.myapp.ClassThree.someOtherMethod(ClassThree.java:47) 
at com.myapp.ClassFour.confirmFingerprint(ClassFour.java:33) 
at com.myapp.ClassFive.showFingerprintConfirmDialog(ClassFive.java:485) 
at com.myapp.ClassFive.unrelatedThing(ClassFive.java:352) 
at com.myapp.ClassFive.access$800(ClassFive.java:70) 
at com.myapp.ClassFive$4$1.onSubscribe(ClassFive.java:638) 
at io.reactivex.internal.operators.completable.CompletableSubscribeOn.subscribeActual(CompletableSubscribeOn.java:36) 
at io.reactivex.Completable.subscribe(Completable.java:2185) 
at com.myapp.app.login.AnotherUnrelatedClass.start(AnotherUnrelatedClass.java:55) 
at com.myapp.ClassFive$4.onComplete(ClassFive.java:635) 
at com.myapp.AbstractCompletableTask.onComplete(AbstractCompletableTask.java:34) 
at com.myapp.SomeManager$1.onComplete(SomeManager.java:101) 
at com.myapp.SomeManager$2.onComplete(SomeManager.java:200) 
at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:287) 
at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) 
at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:255) 
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:119) 
at android.os.Handler.handleCallback(Handler.java:789) 
at android.os.Handler.dispatchMessage(Handler.java:98) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6944) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) Caused by: java.security.KeyStoreException: Failed to delete entry: aliasname 
at android.security.keystore.AndroidKeyStoreSpi.engineDeleteEntry(AndroidKeyStoreSpi.java:911) 
at java.security.KeyStore.deleteEntry(KeyStore.java:1257) 
at com.myapp.ClassTwo$ClassTwoImpl.removeKey(ClassTwo.java:279) ... 33 more
  

Комментарии:

1. есть ли трассировка стека для этого исключения?

2. @Naya только что добавила его

3. Все равно не помогает)) Я ожидал увидеть причину здесь

4. Существует ли псевдоним?

5. неясно, существует ли псевдоним. я проследил все вплоть до исключения RemoteException, вызванного в KeyStore, которое, как я полагаю, проверялось на наличие псевдонима. я попробую имитировать это