Exemplo n.º 1
0
        public async Task <X509Certificate> GetCertificate(string issuer)
        {
            DateTime now = _clock.GetDateTimeUtc();

            if (_certificateDictionary == null || _certificateDictionaryCacheExpiryTime <= now)
            {
                List <X509Certificate> x509Certificates = await _rootCertificateProvider.GetRootCaCertificates();

                _certificateDictionary = x509Certificates.Where(_ => _.Issuer.Trim() == _.Subject.Trim()).ToDictionary(_ => _.Issuer.Trim().ToLower());
                _certificateDictionaryCacheExpiryTime = now.Add(_certificateDictionaryTtl);
            }

            _certificateDictionary.TryGetValue(issuer.Trim().ToLower(), out var cert);
            return(cert);
        }
Exemplo n.º 2
0
        public async Task GetCertificatesGoesToOriginForStateOnFirstCallAndReturnsValue()
        {
            A.CallTo(() => _clock.GetDateTimeUtc()).Returns(new DateTime(2018, 01, 01));
            string issuer = "CN=ABC, O=ABC, S=LONDON, C=uk";

            X509Certificate x509Certificate = A.Fake <X509Certificate>();

            A.CallTo(() => x509Certificate.Issuer).Returns(issuer);
            A.CallTo(() => x509Certificate.Subject).Returns(issuer);

            A.CallTo(() => _rootCertificateProvider.GetRootCaCertificates())
            .Returns(Task.FromResult(new List <X509Certificate> {
                x509Certificate
            }));

            X509Certificate certificate = await _rootCertificateLookUp.GetCertificate(issuer);

            Assert.That(certificate, Is.Not.Null);
            A.CallTo(() => _rootCertificateProvider.GetRootCaCertificates()).MustHaveHappenedOnceExactly();
        }