【问题标题】:Android digital signature using keystore certificate使用密钥库证书的 Android 数字签名
【发布时间】:2017-09-23 10:44:13
【问题描述】:

瞄准

我开发了一个用于桌面的 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 ssl cryptography digital-signature keystore


    【解决方案1】:

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

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

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

    用法与 Windows-MY 略有不同,因为您需要要求用户请求别名。使用choosePrivateKeyAlias提示用户提供签名证书,使用getPrivateKey恢复密钥

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      相关资源
      最近更新 更多