Tag: pkcs#11

在C#中使用PKCS11Interop库的Threadsafe

我正在使用PKCS11Interop在HSM中执行密钥管理操作。 我使用的HSM是Thales PCI Express。 以下是包装在HSM中执行的所有操作的类: public sealed class KeyStoreOperations { private KeyStoreContext m_keyStoreContext; private static Pkcs11 m_Pkcs11; private static readonly object _syncLockPkcs11 = new object(); private static readonly object _syncLockHSMLogin = new object(); public KeyStoreOperations(KeyStoreContext keyStoreContext) { m_keyStoreContext = keyStoreContext; InitializePkcs11Object(); } /// /// Generates key in the key store /// /// /// public void […]

如何使用Pkcs11Interop与NitroKey HSM来获取与EC的共享密钥

我买了一台NitroKey HSM,并在其上创建了一个EC。 现在我想得出一个共同的秘密。 我找到了Pkcs11Interop ,这似乎是这项工作的正确工具,但处理不清楚。 我们非常感谢代码片段或工作项目的链接。

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

我正在尝试使用存储在HSM中的证书来实现XML签名的一些演示。 我在这个链接中找到了一个有趣的例子: 使用X509Certificate2签署XML文档并使用PKCS11Interop包装器将其修改为使用HSM内部的证书和密钥。 但任何人都可以给我一个建议或示例, 将ObjectHandle privateKey从HSM转换为SignedXML.SigningKey private static void SignXmlWithCertificate(XmlDocument xmlDoc, X509Certificate2 cert, Session session, String alias) { SignedXml signedXml = new SignedXml(xmlDoc); List template = new List(); template.Add(new ObjectAttribute(CKA.CKA_CLASS, CKO.CKO_PRIVATE_KEY)); template.Add(new ObjectAttribute(CKA.CKA_KEY_TYPE, CKK.CKK_RSA)); template.Add(new ObjectAttribute(CKA.CKA_LABEL, alias)); List foundObjects = session.FindAllObjects(template); ObjectHandle privateKey = foundObjects[0]; signedXml.SigningKey = privateKey; //Here is where I stuck. 在上面的外部链接示例中。 他们使用组合私钥的证书。 […]