如何使用 Android 的应用程序数据中的私钥在计算机上签名

How to signing on computer with private key in Android's app data

我正在使用 SoftHSMv2 作为 Android 和 PC 的 cryptoki 库。我想使用 Android 设备替换 USB 令牌并使用存储在我的 Android 应用程序数据中的证书和密钥对在 PC 上签名。
只需将 Android 中的证书导入 PC 的证书库就足以让 PKCS#11 执行签名了吗?
我是否需要修改 PKCS#11 库以将数据推送到 Android 或任何其他修改?

由于您没有指定您针对的是 PC 上的哪个操作系统,我假设 Windows 其中之一。

Windows 本身不支持 PKCS#11 标准,它有自己的接口 CryptoAPI。所以,如果你想在 Microsoft Outlook 等程序中执行签名操作,你需要实现一个 Cryptographic Service Provider (CSP) 或 Key Storage Provider (KSP). Or if your android device represents in system as a smart card you could implement Smart Card Minidriver。示意图将是这样的:

Windows -> YOUR_CSP (or YOUR_KSP) -> pkcs11 -> anroid device

Windows -> Microsoft Base Smart Card Crypto Provider 
(or Microsoft Smart Card Key Storage Provider) -> SCMinidriver -> pkcs11 ->android device 

Here可以获取SDK

另外你应该知道,并不是所有的程序都支持KSP(只有CSP)。

请注意,Windows 7 及以下版本要求 CSP dll must be signed 具有代码签名证书。