Подпись ИЭМК с помощью VipNet CSP: различия между версиями
Перейти к навигации
Перейти к поиску
Dmitriy (обсуждение | вклад) Нет описания правки Метка: visualeditor |
Dmitriy (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
Поиск нужного сертификата. Ищем по конкретному СНИЛСу и действующий на текущую дату. | Поиск нужного сертификата. Ищем по конкретному СНИЛСу и действующий на текущую дату. | ||
< | <pre>X509Certificate2 CertItog = find_certificate_();</pre> | ||
<pre> public static X509Certificate2 find_certificate_() | |||
{ | |||
X509Store store = new X509Store("MY", StoreLocation.CurrentUser); | |||
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); | |||
X509Certificate2 cert = new X509Certificate2(); | |||
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; | |||
X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false); | |||
string str_SN = ""; | |||
foreach (X509Certificate2 x509 in fcollection) | |||
{ | |||
try | |||
{ | |||
if (x509.Subject.ToUpper().Contains("SNILS") || x509.Subject.ToUpper().Contains("СНИЛС")) | |||
{ | |||
str_SN = x509.Subject.Substring(x509.Subject.IndexOf("SNILS") + 6, 11); | |||
int n; | |||
if (!int.TryParse(str_SN.Substring(0, 10), out n)) | |||
{ | |||
str_SN = x509.Subject.Substring(x509.Subject.ToUpper().IndexOf("СНИЛС") + 6, 11); | |||
if (!int.TryParse(str_SN.Substring(0, 10), out n)) | |||
{ | |||
continue; | |||
// System.Windows.Forms.MessageBox.Show("Снилс в сертификате не найден или пустой"); | |||
} | |||
} | |||
if (String.CompareOrdinal(str_SN, "NNNNNNNNNNNNN") == 0) | |||
{ | |||
cert = x509; | |||
// Console.WriteLine(cert.Subject); | |||
Console.WriteLine(str_SN); | |||
// Console.ReadKey(); | |||
break; | |||
} | |||
} | |||
x509.Reset(); | |||
} | |||
catch (CryptographicException) | |||
{ | |||
Console.WriteLine("Information could not be written out for this certificate."); | |||
} | |||
} | |||
store.Close(); | |||
return cert; | |||
} | |||
</pre> |
Версия от 14:30, 20 октября 2016
Поиск нужного сертификата. Ищем по конкретному СНИЛСу и действующий на текущую дату.
X509Certificate2 CertItog = find_certificate_();
public static X509Certificate2 find_certificate_() { X509Store store = new X509Store("MY", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2 cert = new X509Certificate2(); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false); string str_SN = ""; foreach (X509Certificate2 x509 in fcollection) { try { if (x509.Subject.ToUpper().Contains("SNILS") || x509.Subject.ToUpper().Contains("СНИЛС")) { str_SN = x509.Subject.Substring(x509.Subject.IndexOf("SNILS") + 6, 11); int n; if (!int.TryParse(str_SN.Substring(0, 10), out n)) { str_SN = x509.Subject.Substring(x509.Subject.ToUpper().IndexOf("СНИЛС") + 6, 11); if (!int.TryParse(str_SN.Substring(0, 10), out n)) { continue; // System.Windows.Forms.MessageBox.Show("Снилс в сертификате не найден или пустой"); } } if (String.CompareOrdinal(str_SN, "NNNNNNNNNNNNN") == 0) { cert = x509; // Console.WriteLine(cert.Subject); Console.WriteLine(str_SN); // Console.ReadKey(); break; } } x509.Reset(); } catch (CryptographicException) { Console.WriteLine("Information could not be written out for this certificate."); } } store.Close(); return cert; }