问题标签 [pkcs11interop]

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.

0 投票
2 回答
115 浏览

c# - 无法读取 ProgramData 的最新更改

我有一个使用Process.Start(). 我调用的可执行文件是一个第三方程序,用于更新ProgramData. 一旦我的程序中的文件夹ProgramData得到更新,我的程序中的下一组行会尝试读取最新的更改。

我注意到即使在执行可执行文件后也无法读取最新的更改,但是当我从头开始再次运行我的程序时,我可以看到更改被正确读取。我假设这与AppDomain在执行期间无法看到更改有关。

无论如何我可以在这里工作吗?

在下面的方法内部代码中,HSMTransactionHandler如果发生带有消息的异常HSM_ENCRYPTION_KEY_NOT_FOUND,则我通过调用方法执行exe UpdateFromRFS,然后HSMTransactionHandler递归调用。exe 的执行获得了所需的资源,但代码没有读取它。如果我在当前程序执行期间运行另一个程序,第二个程序读取资源没有任何问题。ProgramData这让我想到一个进程或应用程序域是否可以看到文件夹启动后发生的更改?

只是为了让每个人都知道我正在使用库,它是围绕本机 dll 构建PKCS11Interop的托管包装器。.net我也不确定使用本机 dll 是否会导致这种情况。

任何帮助将不胜感激。

下面是代码:

编辑 1:这是对我有用的修改后的代码,请注意,这里最重要的是在文件中将变量设置CKNFAST_ASSUME_SINGLE_PROCESS为 0cknfastrc

编辑 2:我检查并发现它甚至没有设置CKNFAST_ASSUME_SINGLE_PROCESS为 0 就可以工作,所以可能只需要处理 pkcs11 对象并重新初始化它

0 投票
0 回答
201 浏览

cryptography - PKCS11 - SHA1HMAC 产生不同的 SHA1HMAC 结果

我正在按照以下步骤使用 SHA1 算法使用两个不同的 API 计算 HMAC,并且两个输出都不匹配。

1) 我首先通过BouncyCastle API使用 SHA1 算法为给定的数据和密钥计算 HMAC 。

2) 我们使用PKCS11 API(Pkcs11Interop)为 HSM(Thales) 中的数据和密钥计算 HMAC 。

当我们比较 1 和 2 的结果时,数据不匹配。

充气城堡代码:

PKCS11 代码:

有人可以帮忙吗?

0 投票
2 回答
2317 浏览

c# - 如何将存储在 HSM 中的私钥转换为 C# 中的 SignedXml.SigningKey

我正在尝试使用存储在 HSM 中的证书来实现 XML 签名的一些演示。

我从这个链接中找到了一些有趣的例子: Sign XML Document with X509Certificate2并将其修改为在带有 PKCS11Interop 包装器的 HSM 中使用证书和密钥。

但是任何人都可以给我一个建议或示例,将 ObjectHandle privateKey 从 HSM 转换为 SignedXML.SigningKey

在上述外部链接的示例中。他们使用结合了私钥的证书。然后他们可以像这样使用。

但是我使用的证书里面没有私钥的内容。请给我一些建议。

0 投票
1 回答
1379 浏览

key - Pkcs11Interop 从 HSM 读取键值

我正在尝试使用 Pkcs11Interop 从 HSM 中提取密钥的值。我知道,密钥必须留在 HSM 中,但我需要它,所以...

我已经用 NCryptoki 做了,我也想用 Pkcs11Interop 做

我试过这段代码:

但是 plainKeyValue 是全零,但是,你可以想象,这不是真的。

那么,我怎样才能达到我的目标?

0 投票
1 回答
2424 浏览

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

0 投票
1 回答
670 浏览

c# - 有没有办法从 windows csp 获取 pkcs#11 库路径

早些时候我使用 certenroll 来列出 csp 并生成 CSR,现在我想使用 pkcs11Interop 来做同样的事情,但是要初始化 pkcs11Interop,我们必须提供 pkcs#11 库的路径有没有办法为可用的 csp 或 pkcs 获取该路径#11 图书馆。

0 投票
1 回答
466 浏览

c# - pkcs11 互操作 GetSlotList(SlotsType.WithTokenPresent); 返回空列表

我正在使用 pkcs11 互操作库来列出这样的可用设备

它工作正常,但是当我在 Web 应用程序中使用相同的代码或运行它循环时,即使设备已连接,我也会将插槽计数为 0。

0 投票
1 回答
1344 浏览

c# - 如何使用充气城堡在 CSR 中添加自定义 OID 和值

我正在尝试像这样在 CSR 中添加自定义 OID

一切都可以编译并且工作正常,但是当我解码和检查 CSR 时,自定义 Oid 名称的值从 ASN.1 信息中的 1.53.4.65 更改为其他值 2.13.4.64

这是添加自定义 OID 值的正确方法吗

ASN.1 序列

0 投票
0 回答
1333 浏览

c# - 使用 PKCS11 互操作对 Xml 进行签名

我想使用 pkcs11Interop 库对 XML 进行签名,我正在使用以下代码对 XML 进行签名,但签名验证失败。

当我System.Security.Cryptography.Xml.SignedXml用来签名时,它通过了签名验证。

我的方法生成的 DigestValue 和 SignedXml 相同,但签名不同,即使我使用相同的证书进行签名。

遵循的步骤

  1. 生成 XmlDsigC14NTransform 并创建 sha1 哈希。
  2. 使用 pkcs11interop 对哈希进行签名。

代码

0 投票
0 回答
585 浏览

c# - 如何管理网络故障并避免 PKCS11Interop 出错

在 Safenet HSM 上使用 PKCS11Interop,我收到此错误

“方法 C_OpenSession 返回 2147484548”

在我的文档中,错误是 CKR_SMS_ERROR:“来自安全消息传递系统的一般错误 - 可能是由 HSM 故障或网络故障引起的”。

这证实了在缺乏连接时发生的问题。

问题是当这种情况发生时,服务无法在连接恢复时恢复通信,直到我手动重新启动管理 HSM 访问的服务

当服务启动时,我称之为:

当我必须使用 HSM 时,我会调用类似:

而且,当我由于缺乏连接而导致通信失败时,我会调用一个函数来重置连接并尝试更改插槽:

但是,最后一个片段没有按预期工作:它尝试更改插槽,但始终无法与 HSM 通信(在网络关闭后)。如果我手动重新启动服务(当连接恢复时),它就像魅力一样工作。所以,当我尝试关闭_session并打开一个新的时,我确定我在SwitchSlot 函数中做错了什么。

您在这里看到任何错误/误解吗?