.NET 씩 클라이언트 응용 프로그램에서 클라이언트 인증서를 성공적으로 식별 할 수 있으며 사용자가 성공적으로 클라이언트 인증서를 선택할 수 있습니다.X509Certificate2 요청 PIN
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)?
I 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);
작동하지 않는 것 같습니다. 위의 코드는 개인 키가 임의의 텍스트를 암호화하는 데 사용되는 편집에 추가되었지만 PIN을 묻지는 않습니다. – micahhoover
비밀 키/인증서가 핀으로 보호되어있는 것처럼 들리지는 않습니다. 실제로 암호화되었거나 서명 한 경우입니다. – vcsjones
아마도 ... MVC에서 SslFlags = "SslNegotationCertificate"일 때 내 PIN을 요청하고 올바른 PIN이 아닌 한 작동하지 않습니다. 따라서 두꺼운 클라이언트 응용 프로그램에서도이 기능을 사용할 수 있어야합니다. – micahhoover