使用密钥库证书的Android数字签名

使用密钥库证书的Android数字签名,android,ssl,cryptography,digital-signature,keystore,Android,Ssl,Cryptography,Digital Signature,Keystore,目标 我已经为台式机开发了一个JAVA应用程序,通过访问密钥库(Windows MY),使用存储在PC中的x509证书对PDF和XML文件进行数字签名。我正试图通过访问Android密钥库,在Android设备(手机/平板电脑)中开发相同的功能 问题 X509证书可以存储在USB令牌中,也可以直接从设置>用户凭据中的SD卡安装。我认为对于USB令牌,制造商应该支持android操作系统,否则它将不会显示在密钥库中。但是我在用户凭据中安装的证书呢。我不确定在这两种情况下使用哪个密钥库 我尝试了以下

目标

我已经为台式机开发了一个JAVA应用程序,通过访问密钥库(Windows MY),使用存储在PC中的x509证书对PDF和XML文件进行数字签名。我正试图通过访问Android密钥库,在Android设备(手机/平板电脑)中开发相同的功能

问题

X509证书可以存储在USB令牌中,也可以直接从设置>用户凭据中的SD卡安装。我认为对于USB令牌,制造商应该支持android操作系统,否则它将不会显示在密钥库中。但是我在用户凭据中安装的证书呢。我不确定在这两种情况下使用哪个密钥库

我尝试了以下所有密钥库,但没有成功

 KeyStore.getInstance(KeyStore.getDefaultType());
 KeyStore.getInstance("AndroidCAStore"); // returns only trusted ca certificates not the certificates in User Credentials
 KeyStore.getInstance("AndroidKeyStore");
 KeyStore.getInstance("BKS");
非常感谢您的帮助


谢谢

安装在设备上的用户凭据可通过Android KeyChain而不是Android KeyStore获得

KeyChain类提供对凭据存储中私钥及其相应证书链的访问

该用法与Windows MY略有不同,因为您需要要求用户请求别名。使用
选择PrivateKeyAlias
​​提示用户输入签名证书并
getPrivateKey
恢复密钥