Получил задание: "Получить и проверить цифровую подпись файла, в качестве пары ключей использовать само подписанный сертификат X509 который будет располагаться в хранилище сертификатов операционной системы для доступа к хранилищу использовать X509Store." Нашел как брать сертификат из файла
try
{
X509Certificate theSigner = X509Certificate.CreateFromSignedFile ("c:\\r\\1.dll");
Console.Write("certificate info :"+ theSigner.GetCertHashString());
}
catch (Exception ex)
{
Console.WriteLine("No digital signature ");
}
а как это сделать из хранилища не знаю. Подскажите, как это сделать.
Для получения доступа к хранилищу вы можете использовать следующий код:
using System.Security.Cryptography.X509Certificates;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
//Выбираем и открываем хранилище с сертификатами
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
//Проходим по всем сертификатам и что то с ними делаем
foreach (X509Certificate2 cert in store.Certificates)
{
//В данном участке кода будут все сертификаты из указанного хранилища
}
//Закрываем хранилище
store.Close();
}
}
}
UPD
В связи с вполне логичным комментарием товарища @VladD дополняю кодом с использованием using. Это необходимо для обеспечения закрытия хранилища даже в случае ошибки в блоке обработки сертификатов (И банально это более лаконично).
static void Main(string[] args)
{
//Выбираем и открываем хранилище с сертификатами
using (var store = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
store.Open(OpenFlags.ReadOnly);
//Проходим по всем сертификатам и что то с ними делаем
foreach (X509Certificate2 cert in store.Certificates)
{
//В данном участке кода будут все сертификаты из указанног охранилища
}
}
}
P.S. Если вам требуется реализовать подпись по ГОСТу, то вы можете воспользоваться библиотекой GostCryptography
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости