aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon')
-rw-r--r--Source/charon/daemon.c4
-rw-r--r--Source/charon/documentation.DoxyFile2
-rw-r--r--Source/charon/generator.c1
-rw-r--r--Source/charon/generator.h5
-rw-r--r--Source/charon/message.c3
-rw-r--r--Source/charon/parser.c1
-rw-r--r--Source/charon/parser.h5
-rw-r--r--Source/charon/payloads/encodings.h206
-rw-r--r--Source/charon/payloads/ike_header.c67
-rw-r--r--Source/charon/payloads/ike_header.h111
-rw-r--r--Source/charon/payloads/payload.c63
-rw-r--r--Source/charon/payloads/payload.h197
-rw-r--r--Source/charon/testcases/generator_test.c4
-rw-r--r--Source/charon/testcases/parser_test.c4
-rw-r--r--Source/charon/testcases/receiver_test.c2
15 files changed, 662 insertions, 13 deletions
diff --git a/Source/charon/daemon.c b/Source/charon/daemon.c
index 930fbf69f..fc7efdfd1 100644
--- a/Source/charon/daemon.c
+++ b/Source/charon/daemon.c
@@ -24,8 +24,8 @@
#include "types.h"
-#include "tester.h"
-#include "job_queue.h"
+#include "utils/tester.h"
+#include "queues/job_queue.h"
job_queue_t *job_queue;
diff --git a/Source/charon/documentation.DoxyFile b/Source/charon/documentation.DoxyFile
index 2468a1faf..2d3c2bd21 100644
--- a/Source/charon/documentation.DoxyFile
+++ b/Source/charon/documentation.DoxyFile
@@ -140,7 +140,7 @@ FILE_PATTERNS = *.c *.h
RECURSIVE = YES
-EXCLUDE = tests
+EXCLUDE = testcases
EXCLUDE_SYMLINKS = NO
diff --git a/Source/charon/generator.c b/Source/charon/generator.c
index bfe3dde30..1b1b31efa 100644
--- a/Source/charon/generator.c
+++ b/Source/charon/generator.c
@@ -30,6 +30,7 @@
#include "types.h"
#include "utils/allocator.h"
+#include "payloads/payload.h"
typedef struct private_generator_context_s private_generator_context_t;
diff --git a/Source/charon/generator.h b/Source/charon/generator.h
index fc307de7e..517a56c11 100644
--- a/Source/charon/generator.h
+++ b/Source/charon/generator.h
@@ -24,7 +24,8 @@
#define GENERATOR_H_
#include "types.h"
-#include "encodings/encodings.h"
+#include "payloads/encodings.h"
+#include "payloads/payload.h"
/**
* Generating is done in a data buffer.
@@ -120,6 +121,6 @@ struct generator_s {
* all the payload informations needed to
* automatic generate a specific payload
*/
-generator_t * generator_create(payload_info_t ** payload_infos);
+generator_t * generator_create();
#endif /*GENERATOR_H_*/
diff --git a/Source/charon/message.c b/Source/charon/message.c
index 46a8e9122..c8b6f6ce2 100644
--- a/Source/charon/message.c
+++ b/Source/charon/message.c
@@ -28,7 +28,8 @@
#include "ike_sa_id.h"
#include "utils/linked_list.h"
#include "utils/allocator.h"
-#include "encodings/encodings.h"
+#include "payloads/encodings.h"
+#include "payloads/payload.h"
/**
* Entry for a payload in the internal used linked list
diff --git a/Source/charon/parser.c b/Source/charon/parser.c
index b1f0c069b..0175ecac2 100644
--- a/Source/charon/parser.c
+++ b/Source/charon/parser.c
@@ -30,6 +30,7 @@
#include "globals.h"
#include "utils/allocator.h"
#include "utils/logger.h"
+#include "payloads/payload.h"
/**
* @private data stored in a context
diff --git a/Source/charon/parser.h b/Source/charon/parser.h
index ebd456134..fb491113d 100644
--- a/Source/charon/parser.h
+++ b/Source/charon/parser.h
@@ -24,7 +24,8 @@
#define PARSER_H_
#include "types.h"
-#include "encodings/encodings.h"
+#include "payloads/encodings.h"
+#include "payloads/payload.h"
/**
* @brief The parser context stores state information for a parsing session.
@@ -101,6 +102,6 @@ struct parser_s {
* @param payload_infos list of payload_info_t
*
*/
-parser_t *parser_create(payload_info_t **payload_infos);
+parser_t *parser_create();
#endif /*PARSER_H_*/
diff --git a/Source/charon/payloads/encodings.h b/Source/charon/payloads/encodings.h
new file mode 100644
index 000000000..c68ec9c42
--- /dev/null
+++ b/Source/charon/payloads/encodings.h
@@ -0,0 +1,206 @@
+/**
+ * @file encodings.h
+ *
+ * @brief Type definitions for parser and generator,
+ * also payload types are defined here.
+ *
+ * Header is parsed like a payload and gets its one payload_id
+ * from PRIVATE USE space. Also the substructures
+ * of specific payload types get their own payload_id
+ * from PRIVATE_USE space. See RFC for mor informations.
+ *
+ */
+
+/*
+ * Copyright (C) 2005 Jan Hutter, Martin Willi
+ * 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.
+ */
+
+#ifndef ENCODINGS_H_
+#define ENCODINGS_H_
+
+#include "../types.h"
+#include "../definitions.h"
+
+
+/**
+ * @brief All different kinds of encoding types.
+ *
+ * Each field of an IKEv2-Message (in header or payload)
+ * which has to be parsed or generated differently has its own
+ * type defined here.
+ */
+typedef enum encoding_type_e encoding_type_t;
+
+enum encoding_type_e{
+ /**
+ * Representing a 4 Bit unsigned int value
+ *
+ *
+ * When generating it must be changed from host to network order.
+ * The value is read from the associated data struct.
+ * The current write position is moved 4 bit forward afterwards.
+ *
+ * When parsing it must be changed from network to host order.
+ * The value is written to the associated data struct.
+ * The current read pointer is moved 4 bit forward afterwards.
+ */
+ U_INT_4,
+ /**
+ * Representing a 8 Bit unsigned int value
+ *
+ *
+ * When generating it must be changed from host to network order.
+ * The value is read from the associated data struct.
+ * The current write position is moved 8 bit forward afterwards.
+ *
+ * When parsing it must be changed from network to host order.
+ * The value is written to the associated data struct.
+ * The current read pointer is moved 8 bit forward afterwards.
+ */
+ U_INT_8,
+ /**
+ * Representing a 16 Bit unsigned int value
+ *
+ *
+ * When generating it must be changed from host to network order.
+ * The value is read from the associated data struct.
+ * The current write position is moved 16 bit forward afterwards.
+ *
+ * When parsing it must be changed from network to host order.
+ * The value is written to the associated data struct.
+ * The current read pointer is moved 16 bit forward afterwards.
+ */
+ U_INT_16,
+ /**
+ * Representing a 32 Bit unsigned int value
+ *
+ * When generating it must be changed from host to network order.
+ * The value is read from the associated data struct.
+ * The current write position is moved 32 bit forward afterwards.
+ *
+ * When parsing it must be changed from network to host order.
+ * The value is written to the associated data struct.
+ * The current read pointer is moved 32 bit forward afterwards.
+ */
+
+ U_INT_32,
+ /**
+ * Representing a 64 Bit unsigned int value
+ *
+ * When generating it must be changed from host to network order.
+ * The value is read from the associated data struct.
+ * The current write position is moved 64 bit forward afterwards.
+ *
+ * When parsing it must be changed from network to host order.
+ * The value is written to the associated data struct.
+ * The current read pointer is moved 64 bit forward afterwards.
+ */
+ U_INT_64,
+ /**
+ * @brief represents a RESERVED_BIT used in FLAG-Bytes
+ *
+ * When generating, the next bit is set to zero and the current write
+ * position is moved one bit forward.
+ * No value is read from the associated data struct.
+ * The current write position is moved 1 bit forward afterwards.
+ *
+ * When parsing, the current read pointer is moved one bit forward.
+ * No value is written to the associated data struct.
+ * The current read pointer is moved 1 bit forward afterwards.
+ */
+ RESERVED_BIT,
+ /**
+ * @brief represents a RESERVED_BYTE
+ *
+ * When generating, the next byte is set to zero and the current write
+ * position is moved one byte forward.
+ * No value is read from the associated data struct.
+ * The current write position is moved 1 byte forward afterwards.
+ *
+ * When parsing, the current read pointer is moved one byte forward.
+ * No value is written to the associated data struct.
+ * The current read pointer is moved 1 byte forward afterwards.
+ */
+ RESERVED_BYTE,
+ /**
+ * Representing a 1 Bit flag.
+ *
+ * When generation, the next bit is set to 1 if the associated value
+ * in the data struct is TRUE, 0 otherwise. The current write position
+ * is moved 1 bit forward afterwards.
+ *
+ * When parsing, the next bit is read and stored in the associated data
+ * struct. 0 means FALSE, 1 means TRUE, The current read pointer
+ * is moved 1 bit forward afterwards
+ */
+ FLAG,
+ /**
+ * Representating a length field
+ *
+ * When generating it must be changed from host to network order.
+ * The value is read from the associated data struct.
+ * The current write position is moved 32 bit forward afterwards.
+ *
+ * When parsing it must be changed from network to host order.
+ * The value is written to the associated data struct.
+ * The current read pointer is moved 32 bit forward afterwards.
+ */
+ LENGTH,
+ /**
+ * Representating a spi size field
+ *
+ * When generating it must be changed from host to network order.
+ * The value is read from the associated data struct.
+ * The current write position is moved 32 bit forward afterwards.
+ *
+ * When parsing it must be changed from network to host order.
+ * The value is written to the associated data struct.
+ * The current read pointer is moved 32 bit forward afterwards.
+ */
+ SPI_SIZE
+};
+
+/**
+ * An encoding rule is a mapping of a specific encoding type to
+ * a location in the data struct where the current field is stored to
+ * or read from.
+ *
+ * For examples see directory encodings/.
+ *
+ * This rules are used by parser and generator.
+ */
+typedef struct encoding_rule_s encoding_rule_t;
+
+struct encoding_rule_s{
+ /**
+ * Encoding type
+ */
+ encoding_type_t type;
+ /**
+ * Offset in the data struct
+ *
+ * When parsing, data are written to this offset of the
+ * data struct.
+ *
+ * When generating, data are read from this offset in the
+ * data struct.
+ */
+ u_int32_t offset;
+};
+
+
+
+
+
+#endif /*ENCODINGS_H_*/
diff --git a/Source/charon/payloads/ike_header.c b/Source/charon/payloads/ike_header.c
new file mode 100644
index 000000000..ab4b98439
--- /dev/null
+++ b/Source/charon/payloads/ike_header.c
@@ -0,0 +1,67 @@
+/**
+ * @file ike_header.c
+ *
+ * @brief Definition of the encoding rules used when parsing or generating
+ * an IKEv2-Header
+ *
+ */
+
+/*
+ * Copyright (C) 2005 Jan Hutter, Martin Willi
+ * 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.
+ */
+
+/* offsetof macro */
+#include <stddef.h>
+
+ #include "encodings.h"
+ #include "ike_header.h"
+
+/**
+ * Encoding rules to parse or generate a IKEv2-Header
+ *
+ * The defined offsets are the positions in a struct of type
+ * ike_header_t.
+ *
+ */
+encoding_rule_t ike_header_encodings[] = {
+ /* 8 Byte SPI, stored in the field initiator_spi */
+ { U_INT_64, offsetof(ike_header_t, initiator_spi) },
+ /* 8 Byte SPI, stored in the field responder_spi */
+ { U_INT_64, offsetof(ike_header_t, responder_spi) },
+ /* 1 Byte next payload type, stored in the field next_payload */
+ { U_INT_8, offsetof(ike_header_t, next_payload) },
+ /* 4 Bit major version, stored in the field maj_version */
+ { U_INT_4, offsetof(ike_header_t, maj_version) },
+ /* 4 Bit minor version, stored in the field min_version */
+ { U_INT_4, offsetof(ike_header_t, min_version) },
+ /* 8 Bit for the exchange type */
+ { U_INT_8, offsetof(ike_header_t, exchange_type) },
+ /* 2 Bit reserved bits, nowhere stored */
+ { RESERVED_BIT, 0 },
+ { RESERVED_BIT, 0 },
+ /* 3 Bit flags, stored in the fields response, version and initiator */
+ { FLAG, offsetof(ike_header_t, flags.response) },
+ { FLAG, offsetof(ike_header_t, flags.version) },
+ { FLAG, offsetof(ike_header_t, flags.initiator) },
+ /* 3 Bit reserved bits, nowhere stored */
+ { RESERVED_BIT, 0 },
+ { RESERVED_BIT, 0 },
+ { RESERVED_BIT, 0 },
+ /* 4 Byte message id, stored in the field message_id */
+ { U_INT_32, offsetof(ike_header_t, message_id) },
+ /* 4 Byte length fied, stored in the field length */
+ { LENGTH, offsetof(ike_header_t, length) }
+};
+
+
diff --git a/Source/charon/payloads/ike_header.h b/Source/charon/payloads/ike_header.h
new file mode 100644
index 000000000..8110e1331
--- /dev/null
+++ b/Source/charon/payloads/ike_header.h
@@ -0,0 +1,111 @@
+/**
+ * @file ike_header.h
+ *
+ * @brief Declaration of the data struct ike_header_t.
+ *
+ * The data of a parsed header are stored in a struct of this type.
+ *
+ */
+
+/*
+ * Copyright (C) 2005 Jan Hutter, Martin Willi
+ * 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.
+ */
+
+#ifndef IKE_HEADER_H_
+#define IKE_HEADER_H_
+
+#include "../types.h"
+#include "payload.h"
+
+/**
+ * Data structure to hold the data of an IKEv2-Header
+ *
+ * The header format of an IKEv2-Message is compatible to the
+ * ISAKMP-Header format to allow implementations supporting
+ * both versions of the IKE-protocol.
+ *
+ */
+typedef struct ike_header_s ike_header_t;
+
+struct ike_header_s {
+ /**
+ * implements payload_t interface
+ */
+ payload_t payload_interface;
+ /**
+ * SPI of the initiator
+ */
+ u_int64_t initiator_spi;
+ /**
+ * SPI of the responder
+ */
+ u_int64_t responder_spi;
+ /**
+ * next payload type
+ */
+ u_int8_t next_payload;
+ /**
+ * IKE major version
+ */
+ u_int8_t maj_version;
+
+ /**
+ * IKE minor version
+ */
+ u_int8_t min_version;
+
+ /**
+ * Exchange type
+ */
+ u_int8_t exchange_type;
+
+ /**
+ * Flags of the Message
+ *
+ */
+ struct {
+ /**
+ * Sender is initiator of the associated IKE_SA_INIT-Exchange
+ */
+ bool initiator;
+ /**
+ * is protocol supporting higher version?
+ */
+ bool version;
+ /**
+ * TRUE, if this is a response, FALSE if its a Request
+ */
+ bool response;
+ } flags;
+ /**
+ * Associated Message-ID
+ */
+ u_int32_t message_id;
+ /**
+ * Length of the whole IKEv2-Message (header and all payloads)
+ */
+ u_int32_t length;
+};
+
+/**
+ * @brief Create an empty ike_header
+ *
+ * @return
+ * - created ike_header, or
+ * - NULL if failed
+ */
+
+ike_header_t *create_ike_header();
+
+#endif /*IKE_HEADER_H_*/
diff --git a/Source/charon/payloads/payload.c b/Source/charon/payloads/payload.c
new file mode 100644
index 000000000..dad260f76
--- /dev/null
+++ b/Source/charon/payloads/payload.c
@@ -0,0 +1,63 @@
+/**
+ * @file payload.c
+ *
+ * @brief Generic payload interface
+ *
+ *
+ */
+
+/*
+ * Copyright (C) 2005 Jan Hutter, Martin Willi
+ * 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 "payload.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+ * build the mappings for payload_type_t
+ */
+mapping_t payload_type_t_mappings[] = {
+ {NO_PAYLOAD, "NO_PAYLOAD"},
+ {SECURITY_ASSOCIATION, "SECURITY_ASSOCIATION"},
+ {KEY_EXCHANGE, "KEY_EXCHANGE"},
+ {ID_INITIATOR, "ID_INITIATOR"},
+ {ID_RESPONDER, "ID_RESPONDER"},
+ {CERTIFICATE, "CERTIFICATE"},
+ {CERTIFICATE_REQUEST, "CERTIFICATE_REQUEST"},
+ {AUTHENTICATION, "AUTHENTICATION"},
+ {NONCE, "NONCE"},
+ {NOTIFY, "NOTIFY"},
+ {DELETE, "DELETE"},
+ {VENDOR_ID, "VENDOR_ID"},
+ {TRAFFIC_SELECTOR_INITIATOR, "TRAFFIC_SELECTOR_INITIATOR"},
+ {TRAFFIC_SELECTOR_RESPONDER, "TRAFFIC_SELECTOR_RESPONDER"},
+ {ENCRYPTED, "ENCRYPTED"},
+ {CONFIGURATION, "CONFIGURATION"},
+ {EXTENSIBLE_AUTHENTICATION, "EXTENSIBLE_AUTHENTICATION"},
+ {HEADER, "HEADER"},
+ {MAPPING_END, NULL}
+};
+
diff --git a/Source/charon/payloads/payload.h b/Source/charon/payloads/payload.h
new file mode 100644
index 000000000..af98c4cbc
--- /dev/null
+++ b/Source/charon/payloads/payload.h
@@ -0,0 +1,197 @@
+/**
+ * @file payload.h
+ *
+ * @brief Generic payload interface
+ *
+ *
+ */
+
+/*
+ * Copyright (C) 2005 Jan Hutter, Martin Willi
+ * 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.
+ */
+
+#ifndef PAYLOAD_H_
+#define PAYLOAD_H_
+
+#include "encodings.h"
+#include "../types.h"
+#include "../definitions.h"
+
+
+/**
+ * Payload-Types of a IKEv2-Message
+ *
+ *
+ * Header and substructures are also defined as
+ * payload types with values from PRIVATE USE space.
+ */
+typedef enum payload_type_e payload_type_t;
+
+enum payload_type_e{
+
+ /**
+ * NO_PAYLOAD
+ */
+ NO_PAYLOAD = 0,
+
+ /**
+ * SA
+ */
+ SECURITY_ASSOCIATION = 33,
+ /**
+ * KE
+ */
+ KEY_EXCHANGE = 34,
+ /**
+ * IDi
+ */
+ ID_INITIATOR = 35,
+ /**
+ * IDr
+ */
+ ID_RESPONDER = 36,
+ /**
+ * CERT
+ */
+ CERTIFICATE = 37,
+ /**
+ * CERTREQ
+ */
+ CERTIFICATE_REQUEST = 38,
+ /**
+ * AUTH
+ */
+ AUTHENTICATION = 39,
+ /**
+ * Ni, Nr
+ */
+ NONCE = 40,
+ /**
+ * N
+ */
+ NOTIFY = 41,
+ /**
+ * D
+ */
+ DELETE = 42,
+ /**
+ * V
+ */
+ VENDOR_ID = 43,
+ /**
+ * TSi
+ */
+ TRAFFIC_SELECTOR_INITIATOR = 44,
+ /**
+ * TSr
+ */
+ TRAFFIC_SELECTOR_RESPONDER = 45,
+ /**
+ * E
+ */
+ ENCRYPTED = 46,
+ /**
+ * CP
+ */
+ CONFIGURATION = 47,
+ /**
+ * EAP
+ */
+ EXTENSIBLE_AUTHENTICATION = 48,
+
+ /**
+ * Header has value 140 of PRIVATE USE space
+ *
+ * This payload type is not send over wire and just
+ * used internally to handle IKEv2-Header like a payload.
+ */
+ HEADER = 140
+};
+
+
+/*
+ * build string mapping array for payload_type_t
+ */
+extern mapping_t payload_type_t_mappings[];
+
+
+/**
+ * @brief Generic interface for all payload types (inclusive
+ * header and substructures)
+ *
+ *
+ */
+typedef struct payload_s payload_t;
+
+struct payload_s {
+ /**
+ * @brief Destroys a payload and all included substructures.
+ *
+ * @param this payload to destroy
+ * @return
+ * SUCCESS in any case
+ */
+ status_t (*destroy) (payload_t *this);
+
+ /**
+ * @brief Get encoding rules for this payload
+ *
+ * @param this calling object
+ * @param[out] rules location to store pointer of first rule
+ * @param[out] rule_count location to store number of rules
+ * @return
+ * SUCCESS in any case
+ */
+ status_t (*get_encoding_rules) (payload_t *this, encoding_rule_t **rules, size_t *rule_count);
+
+ /**
+ * @brief get type of payload
+ *
+ * @param this calling object
+ * @return type of this payload
+ */
+ payload_type_t (*get_type) (payload_t *this);
+
+ /**
+ * @brief get type of next payload or zero if this is the last one
+ *
+ * @param this calling object
+ * @return type of next payload
+ */
+ payload_type_t (*get_next_type) (payload_t *this);
+
+ /**
+ * @brief get length of payload
+ *
+ * @param this calling object
+ * @return length of this payload
+ */
+ payload_type_t (*get_length) (payload_t *this);
+};
+
+/**
+ * @brief Create an empty payload.
+ *
+ * Useful for the parser, who wants a generic constructor for all payloads.
+ * It supports all payload_t methods.
+ *
+ * @param type type of the payload to create
+ * @return
+ * - created payload, or
+ * - NULL if failed
+ */
+
+payload_t *create_empty_payload(payload_type_t type);
+
+#endif /*PAYLOAD_H_*/
diff --git a/Source/charon/testcases/generator_test.c b/Source/charon/testcases/generator_test.c
index cabe55181..764ef4c7d 100644
--- a/Source/charon/testcases/generator_test.c
+++ b/Source/charon/testcases/generator_test.c
@@ -29,8 +29,8 @@
#include "../utils/allocator.h"
#include "../utils/logger_manager.h"
#include "../utils/logger.h"
-#include "../encodings/encodings.h"
-#include "../encodings/ike_header.h"
+#include "../payloads/encodings.h"
+#include "../payloads/ike_header.h"
extern payload_info_t *payload_infos[];
diff --git a/Source/charon/testcases/parser_test.c b/Source/charon/testcases/parser_test.c
index 29a0111a4..e15cfd896 100644
--- a/Source/charon/testcases/parser_test.c
+++ b/Source/charon/testcases/parser_test.c
@@ -27,8 +27,8 @@
#include "../parser.h"
#include "../utils/allocator.h"
#include "../utils/logger_manager.h"
-#include "../encodings/encodings.h"
-#include "../encodings/ike_header.h"
+#include "../payloads/encodings.h"
+#include "../payloads/ike_header.h"
extern payload_info_t *payload_infos[];
diff --git a/Source/charon/testcases/receiver_test.c b/Source/charon/testcases/receiver_test.c
index 0a3a524ae..f7cbed3c6 100644
--- a/Source/charon/testcases/receiver_test.c
+++ b/Source/charon/testcases/receiver_test.c
@@ -31,7 +31,7 @@
#include "../socket.h"
#include "../queues/send_queue.h"
#include "../queues/job_queue.h"
-#include "../encodings/encodings.h"
+#include "../payloads/encodings.h"
#include "../utils/allocator.h"
/**