internal static AzureKeyVaultSecretStoreOptions Verify(this AzureKeyVaultSecretStoreOptions options)
        {
            if (options.KeyVaultBaseUrl == null && options.KeyVaultName != null)
            {
                options.KeyVaultBaseUrl = $"https://{options.KeyVaultName.ToLower()}.{(options.EndpointSuffix ?? "vault.azure.net")}";
            }

            ArgCheck.NotNullOrEmpty(nameof(options.KeyVaultBaseUrl), options?.KeyVaultBaseUrl);

            return(options);
        }
        public static IServiceCollection AddAzureKeyVaultPrivateCertificateStore(this IServiceCollection services, string storeConfigurationKey = "AzureKeyVaultPrivateCertificateStore")
        {
            ArgCheck.NotNull(nameof(services), services);
            ArgCheck.NotNullOrEmpty(nameof(storeConfigurationKey), storeConfigurationKey);

            return(services.AddSingleton <IPrivateCertificateStore>(serviceProvider =>
            {
                var configuration = serviceProvider.GetRequiredService <IConfiguration>()?.GetSection(storeConfigurationKey)
                                    ?? throw new InvalidOperationException($"Azure key vault store configuration section '{storeConfigurationKey}' not found.");
                var options = new AzureKeyVaultSecretStoreOptions();
                configuration.Bind(options);
                return new AzureKeyVaultSecretStore(options);
            }));
        }