Java 调用 pkcs#11的dll库,获取到的KeyStore 的size为0,是什么原因?
天蓬老师
天蓬老师 2017-04-18 09:32:51
0
0
772

插入USB-KEY, 想通过HttpClient来向服务器发送https请求。现在厂商已提供的USB-KEY的驱动程序PKCS#11接口,于是通过java程序访问USB-KEY。

代码如下

// 厂商提供的UKEY型号名称 private static final String UKEY_PROVIDER = "SJK1217"; // UKEY驱动lib库文件 private static final String UKEY_LIB = "E:/cer/System32/SJK1217Pkcs.dll"; // UKEY的PIN码 private static final String UKEY_PIN = "1234"; private static String keystorePath = "E:/cer/hxx_sign.keystore"; private static String keystorePass = "12345678"; public static void main(String[] args) throws Exception { String pkcs11config = "name = " + UKEY_PROVIDER + "\nlibrary = "+ UKEY_LIB + "\n"; byte[] pkcs11configbytes = pkcs11config.getBytes(); ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11configbytes); SunPKCS11 ps = new sun.security.pkcs11.SunPKCS11(configStream); System.out.println(ps.toString()); Security.addProvider(ps); KeyStore.CallbackHandlerProtection pinHandler = new KeyStore.CallbackHandlerProtection(new TextCallbackHandler()); KeyStore ks = KeyStore.Builder.newInstance("PKCS11", ps, pinHandler) .getKeyStore(); ks.load(null, UKEY_PIN.toCharArray()); printKeyStoreInfo(ks); } // 打印 KeyStore中的信息 public static void printKeyStoreInfo(KeyStore keystore) throws Exception { System.out.println("Provider : " + keystore.getProvider().getName()); System.out.println("Type : " + keystore.getType()); System.out.println("Size : " + keystore.size()); Enumeration en = keystore.aliases(); while (en.hasMoreElements()) { String alias = (String) en.nextElement(); System.out.println("Alias: " + alias); X509Certificate cert = (X509Certificate) keystore .getCertificate(alias); System.out.println("Certificate: " + cert); PrivateKey privateKey = (PrivateKey) keystore.getKey(alias, null); System.out.println("Private key: " + privateKey); } }

打印的结果

SunPKCS11-SJK1217 version 1.8
Provider : SunPKCS11-SJK1217
Type : PKCS11
Size : 0

获取到的KeyStore 的size为0,是什么原因? 国内这方面的资料好难搜索得到,有这方面的大牛 能帮忙解答一下么?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous (0)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!