如何使用KeyStore对数据进行签名?
如果Windows KeyStore中存储有密钥,则使用KeyStore keyStore = KeyStore.getInstance("Windows-MY");,我可以访问Windows,然后获取给定别名的密钥引用。或者我可以使用keyStoreSpi对象上的反射来访问它的条目、X509Certificate对象和PrivateKey对象,并使用它对一些数据进行签名。此方法只允许获取密钥引用,然后在签名时使用它。
Windows KeyStore中的证书后面有密钥存储提供程序(KSPs)。我使用的是自定义密钥存储提供者(不是由我制作的,不知道它是如何工作的,它能做什么或者不做什么)。
现在,是否可以使用其证书在Windows中引用但通过KSP提供给KeyStore KeyStore的密钥进行签名?(密钥本身存储在HSM中)
编辑:修改了术语,这样文本就有意义了。
发布于 2020-01-30 08:26:35
好的,我发现Java 8中的Java SunMSCAPI提供者(我在问题中没有提到)不支持KSP (也称为CNG和CAPI2)。它只支持Crypto (CAPI)。我想签署的钥匙是由CNG供应商提供的。因此,Java 8不支持它,但是Java 13 (https://bugs.openjdk.java.net/browse/JDK-8026953)应该支持它。
https://stackoverflow.com/questions/59945856
复制相似问题