2017-09-23 1 views
0

ZielAndroid digitale Signatur mit Schlüsselspeicher Zertifikat

ich eine Java-Anwendung für Desktops entwickelt für digital PDF und XML-Dateien signieren x509 Zertifikaten in einem PC gespeichert durch den Zugriff auf Schlüsselspeicher (Windows-CH). Ich versuche, dieselbe Funktionalität in Android-Geräten (Telefon/Tablet) zu entwickeln, indem ich auf android keystore zugreife.

Problem

Die X509-Zertifikate können entweder in einem USB von SD-Karte in Einstellungen> Benutzerberechtigungen direkt Token oder installiert gespeichert werden. Ich denke, für USB-Token, Hersteller sollte Android OS unterstützen, sonst wird es nicht im Keystore angezeigt. Aber was ist mit dem Zertifikat, das ich in Benutzeranmeldeinformationen installiert habe. Ich bin nicht sicher, welcher Schlüsselspeicher in beiden Fällen zu verwenden ist.

Ich habe alle folgenden Keystores versucht, aber kein Glück.

KeyStore.getInstance(KeyStore.getDefaultType()); 
KeyStore.getInstance("AndroidCAStore"); // returns only trusted ca certificates not the certificates in User Credentials 
KeyStore.getInstance("AndroidKeyStore"); 
KeyStore.getInstance("BKS"); 

Jede Hilfe wird sehr geschätzt!

Dank

Antwort

1

Benutzeranmeldeinformationen auf dem Gerät installiert ist durch Android KeyChain verfügbar, nicht Android Keystor

https://developer.android.com/reference/android/security/KeyChain.html

Die KeyChain Klasse ermöglicht den Zugriff auf private Schlüssel und die entsprechenden Zertifikatketten in Credential Speichern .

Die Verwendung unterscheidet sich geringfügig von Windows-MY, da Sie den Benutzer bitten müssen, einen Alias ​​anzufordern. Verwenden Sie choosePrivateKeyAlias, um den Benutzer zur Unterzeichnung des Zertifikats und getPrivateKey zur Wiederherstellung des Schlüssels

aufzufordern
Verwandte Themen