PKCS #11:C_Login 是否在每个会话中完成?

use*_*351 2 security pkcs#11

我正在多线程应用程序中使用 PKCS#11 库。我希望每个 C_OpenSession 都必须执行 C_Login 才能处理敏感内容。但似乎当一个线程登录时,所有对 C_Login 的后续调用都返回 ALREADY_LOGGED 错误。该应用程序是多线程的,如果一个线程提供了 PIN,则为其他用户提供服务的所有其他线程都可以访问硬件内容。

这是由 PKCS#11 设计的,我可以依赖这种行为还是只是糟糕的实现?

jar*_*riq 6

C_LoginC_Logout函数在设计上会全局更改所有会话的状态(甚至那些尚未打开的会话)。有关更多详细信息,请参阅PKCS#11 v2.20 规范的第 6.7 章。