问题标签 [cryptoki]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
encryption - Pkcs#11 Session.encrypt CKR_OPERATION_NOT_INITIALIZED 使用 NCryptoki
我正在使用带有 NCryptoki dll 的 Pkcs#11 来使用我们的 HSM 并管理密钥。
为什么这段代码有时会给我错误 145 (CKR_OPERATION_NOT_INITIALIZED)?我试图避免它,但我仍然错过了一些东西......这个错误在调用 session.Encrypt() 时随机发生。
openSessionTupla 在哪里
hsm - Pkcs11Exception:方法 C_Initialize 返回 2147483907
我有一个简单的方法来使用 Pkcs11Interop 访问我的 HSM。
这是功能:
当它收到来自客户端的调用时,我在套接字服务器中调用了这个方法。
为了测试它,我创建了一个带有循环的小程序。在这个循环中,它每秒向使用 Pkcs11Interop 的服务器发送大约 3 个请求。
我们称这个测试程序为 tester.exe。如果我运行 tester.exe,一切似乎都正常。但是,当第一个 tester.exe 正在运行时,我尝试执行 tester.exe 的另一个实例,我得到了错误
Net.Pkcs11Interop.Common.Pkcs11Exception:方法 C_Initialize 返回 2147483907
在这个特定的行代码中:
为什么?哪个是问题?
更新:
应用类型是
并且设置初始化是:
更新2:
每次调用时,服务器实例上面的类并调用findTargetKeySValue方法。如果服务器收到并发请求,则 HSM 交互失败......但我快疯了,会话每次都不同,就像规范所说的那样。
更新3
我创建了这个简单的片段来测试多线程(findTargetKeySValue 在上面定义)并且它崩溃并显示消息“方法 C_Initialize 返回 2147483907”。此代码是供应商定义的,并且是CKR_CRYPTOKI_UNUSABLE。我将在接下来的测试中使用它。
更新4:
我更改了代码
我用 UPDATE3 中的代码调用它。当代码调用时,我得到 方法 C_FindObjectsFinal 返回 CKR_OPERATION_NOT_INITIALIZED
cryptography - 如果未提供包装密钥,`C_wrapKey` API 的预期行为是什么?
在我有开发人员的库中,将源密钥和CK_INVALID_HANDLE
(而不是包装密钥)传递给C_wrapKey
API,作为回报,我得到了成功。
我怀疑这种行为。这是正确的返回码吗?
c# - 使用 Pkcs11 库使用“cryptoki.dll”时出现登录错误
我使用 pkcs11 库在 c# 中使用 hsm 设备进行密封过程(不使用任何其他库)。错误消息是 Message ="CKR_USER_PIN_NOT_INITIALIZED " 怎么了?谢谢
c# - CreateObject PKCS#11 失败
我试图对此链接发表评论https://stackoverflow.com/a/39798597/448266,但由于声誉#而无法评论。
我已经尝试了示例并且运行良好,但是当我更改为任意值时,它返回异常消息:Net.Pkcs11Interop.Common.Pkcs11Exception:方法 C_CreateObject 返回 2147483968
我正在使用安全网 HSM SW。
下面是代码快照,我对键值稍作改动(如上)。
java - 为什么 Cryptoki.C_OpenSession 有时会与 HSM 断开连接
我创建了一个 web 服务 isAlive 来检查我是否可以使用 Cryptoki 创建与 HSM 软件的会话,我使用 SoapUI 自动执行我的 web 服务,所以我每 40 秒循环执行一次我的服务,它运行良好但经过一个数字在我重新启动我的应用程序之前,我无法连接到我的 HSM:这是我用来连接到 HSM 的代码部分
在执行我的服务期间,我查看日志,我发现 session.longValue() 每次调用都会增加:
这是日志:
我问是否有人知道 Cryptoki.C_OpenSession 的工作原理以及为什么我从 HSM 断开连接
python - 如何使用(已知)值“键标签”查询 HSM 插槽以获取值“键句柄”
需要使用已知值 HSM“slot #”、“key label”查询 HSM(在 Python 中)以获得(未知值)“key handle”。
有什么建议么?
pkcs#11 - pkcs#11 中 C_Decrypt 的正确行为是什么?
我正在使用C_Decrypt
该CKM_AES_CBC_PAD
机制。我知道我的 272 字节长的密文实际上应该解密为 256 字节,这意味着添加了一个完整的填充块。
我知道根据标准,在使用 NULL 输出缓冲区调用时C_Decrypt
,函数可能会返回比实际所需长度稍长的输出长度,特别是在使用填充时,这是可以理解的,因为函数不知道有多少填充字节位于最终块中,而不执行实际解密。
所以问题是,如果我知道我应该得到准确的 256 字节,例如在我上面解释的场景中CKR_BUFFER_TOO_SMALL
,尽管传递了 256 字节的缓冲区,我仍然得到错误是否有意义?(说清楚:我是在相应的输出缓冲区长度参数中表示这是输出缓冲区的长度,看C_Decrypt的参数来观察我的意思)
我在使用 Safenet Luna 设备时遇到了这种行为,但不知道该怎么做。是我的代码没有通过在输出缓冲区中传递 NULL 来首先查询长度的错误,还是 HSM/PKCS11 库端的错误?
我也许应该提到的另一件事是,当我提供 272 (256+16) 字节的输出缓冲区时,调用成功,我注意到我正在取回我预期的明文,还有填充块,这意味着 16 个最终字节值 0x10。但是,输出长度正确更新为 256,而不是272 - 这也证明我没有意外使用 CKM_AES_CBC 而不是 CKM_AES_CBC_PAD,我也怀疑过 :)
pkcs#11 - PKCS#11 中的 CK_CHAR 与 CK_BYTE?
PKCS#11 是否打算CK_CHAR
并CK_BYTE
具有相同的语义,或者CK_CHAR
旨在暗示可印刷性?
标准 PKCS#11 类型标头CK_CHAR
根据CK_BYTE
“字符”而不是“值”进行定义:
这是否保证每个CK_CHAR
(和CK_CHAR
s 数组)都在可打印范围内?