Main Page | Data Structures | File List | Data Fields | Globals | Related Pages

transforms.h

Go to the documentation of this file.
00001 /*
00002  *  transforms.h  -  functions supporting the negotiation of crypto-algorithms
00003  *  
00004  *  EAP-IKEv2
00005  *
00006  *  This library implements ideas of draft-tschofenig-eap-ikev2-10.txt
00007  *  Internet-Draft. Version of the document that this library corresponds
00008  *  to you can find at
00009  *  http://tools.ietf.org/wg/eap/draft-tschofenig-eap-ikev2-10.txt.
00010  *
00011  *  This file is part of libeap-ikev2.
00012  *
00013  *  libeap-ikev2 is free software; you can redistribute it and/or modify
00014  *  it under the terms of the GNU General Public License as published by
00015  *  the Free Software Foundation; either version 2 of the License, or
00016  *  (at your option) any later version.
00017  *
00018  *  libeap-ikev2 is distributed in the hope that it will be useful,
00019  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00020  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00021  *  GNU General Public License for more details.
00022  *
00023  *  You should have received a copy of the GNU General Public License
00024  *  along with libeap-ikev2; if not, write to the Free Software
00025  *
00026  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00027  *
00028  *  Copyright (C) 2005-2006 Krzysztof Rzecki <krzysztof.rzecki@ccns.pl>      
00029  *  Copyright (C) 2005-2006 Rafal Mijal <rafal.mijal@ccns.pl>                
00030  *  Copyright (C) 2005-2006 Piotr Marnik <piotr.marnik@ccns.pl>              
00031  *  Copyright (C) 2005-2006 Pawel Matejski <pawel.matejski@ccns.pl>          
00032  *  Copyright (C) 2003      Udo Schilcher <udo.schilcher@edu.uni-klu.ac.at>
00033  *  Copyright (C) 2003      Thomas Hambrusch <thambrus@edu.uni-klu.ac.at>          
00034  *
00035  */
00036 
00037 #ifndef __transforms_h
00038 #define __transforms_h
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 #include"common.h"
00045 
00046 // struct for transforms
00050 struct Transform
00051 {
00052   struct Transform *next;  
00053   
00054   uint8_t type;            
00055   uint16_t id;             
00056   uint16_t keyLen;         
00057 };
00058 
00063 struct Protocol
00064 {
00065   struct Protocol *next;    
00066 
00067   uint8_t protocol;         
00068   struct Transform *transforms; 
00069   uint8_t SPISize;          
00070   uint64_t SPI;             
00071 };
00072 
00076 struct Proposal
00077 {
00078   struct Proposal *next;      
00079   struct Protocol *protocols; 
00080 };
00081 
00082 // function prototypes
00083 
00084 struct Proposal *AddProposal( struct Proposal **list );
00085 void RemoveProposal( struct Proposal *prop, struct Proposal **list );
00086 void DeleteProposal( struct Proposal *prop );
00087 void DeleteProposalList( struct Proposal *prop );
00088 struct Protocol *AddProtocol( struct Proposal *prop, uint8_t protocol, uint8_t SPISize,
00089   uint32_t SPI );
00090 void RemoveProtocol( struct Protocol *protocol, struct Proposal *prop );
00091 void DeleteProtocol( struct Protocol *protocol );
00092 int AddTransform( struct Protocol *protocol, uint8_t type, uint16_t id, uint16_t keyLen );
00093 void RemoveTransform( struct Transform *trans, struct Protocol *protocol );
00094 uint16_t GetTransformID( uint8_t type, uint8_t protocol, struct Protocol *list );
00095 uint16_t GetTransformKeyLen( uint8_t type, uint8_t protocol, struct Protocol *list );
00096 int CheckNeededTransforms( struct Proposal *prop );
00097 struct Proposal *FindFirstSupportedProposal( struct Proposal *prop, struct Proposal *list );
00098 int CmpProposal( struct Proposal *p1, struct Proposal *p2 );
00099 struct Proposal *FindProposal( struct Proposal *prop, struct Proposal *list );
00100 
00101 #ifdef __cplusplus
00102 }
00103 #endif
00104 
00105 #endif

Project hosted by: SourceForge.net Logo