PKCS11 - 删除前缀 "SunPKCS11-"?

PKCS11 - Delete prefix "SunPKCS11-"?

可以删除前缀"SunPKCS11-"吗? 因为我总是得到一个名称为 "SunPKCS11-SmartCard" 而不是 "SmartCard" 的提供者。

这是我的代码:

String configName = "pkcs11.cfg";

Provider p = getInstalledProvider(providerName);
if (p == null)
{ 
    p = new sun.security.pkcs11.SunPKCS11(configName);
}

Security.addProvider(p);
return KeyStore.Builder.newInstance("PKCS11", p, loadProtection);

这是我的配置文件:

name = SmartCard
description = configuration file
library =C:\Program Files\Gemalto\Classic Client\BIN\gclib.dll

正如@EJP 所指出的,您无法更改提供者名称。当您创建提供者实例时,Java 将字符串 SunPKCS11-prefix 添加到您提供的名称前面。您可以查看有关它的 Java 文档 here

创建提供者实例后,建议使用 Provider.getName().

获取名称