Added possibility to register custom proposal keywords

Keyword lookup and registration are handled via the new lib->proposal object.
This commit is contained in:
Tobias Brunner
2012-09-13 15:44:46 +02:00
parent 995875210a
commit 4c57c63062
9 changed files with 187 additions and 21 deletions
@@ -1,3 +1,18 @@
/*
* Copyright (C) 2012 Tobias Brunner
* 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.
*/
/*
* Copyright (c) 2012 Nanoteq Pty Ltd
*
@@ -28,14 +43,16 @@
#ifndef PROPOSAL_KEYWORDS_H_
#define PROPOSAL_KEYWORDS_H_
#include <crypto/transform.h>
typedef struct proposal_token_t proposal_token_t;
typedef struct proposal_keywords_t proposal_keywords_t;
typedef struct proposal_token proposal_token_t;
#include <library.h>
#include <crypto/transform.h>
/**
* Class representing a proposal token..
*/
struct proposal_token {
struct proposal_token_t {
/**
* The name of the token.
@@ -59,11 +76,40 @@ struct proposal_token {
};
/**
* Returns a proposal token for the specified string if a token exists.
*
* @param str the string containing the name of the token
* @return proposal_tolen if found otherwise NULL
* Class to manage proposal keywords
*/
const proposal_token_t* proposal_get_token(const char *str);
struct proposal_keywords_t {
/**
* Returns the proposal token for the specified string if a token exists.
*
* @param str the string containing the name of the token
* @return proposal_token if found, NULL otherwise
*/
const proposal_token_t *(*get_token)(proposal_keywords_t *this,
const char *str);
/**
* Register a new proposal token for an algorithm.
*
* @param name the string containing the name of the token
* @param type the transform_type_t for the token
* @param algorithm the IKE id of the algorithm
* @param keysize the key size associated with the specific algorithm
*/
void (*register_token)(proposal_keywords_t *this, const char *name,
transform_type_t type, u_int16_t algorithm,
u_int16_t keysize);
/**
* Destroy a proposal_keywords_t instance.
*/
void (*destroy)(proposal_keywords_t *this);
};
/**
* Create a proposal_keywords_t instance.
*/
proposal_keywords_t *proposal_keywords_create();
#endif /** PROPOSAL_KEYWORDS_H_ @}*/