public static async Task <CertificateGroupConfigurationModel> UpdateCertificateGroupConfiguration(
            KeyVaultServiceClient keyVaultServiceClient,
            string id,
            CertificateGroupConfigurationModel config)
        {
            if (id.ToLower() != config.Id.ToLower())
            {
                throw new ArgumentException("groupid doesn't match config id");
            }
            string json = await keyVaultServiceClient.GetCertificateConfigurationGroupsAsync().ConfigureAwait(false);

            List <CertificateGroupConfigurationModel> certificateGroupCollection = JsonConvert.DeserializeObject <List <CertificateGroupConfigurationModel> >(json);

            var original = certificateGroupCollection.SingleOrDefault(cg => String.Equals(cg.Id, id, StringComparison.OrdinalIgnoreCase));

            if (original == null)
            {
                throw new ArgumentException("invalid groupid");
            }

            ValidateConfiguration(config);

            var index = certificateGroupCollection.IndexOf(original);

            certificateGroupCollection[index] = config;

            json = JsonConvert.SerializeObject(certificateGroupCollection);

            // update config
            json = await keyVaultServiceClient.PutCertificateConfigurationGroupsAsync(json).ConfigureAwait(false);

            // read it back to verify
            certificateGroupCollection = JsonConvert.DeserializeObject <List <CertificateGroupConfigurationModel> >(json);
            return(certificateGroupCollection.SingleOrDefault(cg => String.Equals(cg.Id, id, StringComparison.OrdinalIgnoreCase)));
        }
 public static KeyVaultCertificateGroupProvider Create(
     KeyVaultServiceClient keyVaultServiceClient,
     CertificateGroupConfigurationModel certificateGroupConfiguration,
     string serviceHost
     )
 {
     return(new KeyVaultCertificateGroupProvider(keyVaultServiceClient, certificateGroupConfiguration, serviceHost));
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Create the KeyVault signature generator.
 /// </summary>
 /// <param name="keyVaultServiceClient">The KeyVault service client to use</param>
 /// <param name="signingKey">The KeyVault signing key</param>
 /// <param name="issuerCertificate">The issuer certificate used for signing</param>
 public KeyVaultSignatureGenerator(
     KeyVaultServiceClient keyVaultServiceClient,
     string signingKey,
     X509Certificate2 issuerCertificate)
 {
     _issuerCert            = issuerCertificate;
     _keyVaultServiceClient = keyVaultServiceClient;
     _signingKey            = signingKey;
 }
        public static async Task <CertificateGroupConfigurationModel> GetCertificateGroupConfiguration(
            KeyVaultServiceClient keyVaultServiceClient,
            string id)
        {
            string json = await keyVaultServiceClient.GetCertificateConfigurationGroupsAsync().ConfigureAwait(false);

            List <CertificateGroupConfigurationModel> certificateGroupCollection =
                JsonConvert.DeserializeObject <List <CertificateGroupConfigurationModel> >(json);

            return(certificateGroupCollection.SingleOrDefault(cg => String.Equals(cg.Id, id, StringComparison.OrdinalIgnoreCase)));
        }
        public static async Task <string[]> GetCertificateGroupIds(
            KeyVaultServiceClient keyVaultServiceClient)
        {
            string json = await keyVaultServiceClient.GetCertificateConfigurationGroupsAsync().ConfigureAwait(false);

            List <CertificateGroupConfigurationModel> certificateGroupCollection =
                JsonConvert.DeserializeObject <List <CertificateGroupConfigurationModel> >(json);
            List <string> groups = certificateGroupCollection.Select(cg => cg.Id).ToList();

            return(groups.ToArray());
        }
 private KeyVaultCertificateGroupProvider(
     KeyVaultServiceClient keyVaultServiceClient,
     CertificateGroupConfigurationModel certificateGroupConfiguration,
     string serviceHost
     ) :
     base(null, certificateGroupConfiguration.ToGdsServerModel())
 {
     _keyVaultServiceClient        = keyVaultServiceClient;
     CertificateGroupConfiguration = certificateGroupConfiguration;
     _serviceHost = serviceHost ?? "localhost";
     Certificate  = null;
     Crl          = null;
 }
        public static async Task <KeyVaultCertificateGroupProvider> Create(
            KeyVaultServiceClient keyVaultServiceClient,
            string id,
            string serviceHost
            )
        {
            var certificateGroupConfiguration = await GetCertificateGroupConfiguration(keyVaultServiceClient, id);

            if (certificateGroupConfiguration == null)
            {
                throw new ResourceNotFoundException("The certificate group doesn't exist.");
            }
            return(new KeyVaultCertificateGroupProvider(keyVaultServiceClient, certificateGroupConfiguration, serviceHost));
        }
        public static async Task <CertificateGroupConfigurationModel> CreateCertificateGroupConfiguration(
            KeyVaultServiceClient keyVaultServiceClient,
            string id,
            string subject,
            string certType)
        {
            var config = DefaultConfiguration(id, subject, certType);

            if (id.ToLower() != config.Id.ToLower())
            {
                throw new ArgumentException("groupid doesn't match config id");
            }
            string json;
            IList <CertificateGroupConfigurationModel> certificateGroupCollection = new List <CertificateGroupConfigurationModel>();

            try
            {
                json = await keyVaultServiceClient.GetCertificateConfigurationGroupsAsync().ConfigureAwait(false);

                certificateGroupCollection =
                    JsonConvert.DeserializeObject <List <CertificateGroupConfigurationModel> >(json);
            }
            catch (KeyVaultErrorException kex)
            {
                if (kex.Response.StatusCode != HttpStatusCode.NotFound)
                {
                    throw kex;
                }
            }

            var original = certificateGroupCollection.SingleOrDefault(cg => String.Equals(cg.Id, id, StringComparison.OrdinalIgnoreCase));

            if (original != null)
            {
                throw new ArgumentException("groupid already exists");
            }

            ValidateConfiguration(config);

            certificateGroupCollection.Add(config);

            json = JsonConvert.SerializeObject(certificateGroupCollection);

            // update config
            json = await keyVaultServiceClient.PutCertificateConfigurationGroupsAsync(json).ConfigureAwait(false);

            // read it back to verify
            certificateGroupCollection = JsonConvert.DeserializeObject <List <CertificateGroupConfigurationModel> >(json);
            return(certificateGroupCollection.SingleOrDefault(cg => String.Equals(cg.Id, id, StringComparison.OrdinalIgnoreCase)));
        }