如何使用 JAVA PKCS11 IAIK 在 SOFTHSM2 中的密钥包装期间切换到 CKM_AES_KEY_WRAP_PAD
how to switch to CKM_AES_KEY_WRAP_PAD during key wrapping in SOFTHSM2 using JAVA PKCS11 IAIK
我正在使用 SoftHSM 在 Java 中生成等距密钥。目前,我需要使用 IAIK PKCS11 库 (JAVA) 中提供的 wrapKey 函数来包装私钥,而我在 cipher.getInstance()
中的密钥包装操作有问题。该应用程序抛出 CKR_MECHANISM_INVALID 并且网络上的所有现有信息似乎都没有就如何解决此问题给出合适的答案。
目前,这似乎是 IAIK 机制的问题,因为它目前正在使用 CKM_AES_CBC_PAD 密钥包装算法。
不清楚如何在 CKM_AES_CBC_PAD 和针对 SoftHSM github 页面上的问题创建的 github 问题中建议的问题之间切换,请参阅:https://github.com/opendnssec/SoftHSMv2/issues/229 and https://github.com/opendnssec/SoftHSMv2/issues/405。 =14=]
有两点很清楚,这是一个已知问题,作者建议使用 CKM_AES_KEY_WRAP、CKM_AES_KEY_WRAP_PAD、CKM_RSA_PKCS 或 CKM_RSA_PKCS_OAEP。但是,我无法使用建议的选项找到示例,并且在对库进行了数小时的挖掘之后,我认为在这里询问更容易。
初始问题: 我想在 keywrap
期间将机制从 CKM_AES_CBC_PAD 切换到 CKM_AES_KEY_WRAP
更新:
经过进一步调试,似乎这个问题可能比机制之间的切换更复杂。因此,我更愿意知道:
新问题:在JAVA
中使用上面列出的技术实现密钥包装的最佳方法是什么
我们发现它不适用于 Cipher 接口,因为默认情况下 IAIK 尝试使用软 hsm 不支持的方法。我们必须使用低级 IAIK 方法来包装和解包。在低级方法中,您可以像这样更改机制:
mechanism = CKM_AES_KEY_WRAP_PAD;
session.wrapKey(mechanism, secretKetObject, privateKeyObject);
我正在使用 SoftHSM 在 Java 中生成等距密钥。目前,我需要使用 IAIK PKCS11 库 (JAVA) 中提供的 wrapKey 函数来包装私钥,而我在 cipher.getInstance()
中的密钥包装操作有问题。该应用程序抛出 CKR_MECHANISM_INVALID 并且网络上的所有现有信息似乎都没有就如何解决此问题给出合适的答案。
目前,这似乎是 IAIK 机制的问题,因为它目前正在使用 CKM_AES_CBC_PAD 密钥包装算法。
不清楚如何在 CKM_AES_CBC_PAD 和针对 SoftHSM github 页面上的问题创建的 github 问题中建议的问题之间切换,请参阅:https://github.com/opendnssec/SoftHSMv2/issues/229 and https://github.com/opendnssec/SoftHSMv2/issues/405。 =14=]
有两点很清楚,这是一个已知问题,作者建议使用 CKM_AES_KEY_WRAP、CKM_AES_KEY_WRAP_PAD、CKM_RSA_PKCS 或 CKM_RSA_PKCS_OAEP。但是,我无法使用建议的选项找到示例,并且在对库进行了数小时的挖掘之后,我认为在这里询问更容易。
初始问题: 我想在 keywrap
期间将机制从 CKM_AES_CBC_PAD 切换到 CKM_AES_KEY_WRAP更新: 经过进一步调试,似乎这个问题可能比机制之间的切换更复杂。因此,我更愿意知道:
新问题:在JAVA
中使用上面列出的技术实现密钥包装的最佳方法是什么我们发现它不适用于 Cipher 接口,因为默认情况下 IAIK 尝试使用软 hsm 不支持的方法。我们必须使用低级 IAIK 方法来包装和解包。在低级方法中,您可以像这样更改机制:
mechanism = CKM_AES_KEY_WRAP_PAD;
session.wrapKey(mechanism, secretKetObject, privateKeyObject);