00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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
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
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