【发布时间】:2016-08-08 20:40:06
【问题描述】:
我能够成功识别 .NET 胖客户端应用程序中的客户端证书,并且用户能够成功选择一个。
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
var fcollection = store.Certificates.Find(X509FindType.FindByApplicationPolicy, "1.3.6.1.5.5.7.3.2", true);
// other stuff where user selects one of them
现在我如何要求用户回答挑战(例如本例中的 PIN)?
我see 有一个 SignedXML.ComputeSignature() 类,但它需要一个字节流,我不确定它来自哪里(可能在 certificate.RawData[] 中?)。
我对获取实际密码并不像卡/密码匹配那样感兴趣。
编辑:
我尝试使用智能卡中的私钥(甚至从中加密),但系统没有要求我提供 PIN。
RSACryptoServiceProvider rsacsp = (RSACryptoServiceProvider)certificate.PrivateKey;
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt");
var encryptedData = RSAEncrypt(dataToEncrypt, rsacsp.ExportParameters(false), false);
【问题讨论】:
标签: c# x509certificate x509 x509certificate2