问题标签 [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 回答
1601 浏览

c# - 使用 SoftHSM 2.2.0 (ECDSA with SHA256) C# .net 从 Pkcs11Interop 为 CKM_ECDSA_SHA256 签署 PDF

我正在尝试使用Pkcs11Interop .net 库签署 Pdf 文档。我需要使用ECDSA 加密算法和SHA256 哈希算法。我正在使用SoftHSM 2.2.0来存储私钥。

我找到了一个 CKM 枚举CKM_ECDSA_SHA256,我在创建用于调用 Session 的 Sign 方法的类机制对象时传递了它。

我从“Signdata”方法得到响应,但是,在打开签名后生成的 Pdf 文件时,会出现错误“Signature Invalid”。这是 Signdata 方法调用的代码片段。我在代码中没有收到任何错误或异常,但是,我提到的 pdf 显示签名无效。

  • 请告诉我 SoftHSM 2.2.0 是否支持带有 SHA256 的 ECDSA_P256?
  • 如果没有,那么有什么方法可以启用支持吗?
  • 如果它确实支持,请帮助我如何解决这个问题?
  • 看起来它希望我通过 ECDSA_Param,有没有人有任何代码片段来传递 ECDSA_Param
0 投票
2 回答
2396 浏览

pkcs#11 - 异常“CKR_FUNCTION_NOT_SUPPORTED”,PKCS11Interop 与 OpenSC

我正在尝试将 PKCS11Interop 库与最新版本(0.16)的 OpenSC(opensc-pkcs11.dll)一起使用。我尝试过来自 Yubico 4、NitroKey Pro/Start、Fetian ePass2003 三个供应商的 USB 令牌,但无法使用 PKCS11Interop 库中的大部分功能。对于库提供的大多数函数,我收到Net.Pkcs11Interop.Common.Pkcs11Exception: 'Method C_SignRecoverInit returned CKR_FUNCTION_NOT_SUPPORTED'。抛出此异常的函数是 C_GetOperationState、C_SetOperationState、C_GenerateKey、C_GenerateKeyPair、加密/解密函数、签名/验证函数等。

奇怪的是,GetSlotInfo、GetMechanisms、Login、Session 等功能运行良好。

我花了很多时间试图在这里找到解决方案。如果有人可以提供帮助,将不胜感激。

0 投票
1 回答
1828 浏览

c# - C#中PKCS11Interop库的线程安全使用

我正在使用 PKCS11Interop 在 HSM 中执行密钥管理操作。我使用的 HSM 是 Thales PCI Express。下面是包装在 HSM 中执行的所有操作的类:

如果您注意到我正在使用两个对象来应用锁。对象 _syncLockPkcs11 用于在 m_Pkcs11 上实现单例,而 _syncLockHSMLogin 用于将 Login 同步到 HSM。早些时候,当我没有安装这些锁时,我曾经从 HSM、CKU_USER_ALREADY_LOGGED_IN 和 CKR_FUNCTION_FAILED 收到以下错误。我根据此链接和第6.7.7 节使用文档会话的示例中提供的信息实施了此更改,即在此处输入图像描述

在我目前的实施中,我没有收到任何这些错误,但想在这里了解专家意见。

我的一些问题是:

以这种方式使用 m_Pkcs11 是否可以,即不在整个流程生命周期中处理它?

可以对 HSM 登录方法应用锁定吗?我之所以问,是因为我没有找到任何暗示这一点的在线参考资料。

有没有办法以更好的方式实现这一目标?

0 投票
1 回答
167 浏览

c# - 我应该使用哪一个:Pkcs11interop 中的 session vs _session

我面临与该线程所有者相同的问题: Threadsafe usage of PKCS11Interop library in C#

在这里,您提供了一个解决方案并给出了https://github.com/jariq/Pkcs11Interop.PDF/blob/1.3.0/src/Pkcs11Interop.PDF/Pkcs11RsaSignature.cs的链接

我有一个小小的困惑,在这堂课中我看到了很多你正在使用的事件

陈述。但是在其中,您使用的是预定义的变量_session,而不是使用 this session。但是在Sign您使用 thissession而不是_session. 请帮忙,在这种情况下我应该使用sessionand _session

0 投票
1 回答
292 浏览

c# - 在 pkcs11interop 项目代码中,我看到了 CKM_ECDSA_SHA256,但在我添加到我的解决方案的 nuget 包中它不存在

我需要将 ECDSA 与 sha256 与 hsm 一起使用,并且我将 c# 与http://www.pkcs11interop.net/包装器一起使用。Github 代码有 CKM_ECDSA_SHA256,但没有 3.3.0 版本,即使该版本是 1 月 24 日的最新版本,并且枚举是更早添加的。

为什么我无法访问枚举?我可以在签名之前使用 CKM_ECDSA 和哈希,但这会破坏使用 hsm 来提高速度的目的。

0 投票
1 回答
948 浏览

c# - Pkcs11Interop CKR_ENCRYPTED_DATA_INVALID 异常导致 CPU 使用率高

我们正在使用Pkcs11Interop库进行密码学,我们Pkcs11Interop为我们的项目定制和实施代码示例,其中Pkcs11Interop文档在Github中。在生产中,不是每天,但当我们收到连续(4 或 5 次)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 在 Pkcs11HsmHost.DecryptInSession(会话会话,字符串值,Int32 Security\Pkcs11HsmHost.cs:line 164 中的 keyIndex,Int32 retryCount)

0 投票
1 回答
417 浏览

c# - 是否可以使用 PKCS11INTEROP 库与没有 PIN 的 HSM 连接?

我们正在使用 PKCS11INTEROP 库来连接 NShield HSM。要在 HSM 中执行任何操作(生成/加密/解密),您需要先获取插槽,然后使用 PIN 登录到插槽。这一切都按预期工作。

NShield HSM 允许通过模块保护和令牌保护两种方式保护您的密钥。NShield 客户端软件为您提供了一个实用程序 KSAFE 来管理 HSM 中的密钥。如果您正在使用 KSAFE 实用程序并且您想通过模块保护来保护您的密钥,那么您不必提供 PIN,而如果密钥受令牌保护的保护,则 PIN 是强制性的。

所以我的问题是:我们可以在不需要 PIN 的情况下使用 PKCS11INTEROP 在 HSM 中执行操作,当然它是基于模块的保护?

0 投票
1 回答
348 浏览

pkcs#11 - Keys created from one HSM client are not available for use in another client

I am building a solution to store keys and encrypt\decrypt data using an HSM. I am using a network HSM manufactured by Thales. The thing I have noticed is that a key generated in client machine 1 is inaccessible in client machine 2. The key can only be used to encrypt\decrypt data in client machine 1. Is there any thing that needs to be changed in my implementation or is there something to be changed in net-HSM configuration to enable this. I am using PKCS11Iterop library for all the key management operations.

I am using token based OCS protection.

0 投票
1 回答
523 浏览

pkcs#11 - 使用 pkcs11interop 创建 ECDSA 密钥对时出错

我正在连接到支持 secp256r1 的金雅拓 HSM。我有以下代码使用 Pkcs11interop 创建 ECDSA 密钥对。我正在使用 BouncyCastle NistNamedCurves 和 X962Parameters 获取 paramsBytes。

HSM 不断返回 CKR_ATTRIBUTE_TYPE_INVALID。我是 ECDSA 的新手,所以我可能错过了一些东西。有任何想法吗?

0 投票
1 回答
742 浏览

cryptography - 以编程方式将 HSM 客户端生成的密钥与 RFS 服务器同步

我正在使用 PKCS11Interop 在 HSM 中执行密钥管理操作。我使用的 HSM 是网络 HSM,Thales N-Shield。以下是我的设置的详细信息:

1-HSM

1- RFS 服务器

3- 客户

我的软件应用程序是分布式的,并且托管在 3 个客户端上。密钥将在其中一个客户端中生成,并可被其他客户端中的应用程序组件使用。

但是,我注意到除非两个客户端都执行 rfs-sync,否则其他客户端计算机无法访问在一台客户端计算机中生成的密钥。

问题:有没有办法使用一些 PKCS11Interop API 将客户端密钥与 RFS 同步?如果否,那么我可以通过什么方式在 RFS 和客户端计算机之间同步密钥。

我知道可以使用 C# 代码执行 exe,但看起来不像干净的 apporach。