如何使用Windows KeyStore对数据进行签名?
如果 Windows 密钥存储中存储了密钥,则使用KeyStore keyStore = KeyStore.getInstance("Windows-MY");
可以访问 Windows 密钥库,然后获取给定别名的密钥引用。或者,我可以对keyStoreSpi
对象使用反射来访问其条目、X509Certificate 对象和 PrivateKey 对象,并使用它来对一些数据进行签名。 此方法只是允许获取密钥引用,然后在签名时使用它。
在Windows KeyStore中的证书后面有密钥存储提供程序(KSP(。我使用的是自定义密钥存储提供程序(不是我做的,不知道它是如何工作的,它做什么或不做什么(。
现在,是否可以使用证书在 Windows 密钥库中引用但通过 KSP 提供给 Windows 密钥库的密钥进行签名?(密钥本身存储在 HSM 中(
编辑:更正了术语,使文本有意义。
好的,我发现Java 8中的JavaSunMSCAPI提供程序(我在问题中没有提到(不支持KSP(也称为CNG和CAPI2(。它仅支持加密API(CAPI(。我要用于签名的密钥由 CNG 提供商提供。所以它在Java 8中不受支持,但应该被Java 13支持(https://bugs.openjdk.java.net/browse/JDK-8026953(