2017-09-22 100 views
6

Daha sonra seçili özel anahtarı almaya çalıştığımda bu hatayı alıyorum. ekranı döndürmek.android.security.KeyChainException: java.lang.IllegalStateException: uid <> istenen takma adıma erişme iznine sahip değil.

this question here,'u gördüm, bu da "uygulama yüklendikten sonra en az bir kez" choosePrivateKeyAlias() çağrılması gerektiğini önerir. Bu durumda, ekran döndürme gerçekleşmeden önce uygulama başlatıldığında dahil olmak üzere sayısız kez çağrıldı - bu yüzden neden yeni bir uygulama olarak kabul edilir? Bir şekilde değişiyor mu? fark olmasıdır -

PrivateKey privateKey = KeyChain.getPrivateKey(getBaseContext(), alias);

Sadece diğer soru getCertificateChain yerine getPrivateKey daha kullanıyordum fark ettik: Burada

çağrısı?

+1

Kullandığınız "takma adın" aslında [alias callback] tarafından döndürülen dizedir (https://developer.android.com/reference/android/security/KeyChainAliasCallback.html#alias (java. lang.String))? Bu aramanın etrafına daha fazla kod gönderebilir misiniz? –

+0

Haklıydın, doğru şekilde saklamamıştım ve yanlış takma adı arıyordum. Bu öneriyi bir cevap olarak verirseniz, doğru olarak işaretleyeceğim. –

cevap

4

Gelecek uğruna ve yorumumu tekrarlamak için sorun, takma adın düzgün bir şekilde depolanmadığı ve bu nedenle bu çağrının tamamen alakasız veya varolmayan özel bir anahtara erişmeye çalışmasıydı.