通过 PKCS#11 以编程方式将 X509Certificate2 中的密钥添加到密钥库

Programmatically add key from X509Certificate2 via PKCS#11 to a key store

我们有一个具有 PKCS#11 接口的安全密钥库。我们使用 PKCS#11 Interop Library for .NET 访问它上面的密钥。我们还需要从证书中导入密钥。如何通过我们的 PKCS#11 接口将 X509Certificate2 的私钥导入我们的密钥库?

var key = x509Certificate2.PrivateKey;

var attributes = new List<ObjectAttribute>();

// What to do here? How to fill in the key into those attributes?

pkcs11Session.CreateObject(attributes);

如果您的问题是关于如何从 X509Certificate2.PrivateKey 中实际提取私钥详细信息,这里有一个 PFX 文件的示例:

var certificate = new X509Certificate2(@"self-signed.pfx", "password", X509KeyStorageFlags.Exportable);
var rsaPrivateKey = certificate.GetRSAPrivateKey();
var parameters = rsaPrivateKey.ExportParameters(true);

然而,确切的代码取决于一些事情,即

  • 如何创建证书以及它是否实际包含私钥引用(在本例中,是的,从 PFX 导入),
  • 密钥是否可导出(在本例中为是),以及
  • 私钥类型(在本例中为 RSA)。

不过,关于如何将其转换为您的库所需的属性,我无法帮助您,也许其他人可以在这里插话。