コード例 #1
0
        public override void Validate(X509Certificate2 certificate)
        {
            var configiration = this._configurationProvider.GetConfiguration();
            var context       = new CertificateValidationContext(certificate);
            Func <CertificateValidationContext, Task> seed = x => Task.CompletedTask;

            var rules = CertificateValidationRulesFactory.GetRules(configiration);
            var validationDelegate = rules.Aggregate(seed, (f, next) => new Func <CertificateValidationContext, Task>(c => next.Validate(c, f)));
            var task = validationDelegate(context);

            task.Wait();
        }
コード例 #2
0
        protected override void Internal(CertificateValidationContext context)
        {
            var certificate          = context.Certificate;
            var expirationDateString = certificate.GetExpirationDateString();

            DateTime date;

            DateTime.TryParse(expirationDateString, out date);
            if (date < DateTime.Now)
            {
                throw new InvalidOperationException("Certificate has expired");
            }
        }
コード例 #3
0
        public override void Validate(X509Certificate2 certificate)
        {
            this._logProvider.LogMessage(String.Format("Validating certificate: {0}", certificate.Subject));
            var configiration = this.GetConfiguration();
            var context       = new CertificateValidationContext(certificate);
            Func <CertificateValidationContext, Task> seed = x => Task.CompletedTask;

            var rules = CertificateValidationRulesFactory.GetRules(configiration);
            var validationDelegate = rules.Aggregate(seed, (f, next) => new Func <CertificateValidationContext, Task>(c => next.Validate(c, f)));
            var task = validationDelegate(context);

            task.Wait();
        }
コード例 #4
0
        public Task Validate(CertificateValidationContext context, Func <CertificateValidationContext, Task> next)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (context.Certificate == null)
            {
                throw new ArgumentNullException("certificate");
            }

            this.Internal(context);
            return(next(context));
        }
コード例 #5
0
        protected override void Internal(CertificateValidationContext context)
        {
            base._logProvider.LogMessage(String.Format("Validating expiration date rule for context subject: {0}", context.Certificate.Subject));
            var certificate          = context.Certificate;
            var expirationDateString = certificate.GetExpirationDateString();

            DateTimeOffset date;

            DateTimeOffset.TryParse(expirationDateString, out date);
            if (date < DateTimeOffset.Now)
            {
                base._logProvider.LogMessage(String.Format("Certificate has expired on: {0}", date));
                throw new InvalidOperationException("Certificate has expired");
            }
            base._logProvider.LogMessage(String.Format("Certificate is valid until: {0}", date));
        }
コード例 #6
0
        protected override void Internal(CertificateValidationContext context)
        {
            base._logProvider.LogMessage(String.Format("Validating effective date rule for context subject: {0}", context.Certificate.Subject));
            var certificate         = context.Certificate;
            var effectiveDateString = certificate.GetEffectiveDateString();

            DateTimeOffset date;

            DateTimeOffset.TryParse(effectiveDateString, out date);
            if (date > DateTimeOffset.Now)
            {
                base._logProvider.LogMessage(String.Format("Certificate has effective date in the future: {0}", date));
                throw new InvalidOperationException("Certificate effective date.");
            }
            base._logProvider.LogMessage(String.Format("Certificate has effective date: {0}", date));
        }
コード例 #7
0
        public async Task ExpirationDateRuleTest()
        {
            //ARRANGE
            var store = new X509Store("TestCertStore");

            try
            {
                store.Open(OpenFlags.ReadOnly);
                var certificate = store.Certificates.Find(X509FindType.FindBySubjectName, "ApiraTestCertificate", false)[0];
                var context     = new CertificateValidationContext(certificate);
                var rule        = new ExpirationDateRule();
                //ACT
                await rule.Validate(context, c => Task.CompletedTask);

                //ASSERT
            }
            finally
            {
                store.Close();
                store.Dispose();
            }
        }
        public async Task EffectiveDateRuleTest()
        {
            //ARRANGE
            var store = new X509Store("TestCertStore");

            try
            {
                var logger = new LogProviderMock();
                store.Open(OpenFlags.ReadOnly);
                var certificate = store.Certificates.Find(X509FindType.FindBySubjectName, "www.eca-international.com", false)[0];
                var context     = new CertificateValidationContext(certificate);
                var rule        = new EffectiveDateRule(logger);
                //ACT
                await rule.Validate(context, c => Task.CompletedTask);

                //ASSERT
            }
            finally
            {
                store.Close();
                store.Dispose();
            }
        }
コード例 #9
0
 protected abstract void Internal(CertificateValidationContext context);
コード例 #10
0
 public Task Validate(CertificateValidationContext context, Func <CertificateValidationContext, Task> next)
 {
     return(next(context));
 }
コード例 #11
0
 public Task Validate(CertificateValidationContext context, Func <CertificateValidationContext, Task> next)
 {
     throw new InvalidOperationException();
 }
コード例 #12
0
 public Task Validate(CertificateValidationContext context, Func <CertificateValidationContext, Task> next)
 {
     this.Internal(context);
     return(next(context));
 }