首页 > 解决方案 > 如何在 Mozilla NSSSDB PKCS11 中获取密钥条目的明文?

问题描述

我有一个 mozilla NSSDB PKCS11,它包括三件事之一。证书、密钥和 SecretKeyEntry。我想知道别名为“StoreXKey”的 SecretKeyEntry 的内容。首先,是否可以提取 SecretKeyEntry 的明文?由于链接,我似乎是这样认为的:https ://technosock.blogspot.com/2007/12/token-knowledge.html和https://docs.oracle.com/javase/8/docs/api/java/security /KeyStore.SecretKeyEntry.html#getSecretKey

第一个链接提供了一种方法(对我不起作用),第二个链接为我们提供了一些方法,即 .getEncoded() 据说可以在 SecretKeyEntry 上调用以获取字节数组信息。

到目前为止,这是我的代码,所有结果在使用 getEncoded 消息时都遇到了空指针异常。我确信 SecretKeyEntry 存在于 NSSDB 中。

String configFile = "config.cfg";
Provider provider = Security.getProvider("SunPKCS11"); // I am confused on how to incorporate the config file as well.
/* provider = provider.configure(configFile); // Does not work */
Security.addProvider(provider);

String defaultPIN = "--.--.--.--.----.-...-.--";
try{
   KeyStore ks = KeyStore.getInstance("PKCS11");
   ks.load(null, defaultPIN.toCharArray());
   KeyStore.SecretKeyEntry skEntry = (KeyStore.SecretKeyEntry) ks.getEntry("StoreXKey",null); // Do I need a password protector here?
   System.out.println(new String(skEntry.getSecretKey().getEncoded())); <-- Error is thrown here. 
}catch (Exception e){
   e.printStackTrace();
}

任何帮助/建议或链接表示赞赏。

标签: javakeymozillapkcs#11

解决方案


推荐阅读