2017-07-12 62 views
2

我们正在使用Pkcs11Interop库密码,我们定制&实现Pkcs11Interop代码样本为我们的项目在哪里Github文件Pkcs11Interop。在生产中,不是每天,但我们必须在CPU使用率达到最大时重新启动服务器,当我们获得连续(4或5次)CKR_ENCRYPTED_DATA_INVALID例外。这是什么原因?我们如何解决这个问题?任何想法将不胜感激。如果有人想要我可以分享我们的代码示例。感谢您的帮助。Pkcs11Interop CKR_ENCRYPTED_DATA_INVALID异常导致CPU使用率很高

2017-07-11 10:45:07,580错误HSM | 11.07.2017 10:45:07 | HSM解密 出错Net.Pkcs11Interop.Common.Pkcs11Exception:方法 C_Decrypt在 Net.Pkcs11Interop.HighLevelAPI41.Session.Decrypt返回CKR_ENCRYPTED_DATA_INVALID(机制机构, 对象句柄keyHandle,字节]的EncryptedData)在 Pkcs11HsmHost.DecryptInSession(会话会话,字符串值,Int32 keyIndex,Int32 retryCount)在安全\ Pkcs11HsmHost.cs中:第164行

回答

0

您很可能没有在miltithreaded环境中正确使用您的PKCS#11库。有关更多信息,请参见this answer

+0

嗨Jariq, 我们准备了一个示例项目,并在github中发布代码实例。但是我们发现一些奇怪的东西,Pkcs11库中没有AppType。 “ ”如果应用程序将同时从多个线程访问PKCS#11库,则应指定“AppType.MultiThreaded”作为“appType”参数的值.PKCS#11库将使用本地操作系统线程模型进行锁定。 “ –

+0

@MuratGündeş'AppType'枚举仅在当前主分支中可用,该分支尚未作为新的主要版本4.0发布。在旧版本中,这个设置使用'bool'类型,所以你需要将它设置为'true'。 – jariq

+0

另一个是GetSlotList方法。您的示例如下所示, 列表 slots = pkcs11.GetSlotList(SlotsType.WithTokenPresent); 但是我们没有发现任何关于AppType的SlotsType。当我们检查GetSlotList方法时,它会使用一个名为bool tokenPresent的参数。 –

相关问题