enums.h

00001 /***************************************************************************
00002 *   Copyright (C) 2005 by                                                 *
00003 *   Pedro J. Fernandez Ruiz    pedroj.fernandez@dif.um.es                 *
00004 *   Alejandro Perez Mendez     alejandro_perez@dif.um.es                  *
00005 *                                                                         *
00006 *   This library is free software; you can redistribute it and/or         *
00007 *   modify it under the terms of the GNU Lesser General Public            *
00008 *   License as published by the Free Software Foundation; either          *
00009 *   version 2.1 of the License, or (at your option) any later version.    *
00010 *                                                                         *
00011 *   This library is distributed in the hope that it will be useful,       *
00012 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00013 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00014 *   Lesser General Public License for more details.                       *
00015 *                                                                         *
00016 *   You should have received a copy of the GNU Lesser General Public      *
00017 *   License along with this library; if not, write to the Free Software   *
00018 *   Foundation, Inc., 51 Franklin St, Fifth Floor,                        *
00019 *   Boston, MA  02110-1301  USA                                           *
00020 ***************************************************************************/
00021 #ifndef ENUMS_H
00022 #define ENUMS_H
00023 
00024 #ifdef HAVE_CONFIG_H
00025 #include "config.h"
00026 #endif
00027 
00028 #include <iostream>
00029 #include <cstdlib>
00030 #include <stdint.h>
00031 #include <sys/socket.h>
00032 
00033 #define MAX_MESSAGE_SIZE        3000        // Max message size
00034 #define WARNING_MESSAGE_SIZE    1500        // Warning message size
00035 
00036 using namespace std;
00037 
00038 namespace openikev2 {
00039 
00044     class Enums {
00045 
00046             /****************************** ENUMS ******************************/
00047         public:
00049             enum NOTIFY_ACTION {
00050                 NOTIFY_ACTION_CONTINUE_MESSAGE_PROCESSING = 0,    
00051                 NOTIFY_ACTION_FINISH_MESSAGE_PROCESSING = 1,      
00052                 NOTIFY_ACTION_OMIT_MESSAGE = 2,                   
00053         };
00054 
00056             enum MESSAGE_ACTION{
00057                 MESSAGE_ACTION_CONTINUE_PROCESSING = 0,       
00058                 MESSAGE_ACTION_CLOSE_IKE_SA = 1,              
00059                 MESSAGE_ACTION_OMIT_MESSAGE = 2,              
00060                 MESSAGE_ACTION_STOP_PROCESSING = 3            
00061         };
00062 
00064             enum IPSEC_MODE{
00065                 TRANSPORT_MODE = 1,       
00066                 TUNNEL_MODE = 2,          
00067         };
00068 
00070             enum ATTRIBUTE_TYPE {
00071                 ATTR_KEY_LEN = 14,        
00072         };
00073 
00075             enum TRANSFORM_TYPE {
00076                 ENCR = 1,                 
00077                 PRF = 2,                  
00078                 INTEG = 3,                
00079                 D_H = 4,                  
00080                 ESN = 5,                  
00081         };
00082 
00084             enum ENCR_ID {
00085                 ENCR_NONE = 0,            
00086                 ENCR_DES_IV64 = 1,        
00087                 ENCR_DES = 2,             
00088                 ENCR_3DES = 3,            
00089                 ENCR_RC5 = 4,             
00090                 ENCR_IDEA = 5,            
00091                 ENCR_CAST = 6,            
00092                 ENCR_BLOWFISH = 7,        
00093                 ENCR_3IDEA = 8,           
00094                 ENCR_DES_IV32 = 9,        
00095                 ENCR_NULL = 11,           
00096                 ENCR_AES_CBC = 12,        
00097                 ENCR_AES_CTR = 13,        
00098         };
00099 
00101             enum PRF_ID {
00102                 PRF_NONE = 0,             
00103                 PRF_HMAC_MD5 = 1,         
00104                 PRF_HMAC_SHA1 = 2,        
00105                 PRF_HMAC_TIGER = 3,       
00106                 PRF_AES128_CBC = 4,       
00107         };
00108 
00110             enum INTEG_ID {
00111                 AUTH_NONE = 0,            
00112                 AUTH_HMAC_MD5_96 = 1,     
00113                 AUTH_HMAC_SHA1_96 = 2,    
00114                 AUTH_DES_MAC = 3,         
00115                 AUTH_KPDK_MD5 = 4,        
00116                 AUTH_AES_XCBC_96 = 5,     
00117         };
00118 
00120             enum DH_ID {
00121                 DH_NONE = 0,              
00122                 DH_GROUP_1 = 1,           
00123                 DH_GROUP_2 = 2,           
00124                 DH_GROUP_5 = 5,           
00125                 DH_GROUP_14 = 14,         
00126                 DH_GROUP_15 = 15,         
00127                 DH_GROUP_16 = 16,         
00128                 DH_GROUP_17 = 17,         
00129                 DH_GROUP_18 = 18,         
00130         };
00131 
00133             enum ESN_ID {
00134                 ESN_NO = 0,               
00135                 ESN_YES = 1,              
00136         };
00137 
00139             enum PROTOCOL_ID {
00140                 PROTO_NONE = 0,           
00141                 PROTO_IKE = 1,            
00142                 PROTO_AH = 2,             
00143                 PROTO_ESP = 3,            
00144         };
00145 
00147             enum DIRECTION{
00148                 DIR_ALL = 0,              
00149                 DIR_IN = 1,               
00150                 DIR_OUT = 2,              
00151                 DIR_FWD = 3,              
00152         };
00153 
00155             enum ROLE_ID{
00156                 ROLE_ANY = 0,             
00157                 ROLE_INITIATOR = 1,       
00158                 ROLE_RESPONDER = 2,       
00159         };
00160 
00162             enum ID_TYPE{
00163                 RESERVED = 0,             
00164                 ID_IPV4_ADDR = 1,         
00165                 ID_FQDN = 2,              
00166                 ID_RFC822_ADDR = 3,       
00167                 ID_IPV6_ADDR = 5,         
00168                 ID_DER_ASN1_DN = 9,       
00169                 ID_DER_ASN1_GN = 10,      
00170                 ID_KEY_ID = 11,           
00171         };
00172 
00174             enum IP_PROTOCOL{
00175                 IP_PROTO_ANY = 0,       
00176                 IP_PROTO_ICMP = 1,      
00177                 IP_PROTO_TCP = 6,       
00178                 IP_PROTO_UDP = 17,      
00179                 IP_PROTO_ICMPv6 = 58,   
00180                 IP_PROTO_MH = 135,      
00181         };
00182 
00184             enum CERT_ENCODING{
00185                 CERT_RESERVED = 0,            
00186                 CERT_X509_PKCS_7 = 1,         
00187                 CERT_PGP = 2,                 
00188                 CERT_DNS = 3,                 
00189                 CERT_X509_SIGNATURE = 4,      
00190                 CERT_KERBEROS = 6,            
00191                 CERT_CRL = 7,                 
00192                 CERT_ARL = 8,                 
00193                 CERT_SPKI = 9,                
00194                 CERT_X509_ATTRIBUTE = 10,     
00195                 CERT_RAW_RSA = 11,            
00196                 CERT_HASH_URL = 12,           
00197                 CERT_HASH_URL_BUNDLE = 13,    
00198         };
00199 
00201             enum AUTH_METHOD{
00202                 AUTH_METHOD_NONE = 0,         
00203                 AUTH_METHOD_RSA = 1,          
00204                 AUTH_METHOD_PSK = 2,          
00205                 AUTH_METHOD_DSS = 3,          
00206                 AUTH_METHOD_CERT = 200,         
00207                 AUTH_METHOD_BTNS = 201,         
00208         };
00209 
00210             /****************************** METHODS ******************************/
00211         public:
00217             static string IPSEC_MODE_STR( IPSEC_MODE mode );
00218 
00224             static string ATTRIBUTE_TYPE_STR( ATTRIBUTE_TYPE attr_type );
00225 
00231             static string TRANSFORM_TYPE_STR( TRANSFORM_TYPE transform_type );
00232 
00238             static string ENCR_ID_STR( ENCR_ID encr_id );
00239 
00245             static string PRF_ID_STR( PRF_ID prf_id );
00246 
00252             static string INTEG_ID_STR( INTEG_ID integ_id );
00253 
00259             static string DH_ID_STR( DH_ID dh_id );
00260 
00266             static string ESN_ID_STR( ESN_ID esn_id );
00267 
00273             static string PROTOCOL_ID_STR( PROTOCOL_ID protocol );
00274 
00280             static string DIRECTION_STR( DIRECTION dir );
00281 
00287             static string ROLE_ID_STR( ROLE_ID role_id );
00288 
00294             static string ID_TYPE_STR( ID_TYPE id_type );
00295 
00301             static string IP_PROTO_STR( uint8_t ip_proto );
00302 
00308             static string CERT_ENCODING_STR( uint16_t encoding );
00309 
00315             static string AUTH_METHOD_STR( AUTH_METHOD auth_method );
00316 
00326             static bool authMethodIsCompatibleWith( AUTH_METHOD method1, AUTH_METHOD method2 );
00327     };
00328 }
00329 #endif

Generated on Fri Jul 27 11:04:44 2007 for libopenikev2 by  doxygen 1.5.1