private void OnSetCertificateConfiguration(object sender, RoutedEventArgs e) { CertificatesDataContract.DesiredProperties desiredProperties = UIToCertificateConfiguration(); string json = desiredProperties.ToJsonString(); Debug.WriteLine("certificates:"); Debug.WriteLine(json); SetDesired(CertificatesDataContract.SectionName, json).FireAndForget(); }
/// <summary> /// Uninstall a certificate via device twin. /// </summary> private async void UninstallCertButton_ClickAsync(object sender, RoutedEventArgs e) { if (CertHashUninstallInput.Text.Length == 0) { _mainPage.ShowDialogAsync("Invaid Input", "Please enter all fields to uninstall certificate"); return; } CertificatesDataContract.CertificateInfo certificateInfo = new CertificatesDataContract.CertificateInfo(); certificateInfo.Hash = CertHashUninstallInput.Text; certificateInfo.State = CertificatesDataContract.JsonStateUninstalled; CertificatesDataContract.DesiredProperties certDesiredProperties = new CertificatesDataContract.DesiredProperties(); switch (CertPathUninstallCombobox.SelectedValue) { case CertificateStore.rootCATrustedCertificates_Root: certDesiredProperties.rootCATrustedCertificates_Root.Add(certificateInfo); break; case CertificateStore.rootCATrustedCertificates_CA: certDesiredProperties.rootCATrustedCertificates_CA.Add(certificateInfo); break; case CertificateStore.rootCATrustedCertificates_TrustedPublisher: certDesiredProperties.rootCATrustedCertificates_TrustedPublisher.Add(certificateInfo); break; case CertificateStore.rootCATrustedCertificates_TrustedPeople: certDesiredProperties.rootCATrustedCertificates_TrustedPeople.Add(certificateInfo); break; case CertificateStore.certificateStore_CA_System: certDesiredProperties.certificateStore_CA_System.Add(certificateInfo); break; case CertificateStore.certificateStore_Root_System: certDesiredProperties.certificateStore_Root_System.Add(certificateInfo); break; case CertificateStore.certificateStore_My_User: certDesiredProperties.certificateStore_My_User.Add(certificateInfo); break; case CertificateStore.certificateStore_My_System: certDesiredProperties.certificateStore_My_System.Add(certificateInfo); break; default: break; } string refreshingValue = "\"refreshing\""; string finalValue = "{" + certDesiredProperties.ToJsonString() + "}"; await _mainPage.UpdateTwinData(refreshingValue, finalValue); }
private CertificatesDataContract.DesiredProperties UIToCertificateConfiguration() { CertificatesDataContract.DesiredProperties certificatesDesiredProperties = new CertificatesDataContract.DesiredProperties(); PopulateCertificateList( Desired_RootCATrustedCertificates_Root.CertsToInstall, Desired_RootCATrustedCertificates_Root.CertsToUninstall, certificatesDesiredProperties.rootCATrustedCertificates_Root); PopulateCertificateList( Desired_RootCATrustedCertificates_CA.CertsToInstall, Desired_RootCATrustedCertificates_CA.CertsToUninstall, certificatesDesiredProperties.rootCATrustedCertificates_CA); PopulateCertificateList( Desired_RootCATrustedCertificates_TrustedPublisher.CertsToInstall, Desired_RootCATrustedCertificates_TrustedPublisher.CertsToUninstall, certificatesDesiredProperties.rootCATrustedCertificates_TrustedPublisher); PopulateCertificateList( Desired_RootCATrustedCertificates_TrustedPeople.CertsToInstall, Desired_RootCATrustedCertificates_TrustedPeople.CertsToUninstall, certificatesDesiredProperties.rootCATrustedCertificates_TrustedPeople); PopulateCertificateList( Desired_CertificateStore_CA_System.CertsToInstall, Desired_CertificateStore_CA_System.CertsToUninstall, certificatesDesiredProperties.certificateStore_CA_System); PopulateCertificateList( Desired_CertificateStore_Root_System.CertsToInstall, Desired_CertificateStore_Root_System.CertsToUninstall, certificatesDesiredProperties.certificateStore_Root_System); PopulateCertificateList( Desired_CertificateStore_My_User.CertsToInstall, Desired_CertificateStore_My_User.CertsToUninstall, certificatesDesiredProperties.certificateStore_My_User); PopulateCertificateList( Desired_CertificateStore_My_System.CertsToInstall, Desired_CertificateStore_My_System.CertsToUninstall, certificatesDesiredProperties.certificateStore_My_System); return(certificatesDesiredProperties); }
public static async Task DownloadCertificates( ISystemConfiguratorProxy systemConfiguratorProxy, string connectionString, CertificatesDataContract.DesiredProperties desiredProperties) { HashSet <string> certificateFilesSet = new HashSet <string>(); MergeCertificateFileNames(desiredProperties.rootCATrustedCertificates_Root, certificateFilesSet); MergeCertificateFileNames(desiredProperties.rootCATrustedCertificates_CA, certificateFilesSet); MergeCertificateFileNames(desiredProperties.rootCATrustedCertificates_TrustedPublisher, certificateFilesSet); MergeCertificateFileNames(desiredProperties.rootCATrustedCertificates_TrustedPeople, certificateFilesSet); MergeCertificateFileNames(desiredProperties.certificateStore_CA_System, certificateFilesSet); MergeCertificateFileNames(desiredProperties.certificateStore_Root_System, certificateFilesSet); MergeCertificateFileNames(desiredProperties.certificateStore_My_User, certificateFilesSet); MergeCertificateFileNames(desiredProperties.certificateStore_My_System, certificateFilesSet); await DownloadCertificates(systemConfiguratorProxy, connectionString, certificateFilesSet); }
// 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); }
/// <summary> /// Install a certificate via device twin. /// </summary> private async void InstallCertButton_ClickAsync(object sender, RoutedEventArgs e) { if (App.STORAGECONNSTRING.Length == 0) { _mainPage.ShowDialogAsync("Missing Connection String", "Please enter the Storage Connection String in Settings"); return; } string certHashInstall = CertHashInstallInput.Text; string certFileName = CertFileNameInput.Text; if (certHashInstall.Length == 0 || certFileName.Length == 0) { _mainPage.ShowDialogAsync("Invaid Input", "Please enter all fields to Install certificate"); return; } ExternalStorageDataContract.DesiredProperties desiredProperties = new ExternalStorageDataContract.DesiredProperties(); desiredProperties.connectionString = App.STORAGECONNSTRING; CertificatesDataContract.CertificateInfo certificateInfo = new CertificatesDataContract.CertificateInfo(); certificateInfo.Hash = certHashInstall; certificateInfo.StorageFileName = certFileName; certificateInfo.State = CertificatesDataContract.JsonStateInstalled; CertificatesDataContract.DesiredProperties certDesiredProperties = new CertificatesDataContract.DesiredProperties(); switch (CertPathInstallCombobox.SelectedValue) { case CertificateStore.rootCATrustedCertificates_Root: certDesiredProperties.rootCATrustedCertificates_Root.Add(certificateInfo); break; case CertificateStore.rootCATrustedCertificates_CA: certDesiredProperties.rootCATrustedCertificates_CA.Add(certificateInfo); break; case CertificateStore.rootCATrustedCertificates_TrustedPublisher: certDesiredProperties.rootCATrustedCertificates_TrustedPublisher.Add(certificateInfo); break; case CertificateStore.rootCATrustedCertificates_TrustedPeople: certDesiredProperties.rootCATrustedCertificates_TrustedPeople.Add(certificateInfo); break; case CertificateStore.certificateStore_CA_System: certDesiredProperties.certificateStore_CA_System.Add(certificateInfo); break; case CertificateStore.certificateStore_Root_System: certDesiredProperties.certificateStore_Root_System.Add(certificateInfo); break; case CertificateStore.certificateStore_My_User: certDesiredProperties.certificateStore_My_User.Add(certificateInfo); break; case CertificateStore.certificateStore_My_System: certDesiredProperties.certificateStore_My_System.Add(certificateInfo); break; default: break; } string refreshingValue = "\"refreshing\""; string finalValue = "{" + desiredProperties.ToJsonString() + ", " + certDesiredProperties.ToJsonString() + "}"; await _mainPage.UpdateTwinData(refreshingValue, finalValue); }