如何在 C# 中从 ePass3003 usb 令牌导出私钥?

问题描述 投票:0回答:2

我有一个 USB 签名令牌,它包含带有 RSA 加密算法的公钥和私钥,我可以使用命令导出公钥文件

openssl x509 -pubkey -noout -in mystamp.cer > pubkey.txt

现在我需要在 c# 中从令牌 USB 中导出私钥这个公钥。 我也用这个代码

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);

        store.Open(OpenFlags.ReadOnly);

        X509Certificate2 cert = store.Certificates.Find(X509FindType.FindByThumbprint, "71faaced4d4ae3d81399faa61fbc13c56bce0638", false)[0];

        // Export the certificate including the private key.
        byte[] certBytes = cert.Export(X509ContentType.Pkcs12, "My Password Of Token");
        
        var privateKey = (System.Security.Cryptography.RSACryptoServiceProvider)cert.PrivateKey;
        var privateKeyString1= privateKey.ToXmlString(false);// I when change to true get an error
        var privateKeyString2= Convert.ToBase64String(certBytes);

但是当 privateKeyString1 或 privateKeyString2 传递给这个方法时 CryptoUtils.SignData() 我收到私钥格式错误。

c# .net cryptography x509certificate private-key
2个回答
2
投票

您不能从令牌(实际上是智能卡)中导出私钥。这是硬件安全模块令牌(或智能卡)的主要目的,即密钥材料不能离开硬件。但是,这并不妨碍您使用通过调用中间件 API 进行签名或加密操作的密钥。


-1
投票

我也有获取私钥或从 epass 3003 获取签名的问题。 如果你能解决你的问题,请帮助我。 谢谢。 电子邮件:[email protected]

© www.soinside.com 2019 - 2024. All rights reserved.