public override IResult Execute(IResult previousResults) { try { var certificate = GetCertificateFromWrapper(); if (certificate == null) { Log.Warn("Could not retrieve certificate from wrapper. Certificate info file will not be written."); return new NextResult(); } var infoWrapper = new CertificatePropertiesWrapper(certificate); infoWrapper.Serialize(TargetPath); return new NextResult(); } catch (Exception e) { return new ExceptionOccurred(e); } }
private List<X509Certificate2> GetMatchingValidCerts(CertificatePropertiesWrapper wrapper) { X509Store store = null; try { store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open( OpenFlags.ReadOnly); var result = new List<X509Certificate2>(); foreach (var certificate in store.Certificates) { if (!wrapper.AuthorityKey.Equals( CertificateUtilities.GetAuthorityKeyFromCertificate(certificate), StringComparison.InvariantCultureIgnoreCase)) continue; if (!wrapper.SubjectKey.Equals( CertificateUtilities.GetSubjectKeyFromCertificate(certificate), StringComparison.InvariantCultureIgnoreCase)) continue; if (!CertificateUtilities.VerifyCertificate( certificate, Validate, Mode, new TimeSpan(0,0,0,Timeout), Flags).Result) continue; result.Add(certificate); } return result; } finally { if (store !=null) store.Close(); } }