public async Task <IList <X509Certificate2> > GetTrustBundleAsync(Uri providerUri, string apiVersion)
        {
            HttpClient httpClient = null;

            try
            {
                httpClient = HttpClientHelper.GetHttpClient(providerUri);
                var hsmHttpClient = new HttpHsmClient(httpClient)
                {
                    BaseUrl = HttpClientHelper.GetBaseUrl(providerUri)
                };
                TrustBundleResponse response = await GetTrustBundleWithRetry(hsmHttpClient, apiVersion).ConfigureAwait(false);

                var certs = ParseCertificates(response.Certificate);
                return(certs);
            }
            catch (Exception ex)
            {
                switch (ex)
                {
                case SwaggerException <ErrorResponse> errorResponseException:
                    throw new HttpHsmComunicationException($"Error calling GetTrustBundleWithRetry: {errorResponseException.Result?.Message ?? string.Empty}", errorResponseException.StatusCode);

                case SwaggerException swaggerException:
                    throw new HttpHsmComunicationException($"Error calling GetTrustBundleWithRetry: {swaggerException.Response ?? string.Empty}", swaggerException.StatusCode);

                default:
                    throw;
                }
            }
            finally
            {
                httpClient?.Dispose();
            }
        }
        public Task <TrustBundleResponse> TrustBundleAsync(string api_version)
        {
            var response = new TrustBundleResponse();

            response.Certificate = CertificateHelper.CertificatePem;

            return(Task.FromResult(response));
        }
Пример #3
0
        public void ParseTrustBundleResponseWithMultipleCertReturnsNonEmptyList()
        {
            var response = new TrustBundleResponse()
            {
                Certificate = $"{TestCertificateHelper.CertificatePem}\n{TestCertificateHelper.CertificatePem}",
            };
            IEnumerable <X509Certificate2> certs = CertificateHelper.ParseTrustBundleResponse(response);

            Assert.Equal(certs.Count(), 2);
        }
Пример #4
0
        public void ParseTrustBundleInvalidResponseReturnsEmptyList()
        {
            var response = new TrustBundleResponse()
            {
                Certificate = "somewhere over the rainbow",
            };
            IEnumerable <X509Certificate2> certs = CertificateHelper.ParseTrustBundleResponse(response);

            Assert.Equal(certs.Count(), 0);
        }
Пример #5
0
        public void ParseTrustBundleEmptyResponseReturnsEmptyList()
        {
            var response = new TrustBundleResponse()
            {
                Certificate = "  ",
            };
            IEnumerable <X509Certificate2> certs = CertificateHelper.ParseTrustBundleResponse(response);

            Assert.Equal(certs.Count(), 0);
        }
Пример #6
0
        public override async Task <string> GetTrustBundleAsync()
        {
            using (HttpClient httpClient = HttpClientHelper.GetHttpClient(this.WorkloadUri))
            {
                var edgeletHttpClient = new HttpWorkloadClient(httpClient)
                {
                    BaseUrl = HttpClientHelper.GetBaseUrl(this.WorkloadUri)
                };
                TrustBundleResponse result = await this.Execute(() => edgeletHttpClient.TrustBundleAsync(this.Version.Name), "TrustBundleAsync");

                return(result.Certificate);
            }
        }
Пример #7
0
        public async Task <TrustBundleResponse> GetTrustBundleAsync()
        {
            using (HttpClient httpClient = HttpClientHelper.GetHttpClient(this.workloadUri))
            {
                var edgeletHttpClient = new HttpWorkloadClient(httpClient)
                {
                    BaseUrl = HttpClientHelper.GetBaseUrl(this.workloadUri)
                };
                TrustBundleResponse result = await this.Execute(() => edgeletHttpClient.TrustBundleAsync(this.apiVersion), "TrustBundleAsync");

                return(result);
            }
        }
Пример #8
0
 internal static IEnumerable <X509Certificate2> ParseTrustBundleResponse(TrustBundleResponse response)
 {
     Preconditions.CheckNotNull(response, nameof(response));
     return(ParseTrustedBundleCerts(response.Certificate));
 }
Пример #9
0
        public static async Task <IEnumerable <X509Certificate2> > GetTrustBundleFromEdgelet(Uri workloadUri, string workloadApiVersion, string moduleId, string moduleGenerationId)
        {
            TrustBundleResponse response = await new WorkloadClient(workloadUri, workloadApiVersion, moduleId, moduleGenerationId).GetTrustBundleAsync();

            return(ParseTrustBundleResponse(response));
        }
Пример #10
0
        public void ParseTrustBundleNullResponseRaisesException()
        {
            TrustBundleResponse response = null;

            Assert.Throws <ArgumentNullException>(() => CertificateHelper.ParseTrustBundleResponse(response));
        }