Пример #1
0
        public void vyber_certifikat_by_row_index(int row_index)
        {
            string cert_id = "";

            cert_id = dataGridView2.Rows[row_index].Cells[4].Value.ToString();

            X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);

            store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

            X509Certificate2Collection certificateCollection = store.Certificates.Find(X509FindType.FindBySerialNumber, cert_id, false);

            if (certificateCollection.Count == 0)
            {
                MessageBox.Show("Nenalezen certifikát v rámci kolekce !");
                return;
            }

            ext_certificate = certificateCollection[0];

            try
            {
                tei_certificate.FromX509Certificate2(ext_certificate);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Chyba při načtení certifikátu ! [" + ex.Message + "]");
                return;
            }

            DialogResult = DialogResult.OK;
        }
Пример #2
0
        private bool nacti_certifikat_from_file(string fileName, string password)
        {
            tei_certificate = new TElX509Certificate();
            //, string v, X509KeyStorageFlags machineKeySet
            bool   vysledek = false;
            bool   nacteno  = false;
            int    chyba_id = 0;
            string message  = "";

            try
            {
                ext_certificate = new X509Certificate2(fileName, password, X509KeyStorageFlags.MachineKeySet);
                nacteno         = true;
            }
            catch (Exception ex)
            {
                nacteno  = false;
                chyba_id = Marshal.GetHRForException(ex);
                message  = ex.Message;
            }

            if (nacteno)
            {
                bool mam_kvalifikovany = false;
                bool QESCD             = false;
                //zde prověřím platnosti daného certifikátu
                foreach (X509Extension extension in ext_certificate.Extensions)
                {
                    if (extension.Format(true).Contains("0.4.0.194112.1.0"))
                    {
                        QESCD             = false;
                        mam_kvalifikovany = true;
                        vysledek          = true;
                    }
                    else if (extension.Format(true).Contains("0.4.0.194112.1.2"))
                    {
                        QESCD             = true;
                        mam_kvalifikovany = true;
                        vysledek          = true;
                    }
                    else if (extension.Format(true).Contains("1.2.203.27112489.1.10.5.1.2"))
                    {
                        QESCD             = true;
                        mam_kvalifikovany = true;
                        vysledek          = true;
                    }
                    else if (extension.Format(true).Contains("1.2.203.27112489.1.10.1.2.7"))
                    {
                        QESCD             = false;
                        mam_kvalifikovany = true;
                        vysledek          = true;
                    }
                }

                if (mam_kvalifikovany == false)
                {
                    MessageBox.Show("Nebyl vybrán kvalifikovaný certifikát !");
                    vysledek = false;
                    return(vysledek);
                }

                if (ext_certificate.NotAfter > DateTime.Now)
                {
                    vysledek = true;
                }
                else
                {
                    MessageBox.Show("Vybraný certifkát již není platný (platný do: " + ext_certificate.NotAfter.ToString("dd.MM.yyyy HH:mm:ss") + ") !");
                    vysledek = false;
                    return(vysledek);
                }


                if ((DateTime.Now > (Convert.ToDateTime("17.09.2018 00:00"))) && (QESCD == false))
                {
                    MessageBox.Show("Vybraný podpis mus splňovat parametry pro kvalifikovaný elektronický podpis!");
                    vysledek = false;
                    return(vysledek);
                }
            }
            else
            {
                if (chyba_id == -2147024810)
                {
                    pass_form f_podpis = new pass_form();
                    f_podpis.ShowDialog();

                    if (f_podpis.DialogResult == DialogResult.OK)
                    {
                        vysledek = nacti_certifikat_from_file(fileName, f_podpis.cert_heslo);
                    }
                    else
                    {
                        MessageBox.Show("Nebylo zadáno heslo k certifikátu !");
                        vysledek = false;
                    }
                }
                else
                {
                    MessageBox.Show("Cyba při načtení certifikátu (" + message + ") !");
                    vysledek = false;
                }
            }

            if (vysledek)
            {
                try
                {
                    tei_certificate.FromX509Certificate2(ext_certificate);
                }
                catch (Exception ex)
                {
                    nacteno  = false;
                    chyba_id = Marshal.GetHRForException(ex);
                    message  = ex.Message;
                }
            }



            return(vysledek);
        }