Использование pkcs15-crypt для подписи с помощью pivcard, но это медленно. Хотите попробовать CNG, чтобы использовать закрытый ключ карты вместо - PullRequest
0 голосов
/ 10 апреля 2020

Я сейчас работаю над приложением, которое читает pivcards. В настоящее время я использую pkcs15-crypt для подписи данных закрытым ключом карты, но это кажется медленным. Я пытался использовать Microsoft CSP, который работает быстрее, но иногда я получаю всплывающее окно смарт-карты, которое запрашивает пин-код. Кажется, это происходит с перерывами, что, я полагаю, просто означает, что я еще недостаточно хорошо это понимаю. В CSP я использовал

char[] PINS = PIN.ToCharArray();
foreach (char a in PINS)
{ 
ss.AppendChar(a);
}

для сохранения пин-кода, а затем я использую

csp.Flags = CspProviderFlags.UseDefaultKeyContainer;
csp.KeyPassword = ss; //supply the pin
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);//seems to talk to the card here
byte[] data = File.ReadAllBytes(hashFile);
sig = rsa.SignHash(data, "SHA1");
Console.WriteLine("Signature : " + BitConverter.ToString(sig));//lets see it
bool verified = rsa.VerifyHash(data, CryptoConfig.MapNameToOID("SHA1"), sig);//verify it
Console.WriteLine("Verified : " + verified);

Но иногда я получаю всплывающее сообщение Windows Security Smart Card, которое просит вас выбрать устройство смарт-карты. Но иногда я не получаю это всплывающее окно, и оно работает нормально. Я не уверен, что у меня плохой читатель или что происходит. Поэтому я подумал, что могу попробовать последнюю и самую лучшую поддерживаемую версию от Microsoft.

Я надеялся попробовать более новый код типа CNG, чтобы прочитать смарт-карту и использовать закрытый ключ для подписи некоторых данных. Я еще не видел никаких полезных примеров.

i.e. 
using (var signingAlgo = new RSACng(key))
{
  byte[] signed = signingAlgo.SignHash( etc.....)
  return signed;
}

Есть ли у кого-нибудь полезное предложение о том, что может быть не так с кодом CSP, или несколько примеров того, как сделать то же самое с более новым кодом CNG? ? Заранее спасибо.

...