diff options
author | Yves-Alexis Perez <corsac@debian.org> | 2013-11-01 13:32:07 +0100 |
---|---|---|
committer | Yves-Alexis Perez <corsac@debian.org> | 2013-11-01 13:32:07 +0100 |
commit | 5313d2d78ca150515f7f5eb39801c100690b6b29 (patch) | |
tree | c78e420367283bb1b16f14210b12687cdfbd26eb /src/libcharon/plugins/tnccs_20/messages | |
parent | 6b99c8d9cff7b3e8ae8f3204b99e7ea40f791349 (diff) | |
download | vyos-strongswan-5313d2d78ca150515f7f5eb39801c100690b6b29.tar.gz vyos-strongswan-5313d2d78ca150515f7f5eb39801c100690b6b29.zip |
Imported Upstream version 5.1.1
Diffstat (limited to 'src/libcharon/plugins/tnccs_20/messages')
18 files changed, 0 insertions, 2654 deletions
diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_access_recommendation_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_access_recommendation_msg.c deleted file mode 100644 index cdd0d0d0d..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_access_recommendation_msg.c +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_access_recommendation_msg.h" - -#include <bio/bio_writer.h> -#include <bio/bio_reader.h> -#include <utils/debug.h> - -ENUM(pb_access_recommendation_code_names, PB_REC_ACCESS_ALLOWED, PB_REC_QUARANTINED, - "Access Allowed", - "Access Denied", - "Quarantined" -); - -typedef struct private_pb_access_recommendation_msg_t private_pb_access_recommendation_msg_t; - -/** - * PB-Access-Recommendation message (see section 4.7 of RFC 5793) - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Reserved | Access Recommendation Code | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -#define ACCESS_RECOMMENDATION_RESERVED 0x0000 -#define ACCESS_RECOMMENDATION_MSG_SIZE 4 -/** - * Private data of a pb_access_recommendation_msg_t object. - * - */ -struct private_pb_access_recommendation_msg_t { - /** - * Public pb_access_recommendation_msg_t interface. - */ - pb_access_recommendation_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Access recommendation code - */ - u_int16_t recommendation; - - /** - * Encoded message - */ - chunk_t encoding; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_access_recommendation_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_access_recommendation_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_access_recommendation_msg_t *this) -{ - bio_writer_t *writer; - - if (this->encoding.ptr) - { - return; - } - writer = bio_writer_create(ACCESS_RECOMMENDATION_MSG_SIZE); - writer->write_uint16(writer, ACCESS_RECOMMENDATION_RESERVED); - writer->write_uint16(writer, this->recommendation); - this->encoding = writer->get_buf(writer); - this->encoding = chunk_clone(this->encoding); - writer->destroy(writer); -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_access_recommendation_msg_t *this, u_int32_t *offset) -{ - bio_reader_t *reader; - u_int16_t reserved; - - reader = bio_reader_create(this->encoding); - reader->read_uint16(reader, &reserved); - reader->read_uint16(reader, &this->recommendation); - reader->destroy(reader); - - if (this->recommendation < PB_REC_ACCESS_ALLOWED || - this->recommendation > PB_REC_QUARANTINED) - { - DBG1(DBG_TNC, "invalid access recommendation code (%u)", - this->recommendation); - *offset = 2; - return FAILED; - } - - return SUCCESS; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_access_recommendation_msg_t *this) -{ - free(this->encoding.ptr); - free(this); -} - -METHOD(pb_access_recommendation_msg_t, get_access_recommendation, u_int16_t, - private_pb_access_recommendation_msg_t *this) -{ - return this->recommendation; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_access_recommendation_msg_create_from_data(chunk_t data) -{ - private_pb_access_recommendation_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_access_recommendation = _get_access_recommendation, - }, - .type = PB_MSG_ACCESS_RECOMMENDATION, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_access_recommendation_msg_create(u_int16_t recommendation) -{ - private_pb_access_recommendation_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_access_recommendation = _get_access_recommendation, - }, - .type = PB_MSG_ACCESS_RECOMMENDATION, - .recommendation = recommendation, - ); - - return &this->public.pb_interface; -} diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_access_recommendation_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_access_recommendation_msg.h deleted file mode 100644 index 01b83cfd7..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_access_recommendation_msg.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_access_recommendation_msg pb_access_recommendation_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_ACCESS_RECOMMENDATION_MSG_H_ -#define PB_ACCESS_RECOMMENDATION_MSG_H_ - -typedef enum pb_access_recommendation_code_t pb_access_recommendation_code_t; -typedef struct pb_access_recommendation_msg_t pb_access_recommendation_msg_t; - -#include "pb_tnc_msg.h" - -/** - * PB Access Recommendation Codes as defined in section 4.7 of RFC 5793 - */ -enum pb_access_recommendation_code_t { - PB_REC_ACCESS_ALLOWED = 1, - PB_REC_ACCESS_DENIED = 2, - PB_REC_QUARANTINED = 3, -}; - -/** - * enum name for pb_access_recommendation_code_t. - */ -extern enum_name_t *pb_access_recommendation_code_names; - - -/** - * Class representing the PB-Access-Recommendation message type. - */ -struct pb_access_recommendation_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; - - /** - * Get PB Access Recommendation - * - * @return PB Access Recommendation - */ - u_int16_t (*get_access_recommendation)(pb_access_recommendation_msg_t *this); -}; - -/** - * Create a PB-Access-Recommendation message from parameters - * - * @param recommendation Access Recommendation code - */ -pb_tnc_msg_t* pb_access_recommendation_msg_create(u_int16_t recommendation); - -/** - * Create an unprocessed PB-Access-Recommendation message from raw data - * - * @param data PB-Access-Recommendation message data - */ -pb_tnc_msg_t* pb_access_recommendation_msg_create_from_data(chunk_t data); - -#endif /** PB_PA_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_assessment_result_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_assessment_result_msg.c deleted file mode 100644 index 4e50446be..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_assessment_result_msg.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_assessment_result_msg.h" - -#include <tncifimv.h> - -#include <bio/bio_writer.h> -#include <bio/bio_reader.h> -#include <utils/debug.h> - -typedef struct private_pb_assessment_result_msg_t private_pb_assessment_result_msg_t; - -/** - * PB-Assessment-Result message (see section 4.6 of RFC 5793) - * - * 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Assessment Result | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -#define ASSESSMENT_RESULT_MSG_SIZE 4 - -/** - * Private data of a pb_assessment_result_msg_t object. - * - */ -struct private_pb_assessment_result_msg_t { - /** - * Public pb_assessment_result_msg_t interface. - */ - pb_assessment_result_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Assessment result code - */ - u_int32_t assessment_result; - - /** - * Encoded message - */ - chunk_t encoding; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_assessment_result_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_assessment_result_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_assessment_result_msg_t *this) -{ - bio_writer_t *writer; - - if (this->encoding.ptr) - { - return; - } - writer = bio_writer_create(ASSESSMENT_RESULT_MSG_SIZE); - writer->write_uint32(writer, this->assessment_result); - this->encoding = writer->get_buf(writer); - this->encoding = chunk_clone(this->encoding); - writer->destroy(writer); -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_assessment_result_msg_t *this, u_int32_t *offset) -{ - bio_reader_t *reader; - - reader = bio_reader_create(this->encoding); - reader->read_uint32(reader, &this->assessment_result); - reader->destroy(reader); - - if (this->assessment_result < TNC_IMV_EVALUATION_RESULT_COMPLIANT || - this->assessment_result > TNC_IMV_EVALUATION_RESULT_DONT_KNOW) - { - DBG1(DBG_TNC, "invalid assessment result (%u)", - this->assessment_result); - *offset = 0; - return FAILED; - } - - return SUCCESS; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_assessment_result_msg_t *this) -{ - free(this->encoding.ptr); - free(this); -} - -METHOD(pb_assessment_result_msg_t, get_assessment_result, u_int32_t, - private_pb_assessment_result_msg_t *this) -{ - return this->assessment_result; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_assessment_result_msg_create_from_data(chunk_t data) -{ - private_pb_assessment_result_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_assessment_result = _get_assessment_result, - }, - .type = PB_MSG_ASSESSMENT_RESULT, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_assessment_result_msg_create(u_int32_t assessment_result) -{ - private_pb_assessment_result_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_assessment_result = _get_assessment_result, - }, - .type = PB_MSG_ASSESSMENT_RESULT, - .assessment_result = assessment_result, - ); - - return &this->public.pb_interface; -} diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_assessment_result_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_assessment_result_msg.h deleted file mode 100644 index d2b005114..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_assessment_result_msg.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_assessment_result_msg pb_assessment_result_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_ASSESSMENT_RESULT_MSG_H_ -#define PB_ASSESSMENT_RESULT_MSG_H_ - -typedef struct pb_assessment_result_msg_t pb_assessment_result_msg_t; - -#include "pb_tnc_msg.h" - -/** - * Class representing the PB-Assessment-Result message type. - */ -struct pb_assessment_result_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; - - /** - * Get PB Assessment result - * - * @return PB Assessment result - */ - u_int32_t (*get_assessment_result)(pb_assessment_result_msg_t *this); -}; - -/** - * Create a PB-Assessment-Result message from parameters - * - * @param assessment_result Assessment result code - */ -pb_tnc_msg_t* pb_assessment_result_msg_create(u_int32_t assessment_result); - -/** - * Create an unprocessed PB-Assessment-Result message from raw data - * - * @param data PB-Assessment-Result message data - */ -pb_tnc_msg_t* pb_assessment_result_msg_create_from_data(chunk_t data); - -#endif /** PB_PA_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_error_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_error_msg.c deleted file mode 100644 index d048f437c..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_error_msg.c +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_error_msg.h" - -#include <tnc/tnccs/tnccs.h> - -#include <bio/bio_writer.h> -#include <bio/bio_reader.h> -#include <pen/pen.h> -#include <utils/debug.h> - -ENUM(pb_tnc_error_code_names, PB_ERROR_UNEXPECTED_BATCH_TYPE, - PB_ERROR_VERSION_NOT_SUPPORTED, - "Unexpected Batch Type", - "Invalid Parameter", - "Local Error", - "Unsupported Mandatory Message", - "Version Not Supported" -); - -typedef struct private_pb_error_msg_t private_pb_error_msg_t; - -/** - * PB-Error message (see section 4.9 of RFC 5793) - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Flags | Error Code Vendor ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Error Code | Reserved | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Error Parameters (Variable Length) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -#define ERROR_FLAG_NONE 0x00 -#define ERROR_FLAG_FATAL (1<<7) -#define ERROR_RESERVED 0x0000 -#define ERROR_HEADER_SIZE 8 - -/** - * Private data of a pb_error_msg_t object. - * - */ -struct private_pb_error_msg_t { - /** - * Public pb_error_msg_t interface. - */ - pb_error_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Fatal flag - */ - bool fatal; - - /** - * PB Error Code Vendor ID - */ - u_int32_t vendor_id; - - /** - * PB Error Code - */ - u_int16_t error_code; - - /** - * PB Error Offset - */ - u_int32_t error_offset; - - /** - * Bad PB-TNC version received - */ - u_int8_t bad_version; - - /** - * Encoded message - */ - chunk_t encoding; - - /** - * reference count - */ - refcount_t ref; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_error_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_error_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_error_msg_t *this) -{ - bio_writer_t *writer; - - if (this->encoding.ptr) - { - return; - } - - /* build message header */ - writer = bio_writer_create(ERROR_HEADER_SIZE); - writer->write_uint8 (writer, this->fatal ? - ERROR_FLAG_FATAL : ERROR_FLAG_NONE); - writer->write_uint24(writer, this->vendor_id); - writer->write_uint16(writer, this->error_code); - writer->write_uint16(writer, ERROR_RESERVED); - - /* build message body */ - if (this->error_code == PB_ERROR_VERSION_NOT_SUPPORTED) - { - /* Bad version */ - writer->write_uint8(writer, this->bad_version); - writer->write_uint8(writer, PB_TNC_VERSION); /* Max version */ - writer->write_uint8(writer, PB_TNC_VERSION); /* Min version */ - writer->write_uint8(writer, 0x00); /* Reserved */ - } - else - { - /* Error Offset */ - writer->write_uint32(writer, this->error_offset); - } - this->encoding = writer->get_buf(writer); - this->encoding = chunk_clone(this->encoding); - writer->destroy(writer); -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_error_msg_t *this, u_int32_t *offset) -{ - u_int8_t flags, max_version, min_version; - u_int16_t reserved; - bio_reader_t *reader; - - if (this->encoding.len < ERROR_HEADER_SIZE) - { - DBG1(DBG_TNC,"%N message is shorter than header size of %u bytes", - pb_tnc_msg_type_names, PB_MSG_ERROR, ERROR_HEADER_SIZE); - *offset = 0; - return FAILED; - } - - /* process message header */ - reader = bio_reader_create(this->encoding); - reader->read_uint8 (reader, &flags); - reader->read_uint24(reader, &this->vendor_id); - reader->read_uint16(reader, &this->error_code); - reader->read_uint16(reader, &reserved); - this->fatal = (flags & ERROR_FLAG_FATAL) != ERROR_FLAG_NONE; - - if (this->vendor_id == PEN_IETF && reader->remaining(reader) == 4) - { - if (this->error_code == PB_ERROR_VERSION_NOT_SUPPORTED) - { - reader->read_uint8(reader, &this->bad_version); - reader->read_uint8(reader, &max_version); - reader->read_uint8(reader, &min_version); - } - else - { - reader->read_uint32(reader, &this->error_offset); - } - } - reader->destroy(reader); - - return SUCCESS; -} - -METHOD(pb_tnc_msg_t, get_ref, pb_tnc_msg_t*, - private_pb_error_msg_t *this) -{ - ref_get(&this->ref); - return &this->public.pb_interface; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_error_msg_t *this) -{ - if (ref_put(&this->ref)) - { - free(this->encoding.ptr); - free(this); - } -} - -METHOD(pb_error_msg_t, get_fatal_flag, bool, - private_pb_error_msg_t *this) -{ - return this->fatal; -} - -METHOD(pb_error_msg_t, get_vendor_id, u_int32_t, - private_pb_error_msg_t *this) -{ - return this->vendor_id; -} - -METHOD(pb_error_msg_t, get_error_code, u_int16_t, - private_pb_error_msg_t *this) -{ - return this->error_code; -} - -METHOD(pb_error_msg_t, get_offset, u_int32_t, - private_pb_error_msg_t *this) -{ - return this->error_offset; -} - -METHOD(pb_error_msg_t, get_bad_version, u_int8_t, - private_pb_error_msg_t *this) -{ - return this->bad_version; -} - -METHOD(pb_error_msg_t, set_bad_version, void, - private_pb_error_msg_t *this, u_int8_t version) -{ - this->bad_version = version; -} - -/** - * See header - */ -pb_tnc_msg_t* pb_error_msg_create(bool fatal, u_int32_t vendor_id, - pb_tnc_error_code_t error_code) -{ - private_pb_error_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .get_ref = _get_ref, - .destroy = _destroy, - }, - .get_fatal_flag = _get_fatal_flag, - .get_vendor_id = _get_vendor_id, - .get_error_code = _get_error_code, - .get_offset = _get_offset, - .get_bad_version = _get_bad_version, - .set_bad_version = _set_bad_version, - }, - .type = PB_MSG_ERROR, - .ref = 1, - .fatal = fatal, - .vendor_id = vendor_id, - .error_code = error_code, - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t* pb_error_msg_create_with_offset(bool fatal, u_int32_t vendor_id, - pb_tnc_error_code_t error_code, - u_int32_t error_offset) -{ - private_pb_error_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .get_ref = _get_ref, - .destroy = _destroy, - }, - .get_fatal_flag = _get_fatal_flag, - .get_vendor_id = _get_vendor_id, - .get_error_code = _get_error_code, - .get_offset = _get_offset, - .get_bad_version = _get_bad_version, - .set_bad_version = _set_bad_version, - }, - .type = PB_MSG_ERROR, - .ref = 1, - .fatal = fatal, - .vendor_id = vendor_id, - .error_code = error_code, - .error_offset = error_offset, - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_error_msg_create_from_data(chunk_t data) -{ - private_pb_error_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .get_ref = _get_ref, - .destroy = _destroy, - }, - .get_fatal_flag = _get_fatal_flag, - .get_vendor_id = _get_vendor_id, - .get_error_code = _get_error_code, - .get_offset = _get_offset, - .get_bad_version = _get_bad_version, - .set_bad_version = _set_bad_version, - }, - .type = PB_MSG_ERROR, - .ref = 1, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_error_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_error_msg.h deleted file mode 100644 index 8b92742b5..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_error_msg.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_error_msg pb_error_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_ERROR_MSG_H_ -#define PB_ERROR_MSG_H_ - -typedef enum pb_tnc_error_code_t pb_tnc_error_code_t; -typedef struct pb_error_msg_t pb_error_msg_t; - -#include "pb_tnc_msg.h" - -/** - * PB-TNC Error Codes as defined in section 4.9.1 of RFC 5793 - */ -enum pb_tnc_error_code_t { - PB_ERROR_UNEXPECTED_BATCH_TYPE = 0, - PB_ERROR_INVALID_PARAMETER = 1, - PB_ERROR_LOCAL_ERROR = 2, - PB_ERROR_UNSUPPORTED_MANDATORY_MSG = 3, - PB_ERROR_VERSION_NOT_SUPPORTED = 4 -}; - -/** - * enum name for pb_tnc_error_code_t. - */ -extern enum_name_t *pb_tnc_error_code_names; - -/** - * Class representing the PB-Error message type. - */ -struct pb_error_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; - - /** - * Get the fatal flag - * - * @return fatal flag - */ - bool (*get_fatal_flag)(pb_error_msg_t *this); - - /** - * Get PB Error code Vendor ID - * - * @return PB Error Code Vendor ID - */ - u_int32_t (*get_vendor_id)(pb_error_msg_t *this); - - /** - * Get PB Error Code - * - * @return PB Error Code - */ - u_int16_t (*get_error_code)(pb_error_msg_t *this); - - /** - * Get the PB Error Offset - * - * @return PB Error Offset - */ - u_int32_t (*get_offset)(pb_error_msg_t *this); - - /** - * Get the PB Bad Version - * - * @return PB Bad Version - */ - u_int8_t (*get_bad_version)(pb_error_msg_t *this); - - /** - * Set the PB Bad Version - * - * @param version PB Bad Version - */ - void (*set_bad_version)(pb_error_msg_t *this, u_int8_t version); -}; - -/** - * Create a PB-Error message from parameters - * - * @param fatal fatal flag - * @param vendor_id Error Code Vendor ID - * @param error_code Error Code - */ -pb_tnc_msg_t* pb_error_msg_create(bool fatal, u_int32_t vendor_id, - pb_tnc_error_code_t error_code); - -/** - * Create a PB-Error message from parameters with offset field - * - * @param fatal fatal flag - * @param vendor_id Error Code Vendor ID - * @param error_code Error Code - * @param error_offset Error Offset - */ -pb_tnc_msg_t* pb_error_msg_create_with_offset(bool fatal, u_int32_t vendor_id, - pb_tnc_error_code_t error_code, - u_int32_t error_offset); - -/** - * Create an unprocessed PB-Error message from raw data - * - * @param data PB-Error message data - */ -pb_tnc_msg_t* pb_error_msg_create_from_data(chunk_t data); - -#endif /** PB_PA_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_experimental_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_experimental_msg.c deleted file mode 100644 index 7dfba136f..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_experimental_msg.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_experimental_msg.h" - -typedef struct private_pb_experimental_msg_t private_pb_experimental_msg_t; - -/** - * Private data of a pb_experimental_msg_t object. - * - */ -struct private_pb_experimental_msg_t { - /** - * Public pb_experimental_msg_t interface. - */ - pb_experimental_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Encoded message - */ - chunk_t encoding; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_experimental_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_experimental_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_experimental_msg_t *this) -{ - /* nothing to do since message contents equal encoding */ -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_experimental_msg_t *this, u_int32_t *offset) -{ - return SUCCESS; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_experimental_msg_t *this) -{ - free(this->encoding.ptr); - free(this); -} - -/** - * See header - */ -pb_tnc_msg_t *pb_experimental_msg_create_from_data(chunk_t data) -{ - private_pb_experimental_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - }, - .type = PB_MSG_EXPERIMENTAL, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_experimental_msg_create(chunk_t body) -{ - return pb_experimental_msg_create_from_data(body); -} diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_experimental_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_experimental_msg.h deleted file mode 100644 index b1cc4f46e..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_experimental_msg.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_experimental_msg pb_experimental_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_EXPERIMENTAL_MSG_H_ -#define PB_EXPERIMENTAL_MSG_H_ - -typedef struct pb_experimental_msg_t pb_experimental_msg_t; - -#include "pb_tnc_msg.h" - -/** - * Class representing the PB-Experimental message type. - */ -struct pb_experimental_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; -}; - -/** - * Create a PB-Experimental message from parameters - * - * @param body message body - */ -pb_tnc_msg_t* pb_experimental_msg_create(chunk_t body); - -/** - * Create an unprocessed PB-Experimental message from raw data - * - * @param data PB-Experimental message data - */ -pb_tnc_msg_t* pb_experimental_msg_create_from_data(chunk_t data); - -#endif /** PB_EXPERIMENTAL_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_language_preference_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_language_preference_msg.c deleted file mode 100644 index 70a03cdc5..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_language_preference_msg.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_language_preference_msg.h" - -#include <bio/bio_writer.h> -#include <bio/bio_reader.h> -#include <utils/debug.h> - -typedef struct private_pb_language_preference_msg_t private_pb_language_preference_msg_t; - -/** - * PB-Language-Preference message (see section 4.10 of RFC 5793) - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Language Preference (Variable Length) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -#define PB_LANG_PREFIX "Accept-Language: " -#define PB_LANG_PREFIX_LEN strlen(PB_LANG_PREFIX) - -/** - * Private data of a pb_language_preference_msg_t object. - * - */ -struct private_pb_language_preference_msg_t { - /** - * Public pb_access_recommendation_msg_t interface. - */ - pb_language_preference_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Language preference - */ - chunk_t language_preference; - - /** - * Encoded message - */ - chunk_t encoding; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_language_preference_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_language_preference_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_language_preference_msg_t *this) -{ - if (this->encoding.ptr) - { - return; - } - this->encoding = chunk_cat("cc", - chunk_create(PB_LANG_PREFIX, PB_LANG_PREFIX_LEN), - this->language_preference); -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_language_preference_msg_t *this, u_int32_t *offset) -{ - chunk_t lang; - - if (this->encoding.len >= PB_LANG_PREFIX_LEN && - memeq(this->encoding.ptr, PB_LANG_PREFIX, PB_LANG_PREFIX_LEN)) - { - lang = chunk_skip(this->encoding, PB_LANG_PREFIX_LEN); - this->language_preference = lang.len ? chunk_clone(lang) : chunk_empty; - } - else - { - DBG1(DBG_TNC, "language preference must be preceded by '%s'", - PB_LANG_PREFIX); - *offset = 0; - return FAILED; - } - - if (this->language_preference.len && - this->language_preference.ptr[this->language_preference.len-1] == '\0') - { - DBG1(DBG_TNC, "language preference must not be null terminated"); - *offset = PB_LANG_PREFIX_LEN + this->language_preference.len - 1; - return FAILED; - } - - return SUCCESS; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_language_preference_msg_t *this) -{ - free(this->encoding.ptr); - free(this->language_preference.ptr); - free(this); -} - -METHOD(pb_language_preference_msg_t, get_language_preference, chunk_t, - private_pb_language_preference_msg_t *this) -{ - return this->language_preference; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_language_preference_msg_create_from_data(chunk_t data) -{ - private_pb_language_preference_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_language_preference = _get_language_preference, - }, - .type = PB_MSG_LANGUAGE_PREFERENCE, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_language_preference_msg_create(chunk_t language_preference) -{ - private_pb_language_preference_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_language_preference = _get_language_preference, - }, - .type = PB_MSG_LANGUAGE_PREFERENCE, - .language_preference = chunk_clone(language_preference), - ); - - return &this->public.pb_interface; -} diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_language_preference_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_language_preference_msg.h deleted file mode 100644 index 17106f6fa..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_language_preference_msg.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_language_preference_msg pb_language_preference_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_LANGUAGE_PREFERENCE_MSG_H_ -#define PB_LANGUAGE_PREFERENCE_MSG_H_ - -typedef struct pb_language_preference_msg_t pb_language_preference_msg_t; - -#include "pb_tnc_msg.h" - -/** - * Class representing the PB-Language-Preference message type. - */ -struct pb_language_preference_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; - - /** - * Get PB Language Preference - * - * @return Language preference - */ - chunk_t (*get_language_preference)(pb_language_preference_msg_t *this); -}; - -/** - * Create a PB-Language-Preference message from parameters - * - * @param language_preference Preferred language(s) - */ -pb_tnc_msg_t* pb_language_preference_msg_create(chunk_t language_preference); - -/** - * Create an unprocessed PB-Language-Preference message from raw data - * - * @param data PB-Language-Preference message data - */ -pb_tnc_msg_t* pb_language_preference_msg_create_from_data(chunk_t data); - -#endif /** PB_PA_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_pa_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_pa_msg.c deleted file mode 100644 index aa5e9c723..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_pa_msg.c +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyanbuu - * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_pa_msg.h" - -#include <tnc/tnccs/tnccs.h> - -#include <bio/bio_writer.h> -#include <bio/bio_reader.h> -#include <pen/pen.h> -#include <utils/debug.h> - -typedef struct private_pb_pa_msg_t private_pb_pa_msg_t; - -/** - * PB-PA message - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Flags | PA Message Vendor ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | PA Subtype | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Posture Collector Identifier | Posture Validator Identifier | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | PA Message Body (Variable Length) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -#define PA_FLAG_NONE 0x00 -#define PA_FLAG_EXCL (1<<7) -#define PA_RESERVED_SUBTYPE 0xffffffff - - -/** - * Private data of a pb_pa_msg_t object. - * - */ -struct private_pb_pa_msg_t { - /** - * Public pb_pa_msg_t interface. - */ - pb_pa_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Exclusive flag - */ - bool excl; - - /** - * Vendor-specific PA Subtype - */ - pen_type_t subtype; - - /** - * Posture Validator Identifier - */ - u_int16_t collector_id; - - /** - * Posture Validator Identifier - */ - u_int16_t validator_id; - - /** - * PA Message Body - */ - chunk_t msg_body; - - /** - * Encoded message - */ - chunk_t encoding; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_pa_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_pa_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_pa_msg_t *this) -{ - chunk_t msg_header; - bio_writer_t *writer; - - if (this->encoding.ptr) - { - return; - } - - /* build message header */ - writer = bio_writer_create(64); - writer->write_uint8 (writer, this->excl ? PA_FLAG_EXCL : PA_FLAG_NONE); - writer->write_uint24(writer, this->subtype.vendor_id); - writer->write_uint32(writer, this->subtype.type); - writer->write_uint16(writer, this->collector_id); - writer->write_uint16(writer, this->validator_id); - msg_header = writer->get_buf(writer); - - /* create encoding by concatenating message header and message body */ - this->encoding = chunk_cat("cc", msg_header, this->msg_body); - writer->destroy(writer); -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_pa_msg_t *this, u_int32_t *offset) -{ - u_int8_t flags; - size_t msg_body_len; - bio_reader_t *reader; - - /* process message header */ - reader = bio_reader_create(this->encoding); - reader->read_uint8 (reader, &flags); - reader->read_uint24(reader, &this->subtype.vendor_id); - reader->read_uint32(reader, &this->subtype.type); - reader->read_uint16(reader, &this->collector_id); - reader->read_uint16(reader, &this->validator_id); - this->excl = ((flags & PA_FLAG_EXCL) != PA_FLAG_NONE); - - /* process message body */ - msg_body_len = reader->remaining(reader); - if (msg_body_len) - { - reader->read_data(reader, msg_body_len, &this->msg_body); - this->msg_body = chunk_clone(this->msg_body); - } - reader->destroy(reader); - - if (this->subtype.vendor_id == PEN_RESERVED) - { - DBG1(DBG_TNC, "Vendor ID 0x%06x is reserved", PEN_RESERVED); - *offset = 1; - return FAILED; - } - - if (this->subtype.type == PA_RESERVED_SUBTYPE) - { - DBG1(DBG_TNC, "PA Subtype 0x%08x is reserved", PA_RESERVED_SUBTYPE); - *offset = 4; - return FAILED; - } - - return SUCCESS; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_pa_msg_t *this) -{ - free(this->encoding.ptr); - free(this->msg_body.ptr); - free(this); -} - -METHOD(pb_pa_msg_t, get_subtype, pen_type_t, - private_pb_pa_msg_t *this) -{ - return this->subtype; -} - -METHOD(pb_pa_msg_t, get_collector_id, u_int16_t, - private_pb_pa_msg_t *this) -{ - return this->collector_id; -} - -METHOD(pb_pa_msg_t, get_validator_id, u_int16_t, - private_pb_pa_msg_t *this) -{ - return this->validator_id; -} - -METHOD(pb_pa_msg_t, get_body, chunk_t, - private_pb_pa_msg_t *this) -{ - return this->msg_body; -} - -METHOD(pb_pa_msg_t, get_exclusive_flag, bool, - private_pb_pa_msg_t *this) -{ - return this->excl; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_pa_msg_create_from_data(chunk_t data) -{ - private_pb_pa_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .process = _process, - .destroy = _destroy, - }, - .get_subtype = _get_subtype, - .get_collector_id = _get_collector_id, - .get_validator_id = _get_validator_id, - .get_body = _get_body, - .get_exclusive_flag = _get_exclusive_flag, - }, - .type = PB_MSG_PA, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_pa_msg_create(u_int32_t vendor_id, u_int32_t subtype, - u_int16_t collector_id, u_int16_t validator_id, - bool excl, chunk_t msg_body) -{ - private_pb_pa_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_subtype= _get_subtype, - .get_collector_id = _get_collector_id, - .get_validator_id = _get_validator_id, - .get_body = _get_body, - .get_exclusive_flag = _get_exclusive_flag, - }, - .type = PB_MSG_PA, - .subtype = { vendor_id, subtype }, - .collector_id = collector_id, - .validator_id = validator_id, - .excl = excl, - .msg_body = chunk_clone(msg_body), - ); - - return &this->public.pb_interface; -} diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_pa_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_pa_msg.h deleted file mode 100644 index 5c9b7c0bf..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_pa_msg.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_pa_msg pb_pa_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_PA_MSG_H_ -#define PB_PA_MSG_H_ - -typedef struct pb_pa_msg_t pb_pa_msg_t; - -#include "pb_tnc_msg.h" - -#include <pen/pen.h> - -/** - * Class representing the PB-PA message type. - */ -struct pb_pa_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; - - /** - * Get PA Message Vendor ID and Subtype - * - * @return Vendor-specific PA Subtype - */ - pen_type_t (*get_subtype)(pb_pa_msg_t *this); - - /** - * Get Posture Collector ID - * - * @return Posture Collector ID - */ - u_int16_t (*get_collector_id)(pb_pa_msg_t *this); - - /** - * Get Posture Validator ID - * - * @return Posture Validator ID - */ - u_int16_t (*get_validator_id)(pb_pa_msg_t *this); - - /** - * Get the PA Message Body - * - * @return PA Message Body - */ - chunk_t (*get_body)(pb_pa_msg_t *this); - - /** - * Get the exclusive flag - * - * @return exclusive flag - */ - bool (*get_exclusive_flag)(pb_pa_msg_t *this); - -}; - -/** - * Create a PB-PA message from parameters - * - * @param vendor_id PA Message Vendor ID - * @param subtype PA Subtype - * @param collector_id Posture Collector ID - * @param validator_id Posture Validator ID - * @param excl Exclusive Flag - * @param msg_body PA Message Body - */ -pb_tnc_msg_t *pb_pa_msg_create(u_int32_t vendor_id, u_int32_t subtype, - u_int16_t collector_id, u_int16_t validator_id, - bool excl, chunk_t msg_body); - -/** - * Create an unprocessed PB-PA message from raw data - * - * @param data PB-PA message data - */ -pb_tnc_msg_t* pb_pa_msg_create_from_data(chunk_t data); - -#endif /** PB_PA_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_reason_string_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_reason_string_msg.c deleted file mode 100644 index 935c52d7b..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_reason_string_msg.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_reason_string_msg.h" - -#include <bio/bio_writer.h> -#include <bio/bio_reader.h> -#include <utils/debug.h> - -typedef struct private_pb_reason_string_msg_t private_pb_reason_string_msg_t; - -/** - * PB-Language-Preference message (see section 4.11 of RFC 5793) - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Reason String Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Reason String (Variable Length) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Lang Code Len | Reason String Language Code (Variable Length) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -/** - * Private data of a pb_reason_string_msg_t object. - * - */ -struct private_pb_reason_string_msg_t { - /** - * Public pb_reason_string_msg_t interface. - */ - pb_reason_string_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Reason string - */ - chunk_t reason_string; - - /** - * Language code - */ - chunk_t language_code; - - /** - * Encoded message - */ - chunk_t encoding; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_reason_string_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_reason_string_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_reason_string_msg_t *this) -{ - bio_writer_t *writer; - - if (this->encoding.ptr) - { - return; - } - writer = bio_writer_create(64); - writer->write_data32(writer, this->reason_string); - writer->write_data8 (writer, this->language_code); - - this->encoding = writer->get_buf(writer); - this->encoding = chunk_clone(this->encoding); - writer->destroy(writer); -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_reason_string_msg_t *this, u_int32_t *offset) -{ - bio_reader_t *reader; - - reader = bio_reader_create(this->encoding); - if (!reader->read_data32(reader, &this->reason_string)) - { - DBG1(DBG_TNC, "could not parse reason string"); - reader->destroy(reader); - *offset = 0; - return FAILED; - }; - this->reason_string = chunk_clone(this->reason_string); - - if (this->reason_string.len && - this->reason_string.ptr[this->reason_string.len-1] == '\0') - { - DBG1(DBG_TNC, "reason string must not be null terminated"); - reader->destroy(reader); - *offset = 3 + this->reason_string.len; - return FAILED; - } - - if (!reader->read_data8(reader, &this->language_code)) - { - DBG1(DBG_TNC, "could not parse language code"); - reader->destroy(reader); - *offset = 4 + this->reason_string.len; - return FAILED; - }; - this->language_code = chunk_clone(this->language_code); - reader->destroy(reader); - - if (this->language_code.len && - this->language_code.ptr[this->language_code.len-1] == '\0') - { - DBG1(DBG_TNC, "language code must not be null terminated"); - *offset = 4 + this->reason_string.len + this->language_code.len; - return FAILED; - } - - return SUCCESS; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_reason_string_msg_t *this) -{ - free(this->encoding.ptr); - free(this->reason_string.ptr); - free(this->language_code.ptr); - free(this); -} - -METHOD(pb_reason_string_msg_t, get_reason_string, chunk_t, - private_pb_reason_string_msg_t *this) -{ - return this->reason_string; -} - -METHOD(pb_reason_string_msg_t, get_language_code, chunk_t, - private_pb_reason_string_msg_t *this) -{ - return this->language_code; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_reason_string_msg_create_from_data(chunk_t data) -{ - private_pb_reason_string_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_reason_string = _get_reason_string, - .get_language_code = _get_language_code, - }, - .type = PB_MSG_REASON_STRING, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_reason_string_msg_create(chunk_t reason_string, - chunk_t language_code) -{ - private_pb_reason_string_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_reason_string = _get_reason_string, - .get_language_code = _get_language_code, - }, - .type = PB_MSG_REASON_STRING, - .reason_string = chunk_clone(reason_string), - .language_code = chunk_clone(language_code), - ); - - return &this->public.pb_interface; -} diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_reason_string_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_reason_string_msg.h deleted file mode 100644 index bb296a90c..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_reason_string_msg.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2010 Sansar Choinyambuu - * 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_reason_string_msg pb_reason_string_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_REASON_STRING_MSG_H_ -#define PB_REASON_STRING_MSG_H_ - -typedef struct pb_reason_string_msg_t pb_reason_string_msg_t; - -#include "pb_tnc_msg.h" - -/** - * Class representing the PB-Reason-String message type. - */ -struct pb_reason_string_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; - - /** - * Get Reason String - * - * @return Reason string - */ - chunk_t (*get_reason_string)(pb_reason_string_msg_t *this); - - /** - * Get Reason String Language Code - * - * @return Language code - */ - chunk_t (*get_language_code)(pb_reason_string_msg_t *this); -}; - -/** - * Create a PB-Reason-String message from parameters - * - * @param reason_string Reason string - * @param language_code Language code - */ -pb_tnc_msg_t* pb_reason_string_msg_create(chunk_t reason_string, - chunk_t language_code); - -/** - * Create an unprocessed PB-Reason-String message from raw data - * - * @param data PB-Reason-String message data - */ -pb_tnc_msg_t* pb_reason_string_msg_create_from_data(chunk_t data); - -#endif /** PB_PA_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_remediation_parameters_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_remediation_parameters_msg.c deleted file mode 100644 index 2ef8dd6cd..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_remediation_parameters_msg.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_remediation_parameters_msg.h" - -#include <bio/bio_writer.h> -#include <bio/bio_reader.h> -#include <utils/debug.h> - -ENUM(pb_tnc_remed_param_type_names, PB_REMEDIATION_URI, PB_REMEDIATION_STRING, - "Remediation-URI", - "Remediation-String" -); - -typedef struct private_pb_remediation_parameters_msg_t private_pb_remediation_parameters_msg_t; - -/** - * PB-Remediation-Parameters message (see section 4.8 of RFC 5793) - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Reserved | Remediation Parameters Vendor ID | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Remediation Parameters Type | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Remediation Parameters (Variable Length) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Remediation String Length | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Remediation String (Variable Length) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Lang Code Len | Remediation String Lang Code (Variable Len) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -/** - * Private data of a pb_remediation_parameters_msg_t object. - * - */ -struct private_pb_remediation_parameters_msg_t { - /** - * Public pb_remediation_parameters_msg_t interface. - */ - pb_remediation_parameters_msg_t public; - - /** - * PB-TNC message type - */ - pb_tnc_msg_type_t type; - - /** - * Remediation Parameters Type - */ - pen_type_t parameters_type; - - /** - * Remediation Parameters - */ - chunk_t parameters; - - /** - * Remediation String - */ - chunk_t string; - - /** - * Remediation Language Code - */ - chunk_t lang_code; - - /** - * Encoded message - */ - chunk_t encoding; -}; - -METHOD(pb_tnc_msg_t, get_type, pb_tnc_msg_type_t, - private_pb_remediation_parameters_msg_t *this) -{ - return this->type; -} - -METHOD(pb_tnc_msg_t, get_encoding, chunk_t, - private_pb_remediation_parameters_msg_t *this) -{ - return this->encoding; -} - -METHOD(pb_tnc_msg_t, build, void, - private_pb_remediation_parameters_msg_t *this) -{ - bio_writer_t *writer; - - if (this->encoding.ptr) - { - return; - } - writer = bio_writer_create(64); - writer->write_uint32(writer, this->parameters_type.vendor_id); - writer->write_uint32(writer, this->parameters_type.type); - writer->write_data32(writer, this->parameters); - - this->encoding = writer->get_buf(writer); - this->encoding = chunk_clone(this->encoding); - writer->destroy(writer); -} - -METHOD(pb_tnc_msg_t, process, status_t, - private_pb_remediation_parameters_msg_t *this, u_int32_t *offset) -{ - bio_reader_t *reader; - u_int8_t reserved; - status_t status = SUCCESS; - u_char *pos; - - *offset = 0; - - /* process message */ - reader = bio_reader_create(this->encoding); - reader->read_uint8 (reader, &reserved); - reader->read_uint24(reader, &this->parameters_type.vendor_id); - reader->read_uint32(reader, &this->parameters_type.type); - reader->read_data (reader, reader->remaining(reader), &this->parameters); - - this->parameters = chunk_clone(this->parameters); - reader->destroy(reader); - - if (this->parameters_type.vendor_id == PEN_IETF && - this->parameters_type.type == PB_REMEDIATION_STRING) - { - reader = bio_reader_create(this->parameters); - status = FAILED; - *offset = 8; - - if (!reader->read_data32(reader, &this->string)) - { - DBG1(DBG_TNC, "insufficient data for remediation string"); - goto end; - }; - *offset += 4; - - pos = memchr(this->string.ptr, '\0', this->string.len); - if (pos) - { - DBG1(DBG_TNC, "nul termination in remediation string"); - *offset += (pos - this->string.ptr); - goto end; - } - *offset += this->string.len; - - if (!reader->read_data8(reader, &this->lang_code)) - { - DBG1(DBG_TNC, "insufficient data for remediation string lang code"); - goto end; - }; - *offset += 1; - - pos = memchr(this->lang_code.ptr, '\0', this->lang_code.len); - - if (pos) - { - DBG1(DBG_TNC, "nul termination in remediation string lang code"); - *offset += (pos - this->lang_code.ptr); - goto end; - } - status = SUCCESS; - -end: - reader->destroy(reader); - } - return status; -} - -METHOD(pb_tnc_msg_t, destroy, void, - private_pb_remediation_parameters_msg_t *this) -{ - free(this->encoding.ptr); - free(this->parameters.ptr); - free(this); -} - -METHOD(pb_remediation_parameters_msg_t, get_parameters_type, pen_type_t, - private_pb_remediation_parameters_msg_t *this) -{ - return this->parameters_type; -} - -METHOD(pb_remediation_parameters_msg_t, get_parameters, chunk_t, - private_pb_remediation_parameters_msg_t *this) -{ - return this->parameters; -} - -METHOD(pb_remediation_parameters_msg_t, get_string, chunk_t, - private_pb_remediation_parameters_msg_t *this, chunk_t *lang_code) -{ - if (lang_code) - { - *lang_code = this->lang_code; - } - return this->string; -} - -/** - * See header - */ -pb_tnc_msg_t* pb_remediation_parameters_msg_create(pen_type_t parameters_type, - chunk_t parameters) -{ - private_pb_remediation_parameters_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_parameters_type = _get_parameters_type, - .get_parameters = _get_parameters, - .get_uri = _get_parameters, - .get_string = _get_string, - }, - .type = PB_MSG_REMEDIATION_PARAMETERS, - .parameters_type = parameters_type, - .parameters = chunk_clone(parameters), - ); - - return &this->public.pb_interface; -} - -/** - * Described in header. - */ -pb_tnc_msg_t* pb_remediation_parameters_msg_create_from_uri(chunk_t uri) -{ - pen_type_t type = { PEN_IETF, PB_REMEDIATION_URI }; - - return pb_remediation_parameters_msg_create(type, uri); -} - -/** - * Described in header. - */ -pb_tnc_msg_t* pb_remediation_parameters_msg_create_from_string(chunk_t string, - chunk_t lang_code) -{ - pb_tnc_msg_t *msg; - bio_writer_t *writer; - pen_type_t type = { PEN_IETF, PB_REMEDIATION_STRING }; - - /* limit language code to 255 octets */ - lang_code.len = min(255, lang_code.len); - - writer = bio_writer_create(4 + string.len + 1 + lang_code.len); - writer->write_data32(writer, string); - writer->write_data8 (writer, lang_code); - - msg = pb_remediation_parameters_msg_create(type, writer->get_buf(writer)); - writer->destroy(writer); - - return msg; -} - -/** - * See header - */ -pb_tnc_msg_t *pb_remediation_parameters_msg_create_from_data(chunk_t data) -{ - private_pb_remediation_parameters_msg_t *this; - - INIT(this, - .public = { - .pb_interface = { - .get_type = _get_type, - .get_encoding = _get_encoding, - .build = _build, - .process = _process, - .destroy = _destroy, - }, - .get_parameters_type = _get_parameters_type, - .get_parameters = _get_parameters, - .get_uri = _get_parameters, - .get_string = _get_string, - }, - .type = PB_MSG_REMEDIATION_PARAMETERS, - .encoding = chunk_clone(data), - ); - - return &this->public.pb_interface; -} - diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_remediation_parameters_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_remediation_parameters_msg.h deleted file mode 100644 index f3a1c1009..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_remediation_parameters_msg.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2011-2013 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_remediation_parameters_msg pb_remediation_parameters_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_REMEDIATION_PARAMETERS_MSG_H_ -#define PB_REMEDIATION_PARAMETERS_MSG_H_ - -typedef enum pb_tnc_remed_param_type_t pb_tnc_remed_param_type_t; -typedef struct pb_remediation_parameters_msg_t pb_remediation_parameters_msg_t; - -#include "pb_tnc_msg.h" - -#include <pen/pen.h> - -/** - * PB-TNC Remediation Parameter Types as defined in section 4.8.1 of RFC 5793 - */ -enum pb_tnc_remed_param_type_t { - PB_REMEDIATION_URI = 1, - PB_REMEDIATION_STRING = 2, -}; - -/** - * enum name for pb_tnc_remed_param_type_t. - */ -extern enum_name_t *pb_tnc_remed_param_type_names; - -/** - * Class representing the PB-Remediation-Parameters message type. - */ -struct pb_remediation_parameters_msg_t { - - /** - * PB-TNC Message interface - */ - pb_tnc_msg_t pb_interface; - - /** - * Get the Remediation Parameters Type (Vendor ID and Type) - * - * @return Remediation Parameters Type - */ - pen_type_t (*get_parameters_type)(pb_remediation_parameters_msg_t *this); - - /** - * Get the Remediation Parameters - * - * @return Remediation Parameters - */ - chunk_t (*get_parameters)(pb_remediation_parameters_msg_t *this); - - /** - * Get the Remediation URI - * - * @return Remediation URI - */ - chunk_t (*get_uri)(pb_remediation_parameters_msg_t *this); - - /** - * Get the Remediation String - * - * @param lang_code Optional Language Code - * @return Remediation String - */ - chunk_t (*get_string)(pb_remediation_parameters_msg_t *this, - chunk_t *lang_code); - -}; - -/** - * Create a general PB-Remediation-Parameters message - * - * @param parameters_type Remediation Parameters Type - * @param parameters Remediation Parameters - */ -pb_tnc_msg_t* pb_remediation_parameters_msg_create(pen_type_t parameters_type, - chunk_t parameters); - -/** - * Create a PB-Remediation-Parameters message of IETF Type Remediation URI - * - * @param uri Remediation URI - */ -pb_tnc_msg_t* pb_remediation_parameters_msg_create_from_uri(chunk_t uri); - -/** - * Create a PB-Remediation-Parameters message of IETF Type Remediation String - * - * @param string Remediation String - * @param lang_code Remediation String Language Code - */ -pb_tnc_msg_t* pb_remediation_parameters_msg_create_from_string(chunk_t string, - chunk_t lang_code); - -/** - * Create an unprocessed PB-Remediation-Parameters message from raw data - * - * @param data PB-Remediation-Parameters message data - */ -pb_tnc_msg_t* pb_remediation_parameters_msg_create_from_data(chunk_t data); - -#endif /** PB_PA_MSG_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_tnc_msg.c b/src/libcharon/plugins/tnccs_20/messages/pb_tnc_msg.c deleted file mode 100644 index 3565c2d84..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_tnc_msg.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 "pb_tnc_msg.h" -#include "pb_experimental_msg.h" -#include "pb_pa_msg.h" -#include "pb_error_msg.h" -#include "pb_language_preference_msg.h" -#include "pb_assessment_result_msg.h" -#include "pb_access_recommendation_msg.h" -#include "pb_remediation_parameters_msg.h" -#include "pb_reason_string_msg.h" - -#include <library.h> - -ENUM(pb_tnc_msg_type_names, PB_MSG_EXPERIMENTAL, PB_MSG_REASON_STRING, - "PB-Experimental", - "PB-PA", - "PB-Assessment-Result", - "PB-Access-Recommendation", - "PB-Remediation-Parameters", - "PB-Error", - "PB-Language-Preference", - "PB-Reason-String" -); - -pb_tnc_msg_info_t pb_tnc_msg_infos[] = { - { 12, FALSE, FALSE, TRUE_OR_FALSE }, - { 24, FALSE, FALSE, TRUE }, - { 16, TRUE, TRUE, TRUE }, - { 16, TRUE, TRUE, FALSE }, - { 20, FALSE, TRUE, FALSE }, - { 20, FALSE, FALSE, TRUE }, - { 12, FALSE, FALSE, FALSE }, - { 17, FALSE, TRUE, FALSE }, -}; - -/** - * See header - */ -pb_tnc_msg_t* pb_tnc_msg_create_from_data(pb_tnc_msg_type_t type, chunk_t value) -{ - switch (type) - { - case PB_MSG_PA: - return pb_pa_msg_create_from_data(value); - case PB_MSG_ERROR: - return pb_error_msg_create_from_data(value); - case PB_MSG_EXPERIMENTAL: - return pb_experimental_msg_create_from_data(value); - case PB_MSG_LANGUAGE_PREFERENCE: - return pb_language_preference_msg_create_from_data(value); - case PB_MSG_ASSESSMENT_RESULT: - return pb_assessment_result_msg_create_from_data(value); - case PB_MSG_ACCESS_RECOMMENDATION: - return pb_access_recommendation_msg_create_from_data(value); - case PB_MSG_REMEDIATION_PARAMETERS: - return pb_remediation_parameters_msg_create_from_data(value); - case PB_MSG_REASON_STRING: - return pb_reason_string_msg_create_from_data(value); - } - return NULL; -} diff --git a/src/libcharon/plugins/tnccs_20/messages/pb_tnc_msg.h b/src/libcharon/plugins/tnccs_20/messages/pb_tnc_msg.h deleted file mode 100644 index 97ebed27f..000000000 --- a/src/libcharon/plugins/tnccs_20/messages/pb_tnc_msg.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. - * - * 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 pb_tnc_msg pb_tnc_msg - * @{ @ingroup tnccs_20 - */ - -#ifndef PB_TNC_MSG_H_ -#define PB_TNC_MSG_H_ - -typedef enum pb_tnc_msg_type_t pb_tnc_msg_type_t; -typedef struct pb_tnc_msg_info_t pb_tnc_msg_info_t; -typedef struct pb_tnc_msg_t pb_tnc_msg_t; - -#include <library.h> - -#define PB_TNC_VERSION 2 - -/** - * PB-TNC Message Types as defined in section 4.3 of RFC 5793 - */ -enum pb_tnc_msg_type_t { - PB_MSG_EXPERIMENTAL = 0, - PB_MSG_PA = 1, - PB_MSG_ASSESSMENT_RESULT = 2, - PB_MSG_ACCESS_RECOMMENDATION = 3, - PB_MSG_REMEDIATION_PARAMETERS = 4, - PB_MSG_ERROR = 5, - PB_MSG_LANGUAGE_PREFERENCE = 6, - PB_MSG_REASON_STRING = 7, - PB_MSG_ROOF = 7 -}; - -/** - * enum name for pb_tnc_msg_type_t. - */ -extern enum_name_t *pb_tnc_msg_type_names; - -/** - * Information entry describing a PB-TNC Message Type - */ -struct pb_tnc_msg_info_t { - u_int32_t min_size; - bool exact_size; - bool in_result_batch; - signed char has_noskip_flag; -}; - -#define TRUE_OR_FALSE 2 - -/** - * Information on PB-TNC Message Types - */ -extern pb_tnc_msg_info_t pb_tnc_msg_infos[]; - -/** - * Generic interface for all PB-TNC message types. - * - * To handle all messages in a generic way, this interface - * must be implemented by each message type. - */ -struct pb_tnc_msg_t { - - /** - * Get the PB-TNC Message Type - * - * @return PB-TNC Message Type - */ - pb_tnc_msg_type_t (*get_type)(pb_tnc_msg_t *this); - - /** - * Get the encoding of the PB-TNC Message Value - * - * @return encoded PB-TNC Message Value - */ - chunk_t (*get_encoding)(pb_tnc_msg_t *this); - - /** - * Build the PB-TNC Message Value - */ - void (*build)(pb_tnc_msg_t *this); - - /** - * Process the PB-TNC Message Value - * - * @param relative offset where an error occurred - * @return return processing status - */ - status_t (*process)(pb_tnc_msg_t *this, u_int32_t *offset); - - /** - * Get a new reference to the message. - * - * @return this, with an increased refcount - */ - pb_tnc_msg_t* (*get_ref)(pb_tnc_msg_t *this); - - /** - * Destroys a pb_tnc_msg_t object. - */ - void (*destroy)(pb_tnc_msg_t *this); -}; - -/** - * Create an unprocessed PB-TNC message - * - * Useful for the parser which wants a generic constructor for all - * pb_tnc_message_t types. - * - * @param type PB-TNC message type - * @param value PB-TNC message value - */ -pb_tnc_msg_t* pb_tnc_msg_create_from_data(pb_tnc_msg_type_t type, chunk_t value); - -#endif /** PB_TNC_MSG_H_ @}*/ |