我能够在.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[]中?)。
我并没有真正感兴趣得到的实际别针与我的卡/别针匹配。
编辑:
我试着用智能卡上的私钥(甚至用它加密),但是我没有被问到我的密码。
RSACryptoServiceProvider rsacsp = (RSACryptoServiceProvider)certificate.PrivateKey;
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt");
var encryptedData = RSAEncrypt(dataToEncrypt, rsacsp.ExportParameters(false), false);发布于 2016-12-12 17:09:31
看起来,当我调用RSACryptoServiceProvidersa.Decrypt时,PIN请求就会发生。
下面是在控制台应用程序中非常适合我的示例代码:
http://blog.aggregatedintelligence.com/2010/02/encryptingdecrypting-using.html
在ASP.NET中要简单得多(除了所有的IIS配置麻烦/谜团.)。
发布于 2016-08-08 20:56:17
如果这是智能卡,则当您尝试使用证书的私钥时,将出现引脚提示。
您需要以某种方式使用证书,并验证结果。例如,您可以使用证书对某些内容进行签名。一旦该签名操作发生,就会出现引脚提示。
如果您真的不需要“使用”证书,只想验证它在那里并且用户知道引脚,那么您需要某种工作证明。证书可用于对挑战进行签名,远程服务器可以使用属于受信任根的密钥验证签名。记住,这是很难得到正确的,例如,确保你是不开放的重播攻击,等等。
https://stackoverflow.com/questions/38838137
复制相似问题