From: Andreas Steffen Date: Sat, 16 May 2015 20:44:40 +0000 (+0200) Subject: Defined PWG HCD IF-M attributes X-Git-Tag: 5.3.3dr6~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e1b06ff08c0adbf1fa322d63868cab6ccefa2e0;p=thirdparty%2Fstrongswan.git Defined PWG HCD IF-M attributes --- diff --git a/src/libimcv/Makefile.am b/src/libimcv/Makefile.am index a613827233..6dd5663c61 100644 --- a/src/libimcv/Makefile.am +++ b/src/libimcv/Makefile.am @@ -84,6 +84,7 @@ libimcv_la_SOURCES = \ pts/components/ita/ita_comp_tboot.h pts/components/ita/ita_comp_tboot.c \ pts/components/ita/ita_comp_tgrub.h pts/components/ita/ita_comp_tgrub.c \ pts/components/tcg/tcg_comp_func_name.h pts/components/tcg/tcg_comp_func_name.c \ + pwg/pwg_attr.h pwg/pwg_attr.c \ seg/seg_contract.h seg/seg_contract.c \ seg/seg_contract_manager.h seg/seg_contract_manager.c \ seg/seg_env.h seg/seg_env.c \ diff --git a/src/libimcv/imcv.c b/src/libimcv/imcv.c index bd4156c19e..ec6ea42888 100644 --- a/src/libimcv/imcv.c +++ b/src/libimcv/imcv.c @@ -1,5 +1,6 @@ /* - * Copyright (C) 2011 Andreas Steffen, HSR Hochschule fuer Technik Rapperswil + * Copyright (C) 2011-2015 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -15,6 +16,7 @@ #include "imcv.h" #include "ietf/ietf_attr.h" #include "ita/ita_attr.h" +#include "pwg/pwg_attr.h" #include "tcg/tcg_attr.h" #include "pts/components/pts_component.h" #include "pts/components/pts_component_manager.h" @@ -179,6 +181,8 @@ bool libimcv_init(bool is_imv) ietf_attr_create_from_data, ietf_attr_names); imcv_pa_tnc_attributes->add_vendor(imcv_pa_tnc_attributes, PEN_ITA, ita_attr_create_from_data, ita_attr_names); + imcv_pa_tnc_attributes->add_vendor(imcv_pa_tnc_attributes, PEN_PWG, + pwg_attr_create_from_data, pwg_attr_names); imcv_pa_tnc_attributes->add_vendor(imcv_pa_tnc_attributes, PEN_TCG, tcg_attr_create_from_data, tcg_attr_names); @@ -235,6 +239,7 @@ void libimcv_deinit(void) imcv_pa_tnc_attributes->remove_vendor(imcv_pa_tnc_attributes, PEN_IETF); imcv_pa_tnc_attributes->remove_vendor(imcv_pa_tnc_attributes, PEN_ITA); + imcv_pa_tnc_attributes->remove_vendor(imcv_pa_tnc_attributes, PEN_PWG); imcv_pa_tnc_attributes->remove_vendor(imcv_pa_tnc_attributes, PEN_TCG); DESTROY_IF(imcv_pa_tnc_attributes); imcv_pa_tnc_attributes = NULL; diff --git a/src/libimcv/pwg/pwg_attr.c b/src/libimcv/pwg/pwg_attr.c new file mode 100644 index 0000000000..5fd887babd --- /dev/null +++ b/src/libimcv/pwg/pwg_attr.c @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2015 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See . + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#include "pwg_attr.h" + +ENUM_BEGIN(pwg_attr_names, PWG_HCD_ATTRS_NATURAL_LANG, + PWG_HCD_VENDOR_SMI_CODE, + "HCD AttributesNaturalLanguage", + "HCD MachineTypeModel", + "HCD VendorName", + "HCD VendorSMICode"); +ENUM_NEXT(pwg_attr_names, PWG_HCD_DEFAULT_PWD_ENABLED, + PWG_HCD_FORWARDING_ENABLED, + PWG_HCD_VENDOR_SMI_CODE, + "HCD DefaultPasswordEnabled", + "HCD FirewallSetting", + "HCD ForwardingEnabled"); +ENUM_NEXT(pwg_attr_names, PWG_HCD_PSTN_FAX_ENABLED, + PWG_HCD_PSTN_FAX_ENABLED, + PWG_HCD_FORWARDING_ENABLED, + "HCD PSTNFaxEnabled"); +ENUM_NEXT(pwg_attr_names, PWG_HCD_TIME_SOURCE, + PWG_HCD_TIME_SOURCE, + PWG_HCD_PSTN_FAX_ENABLED, + "HCD TimeSource"); +ENUM_NEXT(pwg_attr_names, PWG_HCD_FIRMWARE_NAME, + PWG_HCD_FIRMWARE_VERSION, + PWG_HCD_TIME_SOURCE, + "HCD FirmwareName", + "HCD FirmwarePatches", + "HCD FirmwareStringVersion", + "HCD FirmwareVersion"); +ENUM_NEXT(pwg_attr_names, PWG_HCD_RESIDENT_APP_NAME, + PWG_HCD_RESIDENT_APP_VERSION, + PWG_HCD_FIRMWARE_VERSION, + "HCD ResidentApplicationName", + "HCD ResidentApplicationPatches", + "HCD ResidentApplicationStringVersion", + "HCD ResidentApplicationVersion"); +ENUM_NEXT(pwg_attr_names, PWG_HCD_USER_APP_NAME, + PWG_HCD_USER_APP_PERSIST_ENABLED, + PWG_HCD_RESIDENT_APP_VERSION, + "HCD UserApplicationName", + "HCD UserApplicationPatches", + "HCD UserApplicationStringVersion", + "HCD UserApplicationVersion", + "HCD UserApplicationEnabled", + "HCD UserApplicationPersistenceEnabled"); +ENUM_NEXT(pwg_attr_names, PWG_HCD_CERTIFICATION_STATE, + PWG_HCD_CONFIGURATION_STATE, + PWG_HCD_USER_APP_PERSIST_ENABLED, + "HCD CertificationState", + "HCD ConfigurationState"); +ENUM_END(pwg_attr_names, PWG_HCD_CONFIGURATION_STATE); + +/** + * See header + */ +pa_tnc_attr_t* pwg_attr_create_from_data(u_int32_t type, size_t length, chunk_t value) +{ + switch (type) + { + case PWG_HCD_ATTRS_NATURAL_LANG: + case PWG_HCD_MACHINE_TYPE_MODEL: + case PWG_HCD_VENDOR_NAME: + case PWG_HCD_VENDOR_SMI_CODE: + case PWG_HCD_DEFAULT_PWD_ENABLED: + case PWG_HCD_FIREWALL_SETTING: + case PWG_HCD_FORWARDING_ENABLED: + case PWG_HCD_PSTN_FAX_ENABLED: + case PWG_HCD_TIME_SOURCE: + case PWG_HCD_FIRMWARE_NAME: + case PWG_HCD_FIRMWARE_PATCHES: + case PWG_HCD_FIRMWARE_STRING_VERSION: + case PWG_HCD_FIRMWARE_VERSION: + case PWG_HCD_RESIDENT_APP_NAME: + case PWG_HCD_RESIDENT_APP_PATCHES: + case PWG_HCD_RESIDENT_APP_STRING_VERSION: + case PWG_HCD_RESIDENT_APP_VERSION: + case PWG_HCD_USER_APP_NAME: + case PWG_HCD_USER_APP_PATCHES: + case PWG_HCD_USER_APP_STRING_VERSION: + case PWG_HCD_USER_APP_VERSION: + case PWG_HCD_USER_APP_ENABLE: + case PWG_HCD_USER_APP_PERSIST_ENABLED: + case PWG_HCD_CERTIFICATION_STATE: + case PWG_HCD_CONFIGURATION_STATE: + default: + return NULL; + } +} diff --git a/src/libimcv/pwg/pwg_attr.h b/src/libimcv/pwg/pwg_attr.h new file mode 100644 index 0000000000..01db42cd28 --- /dev/null +++ b/src/libimcv/pwg/pwg_attr.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2015 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See . + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +/** + * @defgroup pwg_attr pwg_attr + * @{ @ingroup libimcv + */ + +#ifndef PWG_ATTR_H_ +#define PWG_ATTR_H_ + +#include +#include + +typedef enum pwg_attr_t pwg_attr_t; + +/** + * PWG HCD IF-M Attributes (Hardcopy Device Health Assessment TNC Binding) + */ +enum pwg_attr_t { + PWG_HCD_ATTRS_NATURAL_LANG = 0x00000001, /* 1 */ + PWG_HCD_MACHINE_TYPE_MODEL = 0x00000002, /* 2 */ + PWG_HCD_VENDOR_NAME = 0x00000003, /* 3 */ + PWG_HCD_VENDOR_SMI_CODE = 0x00000004, /* 4 */ + PWG_HCD_DEFAULT_PWD_ENABLED = 0x00000014, /* 20 */ + PWG_HCD_FIREWALL_SETTING = 0x00000015, /* 21 */ + PWG_HCD_FORWARDING_ENABLED = 0x00000016, /* 22 */ + PWG_HCD_PSTN_FAX_ENABLED = 0x00000028, /* 40 */ + PWG_HCD_TIME_SOURCE = 0x00000032, /* 50 ??? */ + PWG_HCD_FIRMWARE_NAME = 0x0000003C, /* 60 */ + PWG_HCD_FIRMWARE_PATCHES = 0x0000003D, /* 61 */ + PWG_HCD_FIRMWARE_STRING_VERSION = 0x0000003E, /* 62 */ + PWG_HCD_FIRMWARE_VERSION = 0x0000003F, /* 63 */ + PWG_HCD_RESIDENT_APP_NAME = 0x00000050, /* 80 */ + PWG_HCD_RESIDENT_APP_PATCHES = 0x00000051, /* 81 */ + PWG_HCD_RESIDENT_APP_STRING_VERSION = 0x00000052, /* 82 */ + PWG_HCD_RESIDENT_APP_VERSION = 0x00000053, /* 83 */ + PWG_HCD_USER_APP_NAME = 0x00000064, /* 100 */ + PWG_HCD_USER_APP_PATCHES = 0x00000065, /* 101 */ + PWG_HCD_USER_APP_STRING_VERSION = 0x00000066, /* 102 */ + PWG_HCD_USER_APP_VERSION = 0x00000067, /* 103 */ + PWG_HCD_USER_APP_ENABLED = 0x00000068, /* 104 */ + PWG_HCD_USER_APP_PERSIST_ENABLED = 0x00000069, /* 105 */ + PWG_HCD_CERTIFICATION_STATE = 0x000000C8, /* 200 */ + PWG_HCD_CONFIGURATION_STATE = 0x000000C9, /* 201 */ +}; + +/** + * enum name for pwg_attr_t. + */ +extern enum_name_t *pwg_attr_names; + +/** + * Create a TCG PA-TNC attribute from data + * + * @param type attribute type + * @param length attribute length + * @param value attribute value or segment + */ +pa_tnc_attr_t* pwg_attr_create_from_data(u_int32_t type, size_t length, + chunk_t value); + +#endif /** PWG_ATTR_H_ @}*/ diff --git a/src/libstrongswan/pen/pen.c b/src/libstrongswan/pen/pen.c index 474a7a876e..9fe47547e8 100644 --- a/src/libstrongswan/pen/pen.c +++ b/src/libstrongswan/pen/pen.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Andreas Steffen + * Copyright (C) 2011-2015 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -23,7 +23,9 @@ ENUM_NEXT(pen_names, PEN_MICROSOFT, PEN_MICROSOFT, PEN_IBM, "Microsoft"); ENUM_NEXT(pen_names, PEN_REDHAT, PEN_REDHAT, PEN_MICROSOFT, "Redhat"); -ENUM_NEXT(pen_names, PEN_ALTIGA, PEN_ALTIGA, PEN_REDHAT, +ENUM_NEXT(pen_names, PEN_PWG, PEN_PWG, PEN_REDHAT, + "PWG"); +ENUM_NEXT(pen_names, PEN_ALTIGA, PEN_ALTIGA, PEN_PWG, "Altiga"); ENUM_NEXT(pen_names, PEN_OSC, PEN_OSC, PEN_ALTIGA, "OSC"); diff --git a/src/libstrongswan/pen/pen.h b/src/libstrongswan/pen/pen.h index 1760a05781..2c5592330c 100644 --- a/src/libstrongswan/pen/pen.h +++ b/src/libstrongswan/pen/pen.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2012 Andreas Steffen + * Copyright (C) 2011-2015 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -39,6 +39,7 @@ enum pen_t { PEN_IBM = 0x000002, /* 2 */ PEN_MICROSOFT = 0x000137, /* 311 */ PEN_REDHAT = 0x000908, /* 2312 */ + PEN_PWG = 0x000A8B, /* 2699 */ PEN_ALTIGA = 0x000c04, /* 3076 */ PEN_OSC = 0x002358, /* 9048 */ PEN_DEBIAN = 0x002572, /* 9586 */