Sun PKCS#11 Wrapper如何调试CKR_TEMPLATE_INCONSISTENT

时间:2018-02-13 12:50:53

标签: java pkcs#11

有没有办法调试导致Sun PKCS#11包装器异常的原因?:

sun.security.pkcs11.wrapper.PKCS11Exception: CKR_TEMPLATE_INCONSISTENT

我想知道PKCS#11对象的哪个属性不一致并修复它。

2 个答案:

答案 0 :(得分:1)

确切地找到缺少或错误提供的属性是非常棘手的。解决这个问题的唯一方法是通过反复试验。由于令牌抛出了这个异常,因此它不会被记录,这使得解决起来非常困难。

我建议您首先要更好地了解您正在处理的令牌类型。这将使您更好地了解它期望的对象模板类型。

例如,如果令牌只允许您创建sensitive个密钥,那么如果您将属性值设置为false,则令牌会抱怨。因此,您必须尝试组合属性,看看它是否成功创建了对象。

你可以做的另一件事是,如果令牌带有自己的sdk或工具,可以与令牌交互并创建对象,使用他们的sdk /工具创建测试对象,然后使用PKCS#11接口提取对象并查看它具有的模板。您可以将其用作基本模板。

如果它没有,你可以尝试创建一个以最小模板开头的对象,其中包含所需的值,如:

  • Id(某些随机值)
  • 标签(别名)
  • 令牌(真正推荐)
  • 敏感(真正推荐)
  • 算法/机制(CKM_RSA_PKCS_KEY_PAIR_GEN / CKM_AES_KEY_GEN)
  • 密钥类型(CKK_RSA / CKK_AES)
  • 价值长度(可选)
  • 班级(可选)

答案 1 :(得分:0)

您可以使用pkcs11日志记录包装器。 例如:https://github.com/Pkcs11Interop/pkcs11-logger

您需要一些环境变量:

  • PKCS11_LOGGER_LIBRARY_PATH - >真正的pkcs11库的路径
  • PKCS11_LOGGER_LOG_FILE_PATH - >日志文件的路径
  • PKCS11_LOGGER_FLAGS - > flags(请参阅pkcs11-logger README.md

文件)