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

时间:2018-12-12 07:28:22

标签: .net pkcs#11

我们有一个安全的密钥库,它具有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);

1 个答案:

答案 0 :(得分:0)

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

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

但是,确切的代码取决于几件事,即

  • 证书的创建方式以及它是否实际包含私钥引用(在这种情况下,是,是从PFX导入的)
  • 密钥是否可导出(在这种情况下,是),并且
  • 私钥的类型(在本例中为RSA)。

但是,关于如何将其转换为您的库所需的属性,我无能为力,也许其他人可以在这里输入提示音。