[Libosinfo] [v2 5/8] install-config: API to enable/disable driver signing

Zeeshan Ali (Khattak) zeeshanak at gnome.org
Sun Feb 10 16:41:06 UTC 2013


From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>

Currently only used by Windows XP.
---
 data/install-scripts/windows-sif.xml |  8 ++++++++
 osinfo/libosinfo.syms                |  2 ++
 osinfo/osinfo_install_config.c       | 25 +++++++++++++++++++++++++
 osinfo/osinfo_install_config.h       |  6 ++++++
 4 files changed, 41 insertions(+)

diff --git a/data/install-scripts/windows-sif.xml b/data/install-scripts/windows-sif.xml
index 262e6ec..3bb79c8 100644
--- a/data/install-scripts/windows-sif.xml
+++ b/data/install-scripts/windows-sif.xml
@@ -11,6 +11,7 @@
       <param name="admin-password" policy="optional"/>
       <param name="reg-product-key" policy="required"/>
       <param name="user-realname" policy="required"/>
+      <param name="driver-signing" policy="optional"/>
     </config>
     <template>
       <xsl:stylesheet
@@ -30,6 +31,9 @@
     UnattendMode=FullUnattended
     OemSkipEula=Yes
     OemPreinstall=No
+<xsl:if test="config/driver-signing = 'false'">
+    DriverSigningPolicy=Ignore
+</xsl:if>
     TargetPath=\WINDOWS
     Repartition=Yes
     WaitForReboot=No
@@ -80,6 +84,7 @@
       <param name="user-realname" policy="required"/>
       <param name="hostname" policy="required"/>
       <param name="script-disk" policy="optional"/>
+      <param name="driver-signing" policy="optional"/>
     </config>
     <template>
       <xsl:stylesheet
@@ -136,6 +141,9 @@
     UnattendMode=FullUnattended
     OemSkipEula=Yes
     OemPreinstall=No
+<xsl:if test="config/driver-signing = 'false'">
+    DriverSigningPolicy=Ignore
+</xsl:if>
 <xsl:choose>
   <xsl:when test="os/version > 5.0"> <!-- winxp, win2k3, win2k3r2 -->
     TargetPath=\WINDOWS
diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
index 70202f5..17083ea 100644
--- a/osinfo/libosinfo.syms
+++ b/osinfo/libosinfo.syms
@@ -401,6 +401,8 @@ LIBOSINFO_0.2.3 {
 
 LIBOSINFO_0.2.4 {
     global:
+	osinfo_install_config_get_driver_signing;
+	osinfo_install_config_set_driver_signing;
 	osinfo_device_driver_format_get_type;
 	osinfo_device_driver_get_format;
 	osinfo_device_driver_get_signed;
diff --git a/osinfo/osinfo_install_config.c b/osinfo/osinfo_install_config.c
index 1712be5..f6d2561 100644
--- a/osinfo/osinfo_install_config.c
+++ b/osinfo/osinfo_install_config.c
@@ -641,6 +641,31 @@ const gchar *osinfo_install_config_get_post_install_drivers_location(OsinfoInsta
              OSINFO_INSTALL_CONFIG_PROP_POST_INSTALL_DRIVERS_LOCATION);
 }
 
+/**
+ * osinfo_install_config_set_driver_signing:
+ * @config: the install config
+ * @signing: boolean value
+ *
+ * If a script requires drivers to be signed, this function can be used to
+ * disable that security feature. WARNING: Disable driver signing may very well
+ * mean disabling it permanently.
+ */
+void osinfo_install_config_set_driver_signing(OsinfoInstallConfig *config,
+                                              gboolean signing)
+{
+    osinfo_entity_set_param_boolean(OSINFO_ENTITY(config),
+                                    OSINFO_INSTALL_CONFIG_PROP_DRIVER_SIGNING,
+                                    signing);
+}
+
+gboolean osinfo_install_config_get_driver_signing(OsinfoInstallConfig *config)
+{
+    return osinfo_entity_get_param_value_boolean_with_default
+            (OSINFO_ENTITY(config),
+             OSINFO_INSTALL_CONFIG_PROP_DRIVER_SIGNING,
+             TRUE);
+}
+
 /*
  * Local variables:
  *  indent-tabs-mode: nil
diff --git a/osinfo/osinfo_install_config.h b/osinfo/osinfo_install_config.h
index d650a0a..b3cfa7e 100644
--- a/osinfo/osinfo_install_config.h
+++ b/osinfo/osinfo_install_config.h
@@ -67,6 +67,8 @@
 #define OSINFO_INSTALL_CONFIG_PROP_POST_INSTALL_DRIVERS_DISK "post-install-drivers-disk"
 #define OSINFO_INSTALL_CONFIG_PROP_POST_INSTALL_DRIVERS_LOCATION "post-install-drivers-location"
 
+#define OSINFO_INSTALL_CONFIG_PROP_DRIVER_SIGNING "driver-signing"
+
 typedef struct _OsinfoInstallConfig        OsinfoInstallConfig;
 typedef struct _OsinfoInstallConfigClass   OsinfoInstallConfigClass;
 typedef struct _OsinfoInstallConfigPrivate OsinfoInstallConfigPrivate;
@@ -193,6 +195,10 @@ void osinfo_install_config_set_post_install_drivers_location(OsinfoInstallConfig
                                                              const gchar *location);
 const gchar *osinfo_install_config_get_post_install_drivers_location(OsinfoInstallConfig *config);
 
+void osinfo_install_config_set_driver_signing(OsinfoInstallConfig *config,
+                                              gboolean signing);
+gboolean osinfo_install_config_get_driver_signing(OsinfoInstallConfig *config);
+
 #endif /* __OSINFO_INSTALL_CONFIG_H__ */
 /*
  * Local variables:
-- 
1.8.1.2




More information about the Libosinfo mailing list