Files
strongswan-ext/Source/charon/config/init_config.h
T
Martin Willi ce461bbd13 - refactored ike proposal
- uses now proposal_t, wich is also used by child proposals
- ike key derivation refactored
- crypter_t api has get_key_size now
- some other improvements here and there
2006-02-14 14:52:00 +00:00

160 lines
4.2 KiB
C

/**
* @file init_config.h
*
* @brief Interface of init_config_t.
*
*/
/*
* 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 _INIT_CONFIG_H_
#define _INIT_CONFIG_H_
#include <types.h>
#include <network/host.h>
#include <utils/linked_list.h>
#include <config/proposal.h>
#include <transforms/crypters/crypter.h>
#include <transforms/prfs/prf.h>
#include <transforms/signers/signer.h>
#include <transforms/diffie_hellman.h>
typedef struct init_config_t init_config_t;
/**
* @brief Represents a configuration class holding all needed informations for IKE_SA_INIT phase.
*
* @b Constructors:
* - init_config_create()
*
* @ingroup config
*/
struct init_config_t {
/**
* @brief Get my host information as host_t object.
*
* Object is NOT getting cloned.
*
* @param this calling object
* @return host information as host_t object
*/
host_t *(*get_my_host) (init_config_t *this);
/**
* @brief Get other host information as host_t object.
*
* Object is NOT getting cloned.
*
* @param this calling object
* @return host information as host_t object
*/
host_t *(*get_other_host) (init_config_t *this);
/**
* @brief Get my host information as host_t object.
*
* Object is getting cloned and has to get destroyed by caller.
*
* @param this calling object
* @return host information as host_t object
*/
host_t *(*get_my_host_clone) (init_config_t *this);
/**
* @brief Get other host information as host_t object.
*
* @warning Object is getting cloned and has to get destroyed by caller.
*
* @param this calling object
* @return host information as host_t object
*/
host_t *(*get_other_host_clone) (init_config_t *this);
/**
* @brief Returns a list of all supported proposals.
*
* Returned list is still owned by init_config and MUST NOT
* modified or destroyed.
*
* @param this calling object
* @return list containing all the proposals
*/
linked_list_t *(*get_proposals) (init_config_t *this);
/**
* @brief Adds a proposal to the list..
*
* The first added proposal has the highest priority, the last
* added the lowest.
*
* @param this calling object
* @param priority priority of adding proposal
* @param proposal proposal to add
*/
void (*add_proposal) (init_config_t *this, proposal_t *proposal);
/**
* @brief Select a proposed from suggested proposals.
*
* Returned proposal must be destroyed after usage.
*
* @param this calling object
* @param proposals list of proposals to select from
* @return selected proposal, or NULL if none matches.
*/
proposal_t *(*select_proposal) (init_config_t *this, linked_list_t *proposals);
/**
* @brief Get the DH group to use for connection initialization.
*
* @param this calling object
* @return dh group to use for initialization
*/
diffie_hellman_group_t (*get_dh_group) (init_config_t *this);
/**
* @brief Check if a suggested dh group is acceptable.
*
* If we guess a wrong DH group for IKE_SA_INIT, the other
* peer will send us a offer. But is this acceptable for us?
*
* @param this calling object
* @return dh group to use for initialization
*/
bool (*check_dh_group) (init_config_t *this, diffie_hellman_group_t dh_group);
/**
* @brief Destroys a init_config_t object.
*
* @param this calling object
*/
void (*destroy) (init_config_t *this);
};
/**
* @brief Creates a init_config_t object.
*
* @return init_config_t object.
*
* @ingroup config
*/
init_config_t * init_config_create(char *my_ip, char *other_ip, u_int16_t my_port, u_int16_t other_port);
#endif //_INIT_CONFIG_H_