private bool nacti_certifikat_from_file(string fileName, string password) { //, 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) { vysledek = true; } 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; } } return(vysledek); }
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); }