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);
            }
        }
Exemplo n.º 2
0
        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();
            }
        }