1

请您向我建议更多有关更改提供商设置的提示吗?

我可以在 PKCS11KeyStoreKeyingDataProvider.java 中看到这一点:

    public class PKCS11KeyStoreKeyingDataProvider extends KeyStoreKeyingDataProvider
{
    /**
     *
     * @param nativeLibraryPath the path for the native library of the specific PKCS#11 provider
     * @param providerName this string is concatenated with the prefix SunPKCS11- to produce this provider instance's name
     * @param certificateSelector the selector of signing certificate
     * @param keyStorePasswordProvider the provider of the keystore loading password (may be {@code null})
     * @param entryPasswordProvider the provider of entry passwords (may be {@code null})
     * @param returnFullChain indicates of the full certificate chain should be returned, if available
     * @throws KeyStoreException
     */
    public PKCS11KeyStoreKeyingDataProvider(
            final String nativeLibraryPath,
            final String providerName,
            SigningCertSelector certificateSelector,
            KeyStorePasswordProvider keyStorePasswordProvider,
            KeyEntryPasswordProvider entryPasswordProvider,
            boolean returnFullChain) throws KeyStoreException
    {

在我的 SignerTTest.java 中:

PKCS11KeyStoreKeyingDataProvider ptccKeyingDataProv = new PKCS11KeyStoreKeyingDataProvider
                ("D:\\pteidpkcs11.dll", 
                "pteidpkcs11",
                new FirstCertificateSelector(), null, null, false);

但我不明白,通常我下载适当的.DLL所以这里库pteidpkcs11.dll位于D:(所以在java中我放了“\\”:“D:”\\“pteidpkcs11.dll”)

在我输入 .dll 的名称后,这里将 pteidpkcs11 作为参数。

“new FirstCertificateSelector()”之后就是选择keystore列表的第一个证书,不是吗?

第一个 null 是密钥库提供者的密码,不是吗?

第二个 null 是证书的密码,不是吗?

而 returnFullChain 究竟有什么作用呢?

而且我想了解有关如何配置提供程序的信息,因为在我搜索期间目前还不清楚。

谢谢,

威廉。

4

1 回答 1

1

new FirstCertificateSelector() 就是选择keystore列表的第一个证书,不是吗?

是的。您可以传入该SigningCertSelector接口的任何其他实现。

第一个 null 是密钥库提供者的密码,不是吗?第二个 null 是证书的密码,不是吗?

是的。它为空,因为特定的 PKCS#11 提供程序处理密钥存储条目的保护(它是带有 PIN 的智能卡)。

而 returnFullChain 究竟有什么作用呢?

密钥库中的条目可能包含密钥和具有完整证书链的相关证书。此参数控制该getSigningCertificateChain方法是返回完整链还是仅返回叶证书。

适当的配置和 DLL 将取决于您使用的 PKCS11 提供程序。在那次测试中,我使用的是葡萄牙公民卡和智能卡读卡器。请注意,这PKCS11KeyStoreKeyingDataProvider只是基于 sun 的 PKCS11 提供程序的 java 密钥存储的适配器。

于 2012-09-05T16:59:40.613 回答