private static async void ProcessDesiredCertificateConfiguration(
            DeviceManagementClient client,
            string connectionString,
            string containerName,
            Message.CertificateConfiguration certificateConfiguration)
        {
            await IoTDMClient.CertificateManagement.DownloadCertificates(client, connectionString, containerName, certificateConfiguration);

            var request = new Message.SetCertificateConfigurationRequest(certificateConfiguration);

            client._systemConfiguratorProxy.SendCommandAsync(request);
        }
Beispiel #2
0
        // IClientPropertyHandler
        public async Task <CommandStatus> OnDesiredPropertyChange(JToken desiredValue)
        {
            if (!(desiredValue is JObject))
            {
                throw new Error(ErrorCodes.INVALID_DESIRED_JSON_VALUE, "Invalid json value type for the " + PropertySectionName + " node.");
            }

            CertificatesDataContract.DesiredProperties desiredProperties = CertificatesDataContract.DesiredProperties.FromJsonObject((JObject)desiredValue);

            await IoTDMClient.CertificateManagement.DownloadCertificates(_systemConfiguratorProxy, _connectionString, desiredProperties);

            Message.CertificateConfiguration certificateConfiguration = new Message.CertificateConfiguration();
            certificateConfiguration.certificateStore_CA_System                 = DesiredToString(desiredProperties.certificateStore_CA_System);
            certificateConfiguration.certificateStore_My_System                 = DesiredToString(desiredProperties.certificateStore_My_System);
            certificateConfiguration.certificateStore_My_User                   = DesiredToString(desiredProperties.certificateStore_My_User);
            certificateConfiguration.certificateStore_Root_System               = DesiredToString(desiredProperties.certificateStore_Root_System);
            certificateConfiguration.rootCATrustedCertificates_CA               = DesiredToString(desiredProperties.rootCATrustedCertificates_CA);
            certificateConfiguration.rootCATrustedCertificates_Root             = DesiredToString(desiredProperties.rootCATrustedCertificates_Root);
            certificateConfiguration.rootCATrustedCertificates_TrustedPeople    = DesiredToString(desiredProperties.rootCATrustedCertificates_TrustedPeople);
            certificateConfiguration.rootCATrustedCertificates_TrustedPublisher = DesiredToString(desiredProperties.rootCATrustedCertificates_TrustedPublisher);

            var request = new Message.SetCertificateConfigurationRequest(certificateConfiguration);
            await _systemConfiguratorProxy.SendCommandAsync(request);

            JObject reportedProperties = await GetReportedPropertyAsync();

            Debug.WriteLine("-- Reporting Certificates -------------------------------------");
            Debug.WriteLine(reportedProperties.ToString());
            Debug.WriteLine("-- Reporting Certificates Done --------------------------------");

            // Because the section contains a list, we need to reset the parent to allow for removals...
            await _deviceManagementClient.ReportPropertiesAsync(PropertySectionName, new JValue("refreshing"));

            // Report the updated list...
            await _deviceManagementClient.ReportPropertiesAsync(PropertySectionName, reportedProperties);

            return(CommandStatus.Committed);
        }