Project

General

Profile

The swidGenerator Tool » History » Version 7

Andreas Steffen, 10.04.2014 15:49

1 1 Andreas Steffen
h1. The swidGenerator Tool
2 1 Andreas Steffen
3 5 Andreas Steffen
{{>toc}}
4 5 Andreas Steffen
5 1 Andreas Steffen
"swidGenerator":https://github.com/tnc-ba/swidGenerator is an open source python-based tool written by the HSR students Danilo Bargen, Christian Fässler and Jonas Furrer which is able to generate ISO/IEC 1977-2-2014 Software Identification (SWID) tags for all installed software packages installed by the Linux *dpkg* and *yum* packet managers.
6 1 Andreas Steffen
7 1 Andreas Steffen
h2. Installation
8 1 Andreas Steffen
9 2 Andreas Steffen
h3. Download
10 2 Andreas Steffen
11 2 Andreas Steffen
Next download the latest swidGenerator tarball from https://github.com/tnc-ba/swidGenerator/archive/master.zip and unpack the archive with the command
12 1 Andreas Steffen
<pre>
13 2 Andreas Steffen
unzip swidGenerator-master.zip
14 1 Andreas Steffen
</pre>
15 1 Andreas Steffen
16 2 Andreas Steffen
h3. Required Packages under Debian or Ubuntu
17 1 Andreas Steffen
18 1 Andreas Steffen
Make sure that the *python* and *python-setuptools* are present on your system. Otherwise install them with
19 1 Andreas Steffen
<pre>
20 1 Andreas Steffen
sudo apt-get install python python-setuptools
21 1 Andreas Steffen
</pre>
22 1 Andreas Steffen
23 2 Andreas Steffen
h3. Required Packages under Fedora or RedHat Enterprise Linux
24 2 Andreas Steffen
25 2 Andreas Steffen
h3. Installation
26 2 Andreas Steffen
27 6 Andreas Steffen
You are going to need *yum-utils"
28 6 Andreas Steffen
<pre>
29 6 Andreas Steffen
sudo yum install yum-utils
30 6 Andreas Steffen
</pre>
31 6 Andreas Steffen
32 2 Andreas Steffen
Change into the unpacked archive and execute the command
33 2 Andreas Steffen
<pre>
34 2 Andreas Steffen
sudo python setup.py install
35 2 Andreas Steffen
</pre>
36 2 Andreas Steffen
and the *swid_generator* function usually installed in */usr/local/bin* becomes available.
37 1 Andreas Steffen
38 3 Andreas Steffen
h2. Usage
39 3 Andreas Steffen
40 3 Andreas Steffen
h3. Generate Software IDs
41 3 Andreas Steffen
42 3 Andreas Steffen
The command
43 3 Andreas Steffen
<pre>
44 3 Andreas Steffen
swid_generator software-id
45 3 Andreas Steffen
</pre>
46 3 Andreas Steffen
creates a list of Unique Software Identifications of the form
47 3 Andreas Steffen
<pre>
48 3 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-acpi-support-base-0.140-5
49 3 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-acpid-1:2.0.16-1+deb7u1
50 3 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-adduser-3.113+nmu3
51 3 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-apache2-2.2.22-13+deb7u1
52 3 Andreas Steffen
...
53 3 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-xz-utils-5.1.1alpha+20120614-2
54 3 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-zlib1g-1:1.2.7.dfsg-13
55 3 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-zlib1g-dev-1:1.2.7.dfsg-13
56 3 Andreas Steffen
</pre>
57 3 Andreas Steffen
By default the *regid.2004-03.org.strongswan* regid is used as the tagcreator.
58 3 Andreas Steffen
59 4 Andreas Steffen
With the *--regid <tagcreator>* option an arbitrary regid can be configured
60 3 Andreas Steffen
<pre>
61 1 Andreas Steffen
swid_generator software-id --regid regid.1999-03.org.debian
62 5 Andreas Steffen
</pre>
63 5 Andreas Steffen
which generates the list
64 5 Andreas Steffen
<pre>
65 1 Andreas Steffen
regid.1999-03.org.debian_debian_7.4-x86_64-acpi-support-base-0.140-5
66 5 Andreas Steffen
regid.1999-03.org.debian_debian_7.4-x86_64-acpid-1:2.0.16-1+deb7u1
67 1 Andreas Steffen
...
68 5 Andreas Steffen
regid.1999-03.org.debian_debian_7.4-x86_64-zlib1g-1:1.2.7.dfsg-13
69 1 Andreas Steffen
regid.1999-03.org.debian_debian_7.4-x86_64-zlib1g-dev-1:1.2.7.dfsg-13
70 5 Andreas Steffen
</pre>
71 5 Andreas Steffen
72 5 Andreas Steffen
The *--doc-separator* option allows to define a single character or a character string separating the individual Software IDs.
73 1 Andreas Steffen
74 6 Andreas Steffen
 * swid_generator software-id --doc-separator '@'
75 1 Andreas Steffen
<pre>regid.2004-03.org.strongswan_debian_7.4-x86_64-acpi-support-base-0.140-5@regid.2004-03.org.strongswan_debian_7.4-x86_64-acpid-1:2.0.16-1+deb7u1@...</pre>
76 5 Andreas Steffen
77 6 Andreas Steffen
 * swid_generator software-id --doc-separator '::'
78 5 Andreas Steffen
<pre>regid.2004-03.org.strongswan_debian_7.4-x86_64-acpi-support-base-0.140-5::regid.2004-03.org.strongswan_debian_7.4-x86_64-acpid-1:2.0.16-1+deb7u1::...</pre>
79 5 Andreas Steffen
80 6 Andreas Steffen
 * swid_generator software-id --doc-separator $'\n'
81 5 Andreas Steffen
<pre>
82 5 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-acpi-support-base-0.140-5
83 1 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-acpid-1:2.0.16-1+deb7u1
84 5 Andreas Steffen
...
85 5 Andreas Steffen
</pre>
86 5 Andreas Steffen
87 6 Andreas Steffen
* swid_generator software-id --doc-separator $'\n\n'   (which is currently the default)
88 5 Andreas Steffen
<pre>
89 5 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-acpi-support-base-0.140-5
90 5 Andreas Steffen
91 5 Andreas Steffen
regid.2004-03.org.strongswan_debian_7.4-x86_64-acpid-1:2.0.16-1+deb7u1
92 1 Andreas Steffen
93 1 Andreas Steffen
...
94 1 Andreas Steffen
</pre>
95 1 Andreas Steffen
96 7 Andreas Steffen
h3. Generate SWID Tags
97 6 Andreas Steffen
98 6 Andreas Steffen
The simple command
99 6 Andreas Steffen
<pre>
100 6 Andreas Steffen
swid_generator swid
101 6 Andreas Steffen
</pre>
102 6 Andreas Steffen
generates SWID tags for all installed packages
103 6 Andreas Steffen
104 6 Andreas Steffen
<pre>
105 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="account-plugin-aim" uniqueId="Ubuntu_13.10-x86_64-account-plugin-aim-3.8.4-1ubuntu2" version="3.8.4-1ubuntu2" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
106 6 Andreas Steffen
107 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="account-plugin-facebook" uniqueId="Ubuntu_13.10-x86_64-account-plugin-facebook-0.11+13.10.20130802-0ubuntu1" version="0.11+13.10.20130802-0ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
108 6 Andreas Steffen
109 6 Andreas Steffen
...
110 6 Andreas Steffen
111 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="zlib1g" uniqueId="Ubuntu_13.10-x86_64-zlib1g-1:1.2.8.dfsg-1ubuntu1" version="1:1.2.8.dfsg-1ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
112 6 Andreas Steffen
113 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="zlib1g-dev" uniqueId="Ubuntu_13.10-x86_64-zlib1g-dev-1:1.2.8.dfsg-1ubuntu1" version="1:1.2.8.dfsg-1ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
114 6 Andreas Steffen
</pre>
115 6 Andreas Steffen
116 6 Andreas Steffen
or with
117 6 Andreas Steffen
<pre>
118 6 Andreas Steffen
swid_generator swid --doc-separator $'\n'
119 6 Andreas Steffen
</pre>
120 6 Andreas Steffen
the even more compact form
121 6 Andreas Steffen
<pre>
122 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="account-plugin-aim" uniqueId="Ubuntu_13.10-x86_64-account-plugin-aim-3.8.4-1ubuntu2" version="3.8.4-1ubuntu2" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
123 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="account-plugin-facebook" uniqueId="Ubuntu_13.10-x86_64-account-plugin-facebook-0.11+13.10.20130802-0ubuntu1" version="0.11+13.10.20130802-0ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
124 6 Andreas Steffen
...
125 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="zlib1g" uniqueId="Ubuntu_13.10-x86_64-zlib1g-1:1.2.8.dfsg-1ubuntu1" version="1:1.2.8.dfsg-1ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
126 6 Andreas Steffen
<?xml version='1.0' encoding='UTF-8'?><SoftwareIdentity name="zlib1g-dev" uniqueId="Ubuntu_13.10-x86_64-zlib1g-dev-1:1.2.8.dfsg-1ubuntu1" version="1:1.2.8.dfsg-1ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"><Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator" /></SoftwareIdentity>
127 6 Andreas Steffen
</pre>
128 6 Andreas Steffen
129 7 Andreas Steffen
Manual inspection of the SWID tags is facilitated by applying the pretty print option
130 6 Andreas Steffen
<pre>
131 6 Andreas Steffen
swid_generator swid --pretty
132 6 Andreas Steffen
</pre>
133 6 Andreas Steffen
which generates
134 6 Andreas Steffen
<pre>
135 6 Andreas Steffen
<?xml version="1.0" encoding="UTF-8"?>
136 6 Andreas Steffen
<SoftwareIdentity name="account-plugin-aim" uniqueId="Ubuntu_13.10-x86_64-account-plugin-aim-3.8.4-1ubuntu2" version="3.8.4-1ubuntu2" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd">
137 6 Andreas Steffen
        <Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator"/>
138 6 Andreas Steffen
</SoftwareIdentity>
139 6 Andreas Steffen
140 6 Andreas Steffen
<?xml version="1.0" encoding="UTF-8"?>
141 6 Andreas Steffen
<SoftwareIdentity name="account-plugin-facebook" uniqueId="Ubuntu_13.10-x86_64-account-plugin-facebook-0.11+13.10.20130802-0ubuntu1" version="0.11+13.10.20130802-0ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd">
142 6 Andreas Steffen
        <Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator"/>
143 6 Andreas Steffen
</SoftwareIdentity>
144 6 Andreas Steffen
145 6 Andreas Steffen
...
146 6 Andreas Steffen
147 6 Andreas Steffen
<?xml version="1.0" encoding="UTF-8"?>
148 6 Andreas Steffen
<SoftwareIdentity name="zlib1g" uniqueId="Ubuntu_13.10-x86_64-zlib1g-1:1.2.8.dfsg-1ubuntu1" version="1:1.2.8.dfsg-1ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd">
149 6 Andreas Steffen
        <Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator"/>
150 6 Andreas Steffen
</SoftwareIdentity>
151 6 Andreas Steffen
152 6 Andreas Steffen
<?xml version="1.0" encoding="UTF-8"?>
153 6 Andreas Steffen
<SoftwareIdentity name="zlib1g-dev" uniqueId="Ubuntu_13.10-x86_64-zlib1g-dev-1:1.2.8.dfsg-1ubuntu1" version="1:1.2.8.dfsg-1ubuntu1" versionScheme="alphanumeric" xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd">
154 1 Andreas Steffen
        <Entity name="strongSwan" regid="regid.2004-03.org.strongswan" role="tagcreator"/>
155 6 Andreas Steffen
</SoftwareIdentity>
156 6 Andreas Steffen
</pre>
157 7 Andreas Steffen
For this example the output of the *dpkg* package manager on an Ubuntu 13.10 platform was used.