diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2017-04-20 11:41:15 +0200 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2017-07-08 23:19:51 +0200 |
commit | 6795de0408c9162a3d392b946a09d9e2d7f4f9c4 (patch) | |
tree | cdb7181fcb64e36ef3f9675b7d81e42fc1f5ffd9 | |
parent | 60da0153ee8520b4a343c767b86784cd8594ab1d (diff) | |
download | strongswan-6795de0408c9162a3d392b946a09d9e2d7f4f9c4.tar.bz2 strongswan-6795de0408c9162a3d392b946a09d9e2d7f4f9c4.tar.xz |
libimcv: SWID tag generation and discovery
11 files changed, 40 insertions, 271 deletions
diff --git a/src/libimcv/plugins/imc_swid/.gitignore b/src/libimcv/plugins/imc_swid/.gitignore index 448ad2f2a..59e5e9977 100644 --- a/src/libimcv/plugins/imc_swid/.gitignore +++ b/src/libimcv/plugins/imc_swid/.gitignore @@ -1 +1 @@ -regid.2004-03.org.strongswan*.swidtag +strongswan.org_*.swidtag diff --git a/src/libimcv/plugins/imc_swid/Makefile.am b/src/libimcv/plugins/imc_swid/Makefile.am index c1cdb988a..6cb929eee 100644 --- a/src/libimcv/plugins/imc_swid/Makefile.am +++ b/src/libimcv/plugins/imc_swid/Makefile.am @@ -1,14 +1,13 @@ -regid = regid.2004-03.org.strongswan +regid = strongswan.org unique_sw_id = strongSwan-$(PACKAGE_VERSION_MAJOR)-$(PACKAGE_VERSION_MINOR)-$(PACKAGE_VERSION_BUILD)$(PACKAGE_VERSION_REVIEW) swid_tag = $(regid)_$(unique_sw_id).swidtag -swiddir = $(prefix)/share/$(regid) -swid_DATA = $(swid_tag) -ipsec_DATA = $(swid_tag) +swiddir = $(pkgdatadir)/swidtag +dist_swid_DATA = $(swid_tag) EXTRA_DIST = $(regid)_strongSwan.swidtag.in CLEANFILES = $(regid)_strongSwan*.swidtag -$(swid_tag) : regid.2004-03.org.strongswan_strongSwan.swidtag.in +$(swid_tag) : $(regid)_strongSwan.swidtag.in $(AM_V_GEN) \ sed \ -e "s:@VERSION_MAJOR@:$(PACKAGE_VERSION_MAJOR):" \ diff --git a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_apache-2-2-22-13.swidtag b/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_apache-2-2-22-13.swidtag deleted file mode 100644 index 82e16d2d0..000000000 --- a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_apache-2-2-22-13.swidtag +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"> - <entitlement_required_indicator>true</entitlement_required_indicator> - <product_title>apache2</product_title> - <product_version> - <name>2.2-22-13</name> - <numeric> - <major>2</major> - <minor>2</minor> - <build>22</build> - <review>13</review> - </numeric> - </product_version> - <software_creator> - <name>Apache Software Foundation</name> - <regid>regid.1995-04.org.apache</regid> - </software_creator> - <software_licensor> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </software_licensor> - <software_id> - <unique_id>apache-2-2-22-13</unique_id> - <tag_creator_regid>regid.1999-03.org.debian</tag_creator_regid> - </software_id> - <tag_creator> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </tag_creator> -</software_identification_tag> diff --git a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_bind-9-8-4-dfsg.swidtag b/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_bind-9-8-4-dfsg.swidtag deleted file mode 100644 index 9e856eb24..000000000 --- a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_bind-9-8-4-dfsg.swidtag +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"> - <entitlement_required_indicator>true</entitlement_required_indicator> - <product_title>bind9</product_title> - <product_version> - <name>9-8-4-dfsg</name> - <numeric> - <major>9</major> - <minor>8</minor> - <build>4</build> - <review>dfsg</review> - </numeric> - </product_version> - <software_creator> - <name>Internet Systems Consortium</name> - <regid>regid.1994-04.org.isc</regid> - </software_creator> - <software_licensor> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </software_licensor> - <software_id> - <unique_id>bind-9-8-4-dfsg</unique_id> - <tag_creator_regid>regid.1999-03.org.debian</tag_creator_regid> - </software_id> - <tag_creator> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </tag_creator> -</software_identification_tag> diff --git a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libsqlite-3-7-13-1.swidtag b/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libsqlite-3-7-13-1.swidtag deleted file mode 100644 index 765026326..000000000 --- a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libsqlite-3-7-13-1.swidtag +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"> - <entitlement_required_indicator>true</entitlement_required_indicator> - <product_title>libsqlite3</product_title> - <product_version> - <name>3.7.13-1</name> - <numeric> - <major>3</major> - <minor>7</minor> - <build>13</build> - <review>1</review> - </numeric> - </product_version> - <software_creator> - <name>SQLite Project</name> - <regid>regid.2002-08.org.sqlite</regid> - </software_creator> - <software_licensor> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </software_licensor> - <software_id> - <unique_id>libsqlite-3-7-13-1</unique_id> - <tag_creator_regid>regid.1999-03.org.debian</tag_creator_regid> - </software_id> - <tag_creator> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </tag_creator> -</software_identification_tag> diff --git a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libssl-1-0-1e-2.swidtag b/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libssl-1-0-1e-2.swidtag deleted file mode 100644 index 5a31c572b..000000000 --- a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libssl-1-0-1e-2.swidtag +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"> - <entitlement_required_indicator>true</entitlement_required_indicator> - <product_title>libssl1.0.0</product_title> - <product_version> - <name>1.0.1e-2</name> - <numeric> - <major>1</major> - <minor>0</minor> - <build>1e</build> - <review>2</review> - </numeric> - </product_version> - <software_creator> - <name>OpenSSL Project</name> - <regid>regid.1998-12.org.openssl</regid> - </software_creator> - <software_licensor> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </software_licensor> - <software_id> - <unique_id>libssl-1-0-1e-2</unique_id> - <tag_creator_regid>regid.1999-03.org.debian</tag_creator_regid> - </software_id> - <tag_creator> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </tag_creator> -</software_identification_tag> diff --git a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libssl-dev-1-0-1e-2.swidtag b/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libssl-dev-1-0-1e-2.swidtag deleted file mode 100644 index cc6888b8d..000000000 --- a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_libssl-dev-1-0-1e-2.swidtag +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"> - <entitlement_required_indicator>true</entitlement_required_indicator> - <product_title>libssl-dev</product_title> - <product_version> - <name>1.0.1e-2</name> - <numeric> - <major>1</major> - <minor>0</minor> - <build>1e</build> - <review>2</review> - </numeric> - </product_version> - <software_creator> - <name>OpenSSL Project</name> - <regid>regid.1998-12.org.openssl</regid> - </software_creator> - <software_licensor> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </software_licensor> - <software_id> - <unique_id>libssl-dev-1-0-1e-2</unique_id> - <tag_creator_regid>regid.1999-03.org.debian</tag_creator_regid> - </software_id> - <tag_creator> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </tag_creator> -</software_identification_tag> diff --git a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_openssl-1-0-1e-2.swidtag b/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_openssl-1-0-1e-2.swidtag deleted file mode 100644 index af0a60d9e..000000000 --- a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_openssl-1-0-1e-2.swidtag +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"> - <entitlement_required_indicator>true</entitlement_required_indicator> - <product_title>openssl</product_title> - <product_version> - <name>1.0.1e-2</name> - <numeric> - <major>1</major> - <minor>0</minor> - <build>1e</build> - <review>2</review> - </numeric> - </product_version> - <software_creator> - <name>OpenSSL Project</name> - <regid>regid.1998-12.org.openssl</regid> - </software_creator> - <software_licensor> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </software_licensor> - <software_id> - <unique_id>openssl-1-0-1e-2</unique_id> - <tag_creator_regid>regid.1999-03.org.debian</tag_creator_regid> - </software_id> - <tag_creator> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </tag_creator> -</software_identification_tag> diff --git a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_sqlite-3-7-13-1.swidtag b/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_sqlite-3-7-13-1.swidtag deleted file mode 100644 index 43d0fdce3..000000000 --- a/src/libimcv/plugins/imc_swid/regid.1999-03.org.debian/regid.1999-03.org.debian_sqlite-3-7-13-1.swidtag +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<software_identification_tag xmlns="http://standards.iso.org/iso/19770/-2/2009/schema.xsd"> - <entitlement_required_indicator>true</entitlement_required_indicator> - <product_title>sqlite3</product_title> - <product_version> - <name>3.7.13-1</name> - <numeric> - <major>3</major> - <minor>7</minor> - <build>13</build> - <review>1</review> - </numeric> - </product_version> - <software_creator> - <name>SQLite Project</name> - <regid>regid.2002-08.org.sqlite</regid> - </software_creator> - <software_licensor> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </software_licensor> - <software_id> - <unique_id>sqlite-3-7-13-1</unique_id> - <tag_creator_regid>regid.1999-03.org.debian</tag_creator_regid> - </software_id> - <tag_creator> - <name>Debian Project</name> - <regid>regid.1999-03.org.debian</regid> - </tag_creator> -</software_identification_tag> diff --git a/src/libimcv/plugins/imc_swid/regid.2004-03.org.strongswan_strongSwan.swidtag.in b/src/libimcv/plugins/imc_swid/strongswan.org_strongSwan.swidtag.in index 8b7b50fdf..4935feab5 100644 --- a/src/libimcv/plugins/imc_swid/regid.2004-03.org.strongswan_strongSwan.swidtag.in +++ b/src/libimcv/plugins/imc_swid/strongswan.org_strongSwan.swidtag.in @@ -2,11 +2,11 @@ <SoftwareIdentity name="strongSwan" - uniqueId="strongSwan-@VERSION_MAJOR@-@VERSION_MINOR@-@VERSION_BUILD@@VERSION_REVIEW@" + tagId="strongSwan-@VERSION_MAJOR@-@VERSION_MINOR@-@VERSION_BUILD@@VERSION_REVIEW@" version="@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_BUILD@@VERSION_REVIEW@" versionScheme="alphanumeric" - xmlns="http://standards.iso.org/iso/19770/-2/2014/schema.xsd"> + xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd"> <Entity name="strongSwan Project" - regid="regid.2004-03.org.strongswan" - role="publisher licensor tagcreator"/> + regid="strongswan.org" + role="softwareCreator licensor tagCreator"/> </SoftwareIdentity> diff --git a/src/libimcv/swid/swid_inventory.c b/src/libimcv/swid/swid_inventory.c index a49286954..7b05e8393 100644 --- a/src/libimcv/swid/swid_inventory.c +++ b/src/libimcv/swid/swid_inventory.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2014 Andreas Steffen + * Copyright (C) 2013-2017 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -237,7 +237,7 @@ static status_t generate_tags(private_swid_inventory_t *this, char *generator, } static bool collect_tags(private_swid_inventory_t *this, char *pathname, - swid_inventory_t *targets) + swid_inventory_t *targets, bool is_swidtag_dir) { char *rel_name, *abs_name; struct stat st; @@ -251,72 +251,49 @@ static bool collect_tags(private_swid_inventory_t *this, char *pathname, pathname, strerror(errno)); return FALSE; } - DBG2(DBG_IMC, "entering %s", pathname); + if (is_swidtag_dir) + { + DBG2(DBG_IMC, "entering %s", pathname); + } while (enumerator->enumerate(enumerator, &rel_name, &abs_name, &st)) { - char * start, *stop; + char *separator, *suffix; chunk_t tag_creator; chunk_t unique_sw_id = chunk_empty, tag_file_path = chunk_empty; - if (!strstr(rel_name, "regid.")) - { - continue; - } if (S_ISDIR(st.st_mode)) { - /* In case of a targeted request */ - if (targets->get_count(targets)) - { - enumerator_t *target_enumerator; - swid_tag_id_t *tag_id; - bool match = FALSE; - - target_enumerator = targets->create_enumerator(targets); - while (target_enumerator->enumerate(target_enumerator, &tag_id)) - { - if (chunk_equals(tag_id->get_tag_creator(tag_id), - chunk_from_str(rel_name))) - { - match = TRUE; - break; - } - } - target_enumerator->destroy(target_enumerator); - - if (!match) - { - continue; - } - } - - if (!collect_tags(this, abs_name, targets)) + if (!collect_tags(this, abs_name, targets, is_swidtag_dir || + streq(rel_name, "swidtag"))) { goto end; } continue; } + if (!is_swidtag_dir) + { + continue; + } - /* parse the regid filename into its components */ - start = rel_name; - stop = strchr(start, '_'); - if (!stop) + /* found a swidtag file? */ + suffix = strstr(rel_name, ".swidtag"); + if (!suffix) { - DBG1(DBG_IMC, " %s", rel_name); - DBG1(DBG_IMC, " '_' separator not found"); - goto end; + continue; } - tag_creator = chunk_create(start, stop-start); - start = stop + 1; - stop = strstr(start, ".swidtag"); - if (!stop) + /* parse the swidtag filename into its components */ + separator = strchr(rel_name, '_'); + if (!separator) { DBG1(DBG_IMC, " %s", rel_name); - DBG1(DBG_IMC, " swidtag postfix not found"); + DBG1(DBG_IMC, " '_' separator not found"); goto end; } - unique_sw_id = chunk_create(start, stop-start); + tag_creator = chunk_create(rel_name, separator-rel_name); + + unique_sw_id = chunk_create(separator+1, suffix-separator-1); tag_file_path = chunk_from_str(abs_name); /* In case of a targeted request */ @@ -334,7 +311,7 @@ static bool collect_tags(private_swid_inventory_t *this, char *pathname, target_tag_creator = tag_id->get_tag_creator(tag_id); if (chunk_equals(target_unique_sw_id, unique_sw_id) && - chunk_equals(target_tag_creator, tag_creator)) + chunk_equals(target_tag_creator, tag_creator)) { match = TRUE; break; @@ -358,7 +335,7 @@ static bool collect_tags(private_swid_inventory_t *this, char *pathname, if (!xml_tag) { DBG1(DBG_IMC, " opening '%s' failed: %s", abs_name, - strerror(errno)); + strerror(errno)); goto end; } @@ -378,7 +355,10 @@ static bool collect_tags(private_swid_inventory_t *this, char *pathname, end: enumerator->destroy(enumerator); - DBG2(DBG_IMC, "leaving %s", pathname); + if (is_swidtag_dir) + { + DBG2(DBG_IMC, "leaving %s", pathname); + } return success; } @@ -396,7 +376,7 @@ METHOD(swid_inventory_t, collect, bool, * Collect swidtag files by iteratively entering all directories in * the tree under the "directory" path. */ - return collect_tags(this, directory, targets); + return collect_tags(this, directory, targets, FALSE); } METHOD(swid_inventory_t, add, void, |