Загрузить сертификаты X509 из выбранной папки - PullRequest
0 голосов
/ 10 января 2019

Загрузка сертификатов X509 из папки

Я использую c #, и мне нужно загрузить сертификаты X509 из папки. Мне нужно загрузить файлы из папки, чтобы показать их в таблице внутри моей программы шифрования.

public partial class Form1 : Form
{
    DataTable dt = new DataTable();
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var store = new X509Store(StoreName.My, storeLocation: StoreLocation.LocalMachine);
        store.Open(OpenFlags.ReadOnly);

        DataColumn dc1 = new DataColumn("Name", typeof(string));
        DataColumn dc2 = new DataColumn("E-mail", typeof(string));
        DataColumn dc3 = new DataColumn("valid from", typeof(string));
        DataColumn dc4 = new DataColumn("Expiry Date", typeof(string));
        DataColumn dc5 = new DataColumn("ThumbPrint", typeof(string));
        dt.Columns.Add(dc1);
        dt.Columns.Add(dc2);
        dt.Columns.Add(dc3);
        dt.Columns.Add(dc4);
        dt.Columns.Add(dc5);

        foreach (X509Certificate2 mCert in store.Certificates)
        {
            string email1 = mCert.GetNameInfo(X509NameType.SimpleName, false);
            string stringAfterChar = email1.Substring(email1.IndexOf("-") + 1);
            string name = mCert.GetNameInfo(X509NameType.SimpleName, false);
            string[] splitString = name.Split('-');

            string namewithoutemail = splitString[0].Trim();

            dt.Rows.Add(namewithoutemail , stringAfterChar,  mCert.NotBefore, mCert.GetExpirationDateString() , mCert.Thumbprint);
        }

        dataGridView1.DataSource = dt;

    }

Это мой код, и на самом деле я могу загрузить сертификаты из CertificateStore, но я хочу загрузить сертификаты из папки. Другая вещь, которую я могу сделать, это создать специальное хранилище сертификатов для моей программы, но я думаю, что это невозможно. Спасибо за любую помощь

1 Ответ

0 голосов
/ 10 января 2019

Посмотрите на ссылку для X509Certificate2.Import . Это позволяет загрузить сертификат из файловой системы (среди других методов). В этом случае вы просто просматриваете файлы сертификатов в своей папке, а не открываете CertificateStore.

foreach (var file in Directory.GetFiles(yourFolder, "*.cer"))
        {
            var mCert = X509Certificate2.Import(file);

            string email1 = mCert.GetNameInfo(X509NameType.SimpleName, false);
            string stringAfterChar = email1.Substring(email1.IndexOf("-") + 1);
            string name = mCert.GetNameInfo(X509NameType.SimpleName, false);
            string[] splitString = name.Split('-');

            string namewithoutemail = splitString[0].Trim();

            dt.Rows.Add(namewithoutemail , stringAfterChar,  mCert.NotBefore, mCert.GetExpirationDateString() , mCert.Thumbprint);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...