public BackendDataViewModel() { certificateLargeIcon = "Resources/CertificateImages/certificate_large.png"; _certsList = new ObservableCollection <CertViewModel>(); cert_collection = new X509Certificate2Collection(); rootCA = new CertViewModel { CertLabel = "rootCA" }; rootCA.CertificateSelectionChanged += this.CertificateSelectionChanged; RNCert = new CertViewModel { CertLabel = "RN cert" }; RNCert.CertificateSelectionChanged += this.CertificateSelectionChanged; intermediateCA = new CertViewModel { CertLabel = "citizen CA" }; intermediateCA.CertificateSelectionChanged += this.CertificateSelectionChanged; authCert = new CertViewModel { CertLabel = "Authentication" }; authCert.CertificateSelectionChanged += this.CertificateSelectionChanged; signCert = new CertViewModel { CertLabel = "Signature" }; signCert.CertificateSelectionChanged += this.CertificateSelectionChanged; certsList.Add(rootCA); certsList[0].Certs.Add(RNCert); certsList[0].Certs.Add(intermediateCA); certsList[0].Certs[1].Certs.Add(authCert); certsList[0].Certs[1].Certs.Add(signCert); }
//event function notified by CertViewModel when an other certificate is selected public void CertificateSelectionChanged(object sender, EventArgs e) { CertViewModel certificate = sender as CertViewModel; cert_valid_from = certificate.CertValidfrom; cert_valid_untill = certificate.CertValidUntill; cert_usage = certificate.CertUsage; cert_trust = certificate.CertTrust; }
private void StoreCertificate(ref CertViewModel theCertViewModel, ref X509Certificate2 theX509Certificate) { theCertViewModel.CertValidfrom = theX509Certificate.GetEffectiveDateString(); theCertViewModel.CertValidUntill = theX509Certificate.GetExpirationDateString(); theCertViewModel.CertVisibility = Visibility.Visible; theCertViewModel.CertTrust = "Not checked"; foreach (X509Extension extension in theX509Certificate.Extensions) { //Console.WriteLine(extension.Oid.FriendlyName + "(" + extension.Oid.Value + ")"); if (extension.Oid.Value == "2.5.29.15")//OID_KEY_USAGE { theCertViewModel.CertUsage = ""; X509KeyUsageExtension ext = (X509KeyUsageExtension)extension; if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.DigitalSignature)) { theCertViewModel.CertUsage += "DigitalSignature "; } if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.NonRepudiation)) { theCertViewModel.CertUsage += "NonRepudiation "; } if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.KeyCertSign)) { theCertViewModel.CertUsage += "KeyCertSign "; } if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.DataEncipherment)) { theCertViewModel.CertUsage += "DataEncipherment "; } if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.DecipherOnly)) { theCertViewModel.CertUsage += "DecipherOnly "; } if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.EncipherOnly)) { theCertViewModel.CertUsage += "EncipherOnly "; } if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.KeyAgreement)) { theCertViewModel.CertUsage += "KeyAgreement "; } if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.KeyEncipherment)) { theCertViewModel.CertUsage += "KeyEncipherment "; } if (ext.KeyUsages == (X509KeyUsageFlags.None)) { theCertViewModel.CertUsage += "No key usage parameters "; } } } }