Tag: pkcs#11

从没有PIN /密码的PKCS11智能卡获取证书

摘要:当通过OpenSC在PKCS11上使用JCA时,在提取证书时会请求PIN。 我有一个需要使用智能卡签名的应用程序。 OpenSC支持智能卡,因此我使用Java内置的pkcs11包装提供程序来使用它。 出于function原因,我需要在没有请求PIN的情况下获取卡中的证书。 如果用户最终签名,那么当然需要PIN。 我看到我可以从命令行执行此操作而不提供PIN: pkcs11-tool –module C:\WINDOWS\system32\opensc-pkcs11.dll -r -a 50-MDS_Signature -y cert -o p.cer Using slot 1 with a present token (0x1) 到现在为止还挺好。 Oracle的文档明确指出“构建器将根据需要使用先前配置的回调处理程序提示输入密码”( http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html#登录 )。 但是,我的代码总是请求引脚作为子,因为我调用KeyStore ks0 = ksbuilder0.getKeyStore(); 即使只提取公共信息(如证书)。 遵循代码的摘录: private static final String PKCS11_LIB = “C:\\WINDOWS\\system32\\opensc-pkcs11.dll”; private static final String NAME = “OpenSCpkcs11”; private static final String SLOT = “1”; […]

坏填充exception – pkcs11中的RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING

我的应用程序正在访问e-Token以解密来自服务器的响应 来自服务器的会话密钥使用以下方式加密: – RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING 我正在使用SunPKCS11 Provider来实现对加密令牌的访问。 每当我尝试使用上述机制解密时,即使用RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING,我得到: – **javax.crypto.BadPaddingException: doFinal() failed at sun.security.pkcs11.P11RSACipher.implDoFinal(P11RSACipher.java:328) at sun.security.pkcs11.P11RSACipher.engineDoFinal(P11RSACipher.java:353) at javax.crypto.Cipher.doFinal(DashoA13*..) 以下是我的代码: – private static final String TRANSFORMATION = “RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING”; private static final String SECURITY_PROVIDER = “BC”; private static final String DIGEST_ALGORITHM = “SHA-256”; private static final String MASKING_FUNCTION = “MGF1”; […]

Java 9中的SunPKCS11提供程序

在Java 8之前,SunPKCS11提供程序的加载方式如下: Provider provider = new sun.security.pkcs11.SunPKCS11 (new ByteArrayInputStream (configFile.getBytes ())); Security.addProvider (provider); configFile是一个带有配置参数的String。 因此,如果应用程序需要使用多个连接的智能卡,它可以创建多个提供程序。 要访问每个提供程序,使用的名称是“SunPKCS11-”,后跟我们在配置中指示的名称。 在Java 8中,在JDK中删除了sun.security.pkcs11.SunPKCS11类。 所以,我不得不通过反思来编程前一个调用。 Java 9中PKCS#11提供程序的操作看起来非常不同: SunPKCS11构造函数已更改为空构造函数。 配置由“configure”方法加载,因此必须将它放在磁盘上的文件中,我不能再通过流将其加载到字符串。 如果我们尝试使用reflection,则会出现以下警告: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by PruebaTarjeta (file:/C:/temp/pkcs11java9/classes/) to constructor sun.security.pkcs11.SunPKCS11() WARNING: Please consider reporting this to the maintainers of PruebaTarjeta WARNING: Use –illegal-access=warn […]

带有opensc pkcs#11提供程序的java keytool仅适用于启用调试选项

我在ubuntu 11.10上使用OpenJDK运行最新的opensc 0.12.2(java版本“1.6.0_22”) 我可以阅读我的智能卡(飞天ePass PKI) pkcs15-tool –dump 现在我尝试使用带有keytool的智能卡: keytool -providerClass sun.security.pkcs11.SunPKCS11 \ -providerArg /etc/opensc/opensc-java.cfg \ -keystore NONE -storetype PKCS11 -list 这会导致错误: keytool error: java.security.KeyStoreException: PKCS11 not found java.security.KeyStoreException: PKCS11 not found at java.security.KeyStore.getInstance(KeyStore.java:603) at sun.security.tools.KeyTool.doCommands(KeyTool.java:621) at sun.security.tools.KeyTool.run(KeyTool.java:194) at sun.security.tools.KeyTool.main(KeyTool.java:188) Caused by: java.security.NoSuchAlgorithmException: PKCS11 KeyStore not available at sun.security.jca.GetInstance.getInstance(GetInstance.java:159) at java.security.Security.getImpl(Security.java:696) at java.security.KeyStore.getInstance(KeyStore.java:600) … 3 more […]