eapol/eapol_framework/eapol_symbian/am/type/aka/symbian/eap_am_type_aka_symbian.cpp
changeset 33 938269283a16
parent 2 1c7bc153c08e
child 34 ad1f037f1ac2
equal deleted inserted replaced
22:093cf0757204 33:938269283a16
    14 * Description:  EAP and WLAN authentication protocols.
    14 * Description:  EAP and WLAN authentication protocols.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 49 %
    19 * %version: 46.1.6 %
    20 */
    20 */
    21 
    21 
    22 // This is enumeration of EAPOL source code.
    22 // This is enumeration of EAPOL source code.
    23 #if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
    23 #if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
    24 	#undef EAP_FILE_NUMBER_ENUM
    24 	#undef EAP_FILE_NUMBER_ENUM
    34 #include "eap_am_tools_symbian.h"
    34 #include "eap_am_tools_symbian.h"
    35 #include "eap_state_notification.h"
    35 #include "eap_state_notification.h"
    36 #include "EapAkaDbDefaults.h"
    36 #include "EapAkaDbDefaults.h"
    37 #include "EapAkaDbParameterNames.h"
    37 #include "EapAkaDbParameterNames.h"
    38 #include "EapAkaDbUtils.h"
    38 #include "EapAkaDbUtils.h"
    39 #include "eap_am_trace_symbian.h"
    39 #include "EapTraceSymbian.h"
    40 
    40 
    41 #include <d32dbms.h>	// For DBMS
    41 #include <d32dbms.h>	// For DBMS
    42 #include <s32strm.h> 	// For RReadStream
    42 #include <s32strm.h> 	// For RReadStream
    43 
    43 
    44 #if defined (USE_EAP_TYPE_SERVER_AKA)
    44 #if defined (USE_EAP_TYPE_SERVER_AKA)
   152 , m_AUTN(tools)
   152 , m_AUTN(tools)
   153 , m_max_session_time(0)
   153 , m_max_session_time(0)
   154 {
   154 {
   155 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   155 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   156 
   156 
   157 #ifdef USE_EAP_EXPANDED_TYPES
       
   158 
       
   159 	m_tunneling_vendor_type = m_tunneling_type.get_vendor_type();
       
   160 
       
   161 #else
       
   162 
       
   163 	m_tunneling_vendor_type = static_cast<TUint>(m_tunneling_type);
       
   164 
       
   165 #endif //#ifdef USE_EAP_EXPANDED_TYPES
       
   166 
       
   167 	if (receive_network_id != 0
   157 	if (receive_network_id != 0
   168 		&& receive_network_id->get_is_valid_data() == true)
   158 		&& receive_network_id->get_is_valid_data() == true)
   169 	{
   159 	{
   170 		eap_status_e status = m_receive_network_id.set_copy_of_network_id(
   160 		eap_status_e status = m_receive_network_id.set_copy_of_network_id(
   171 			receive_network_id);
   161 			receive_network_id);
   580 
   570 
   581 	// Form the insertion command
   571 	// Form the insertion command
   582 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   572 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   583 	TPtr sqlStatement = buf->Des();
   573 	TPtr sqlStatement = buf->Des();
   584 
   574 
   585 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   575 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   586 	sqlStatement.Format(KSQLInsert, &KPseudonymId, &KAkaTableName, 
   576 	sqlStatement.Format(
   587 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   577 		KSQLInsert,
       
   578 		&KPseudonymId,
       
   579 		&KAkaTableName, 
       
   580 		&KServiceType,
       
   581 		m_index_type,
       
   582 		&KServiceIndex,
       
   583 		m_index,
       
   584 		&KTunnelingTypeVendorId,
       
   585 		m_tunneling_type.get_vendor_id(),
       
   586 		&KTunnelingType, 
       
   587 		m_tunneling_type.get_vendor_type());
   588 
   588 
   589 	// Evaluate view
   589 	// Evaluate view
   590 	RDbView view;
   590 	RDbView view;
   591 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   591 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   592 	CleanupClosePushL(view);
   592 	CleanupClosePushL(view);
   682 
   682 
   683 	// Form the insertion command
   683 	// Form the insertion command
   684 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   684 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   685 	TPtr sqlStatement = buf->Des();
   685 	TPtr sqlStatement = buf->Des();
   686 
   686 
   687 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   687 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   688 	sqlStatement.Format(KSQLInsert, &KReauthId, &KAkaTableName, 
   688 	sqlStatement.Format(
   689 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   689 		KSQLInsert,
       
   690 		&KReauthId,
       
   691 		&KAkaTableName, 
       
   692 		&KServiceType,
       
   693 		m_index_type,
       
   694 		&KServiceIndex,
       
   695 		m_index,
       
   696 		&KTunnelingTypeVendorId,
       
   697 		m_tunneling_type.get_vendor_id(),
       
   698 		&KTunnelingType, 
       
   699 		m_tunneling_type.get_vendor_type());
   690 		
   700 		
   691 	// Evaluate view
   701 	// Evaluate view
   692 	RDbView view;
   702 	RDbView view;
   693 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   703 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   694 	CleanupClosePushL(view);
   704 	CleanupClosePushL(view);
   810 
   820 
   811 	// Form the insertion command
   821 	// Form the insertion command
   812 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   822 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   813 	TPtr sqlStatement = buf->Des();
   823 	TPtr sqlStatement = buf->Des();
   814 
   824 
   815 	_LIT(KSQLInsert, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   825 	_LIT(KSQLInsert, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   816 	sqlStatement.Format(KSQLInsert, &KXKey, &KK_aut, &KK_encr, &KReauthCounter, &KAkaTableName, 
   826 	sqlStatement.Format(
   817 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   827 		KSQLInsert,
       
   828 		&KXKey,
       
   829 		&KK_aut,
       
   830 		&KK_encr,
       
   831 		&KReauthCounter,
       
   832 		&KAkaTableName, 
       
   833 		&KServiceType,
       
   834 		m_index_type,
       
   835 		&KServiceIndex,
       
   836 		m_index,
       
   837 		&KTunnelingTypeVendorId,
       
   838 		m_tunneling_type.get_vendor_id(),
       
   839 		&KTunnelingType, 
       
   840 		m_tunneling_type.get_vendor_type());
   818 		
   841 		
   819 	// Evaluate view
   842 	// Evaluate view
   820 	RDbView view;
   843 	RDbView view;
   821 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   844 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   822 	CleanupClosePushL(view);
   845 	CleanupClosePushL(view);
   951 
   974 
   952 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   975 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   953 	TPtr sqlStatement = buf->Des();
   976 	TPtr sqlStatement = buf->Des();
   954 
   977 
   955 	// Form the query
   978 	// Form the query
   956 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   979 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   957 	sqlStatement.Format(KSQLQuery, &KXKey, &KK_aut, &KK_encr, &KReauthCounter, &KAkaTableName, 
   980 	sqlStatement.Format(
   958 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   981 		KSQLQuery,
       
   982 		&KXKey,
       
   983 		&KK_aut,
       
   984 		&KK_encr,
       
   985 		&KReauthCounter,
       
   986 		&KAkaTableName, 
       
   987 		&KServiceType,
       
   988 		m_index_type,
       
   989 		&KServiceIndex,
       
   990 		m_index,
       
   991 		&KTunnelingTypeVendorId,
       
   992 		m_tunneling_type.get_vendor_id(),
       
   993 		&KTunnelingType, 
       
   994 		m_tunneling_type.get_vendor_type());
   959 		
   995 		
   960 	RDbView view;
   996 	RDbView view;
   961 	// Evaluate view
   997 	// Evaluate view
   962 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
   998 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
   963 	CleanupClosePushL(view);
   999 	CleanupClosePushL(view);
  1062 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1098 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1063 		
  1099 		
  1064 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1100 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1065 	TPtr sqlStatement = buf->Des();
  1101 	TPtr sqlStatement = buf->Des();
  1066 
  1102 
  1067 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  1103 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  1068 	sqlStatement.Format(KSQLInsert, &KReauthCounter, &KAkaTableName, 
  1104 	sqlStatement.Format(
  1069 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  1105 		KSQLInsert,
       
  1106 		&KReauthCounter,
       
  1107 		&KAkaTableName, 
       
  1108 		&KServiceType,
       
  1109 		m_index_type,
       
  1110 		&KServiceIndex,
       
  1111 		m_index,
       
  1112 		&KTunnelingTypeVendorId,
       
  1113 		m_tunneling_type.get_vendor_id(),
       
  1114 		&KTunnelingType, 
       
  1115 		m_tunneling_type.get_vendor_type());
  1070 		
  1116 		
  1071 	// Evaluate view
  1117 	// Evaluate view
  1072 	RDbView view;
  1118 	RDbView view;
  1073 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  1119 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  1074 	CleanupClosePushL(view);
  1120 	CleanupClosePushL(view);
  1177 	automatic_realm->reset();
  1223 	automatic_realm->reset();
  1178 	m_stored_pseudonym.reset();
  1224 	m_stored_pseudonym.reset();
  1179 	m_stored_reauth_id.reset();
  1225 	m_stored_reauth_id.reset();
  1180 	m_previous_imsi.reset();
  1226 	m_previous_imsi.reset();
  1181 
  1227 
  1182 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  1228 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  1183 	sqlStatement.Format(KSQLQuery, &KReauthId, &KReauthCounter, &KPseudonymId,
  1229 	sqlStatement.Format(
  1184 						&KPreviousIMSI, &KAkaTableName,
  1230 		KSQLQuery,
  1185 						&KServiceType, m_index_type, 
  1231 		&KReauthId,
  1186 						&KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  1232 		&KReauthCounter,
       
  1233 		&KPseudonymId,
       
  1234 		&KPreviousIMSI,
       
  1235 		&KAkaTableName,
       
  1236 		&KServiceType,
       
  1237 		m_index_type, 
       
  1238 		&KServiceIndex,
       
  1239 		m_index,
       
  1240 		&KTunnelingTypeVendorId,
       
  1241 		m_tunneling_type.get_vendor_id(),
       
  1242 		&KTunnelingType, 
       
  1243 		m_tunneling_type.get_vendor_type());
  1187 
  1244 
  1188 	RDbView view;
  1245 	RDbView view;
  1189 	// Evaluate view
  1246 	// Evaluate view
  1190 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  1247 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  1191 	CleanupClosePushL(view);
  1248 	CleanupClosePushL(view);
  1542 	
  1599 	
  1543 	// Form the insertion command
  1600 	// Form the insertion command
  1544 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1601 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1545 	TPtr sqlStatement = buf->Des();
  1602 	TPtr sqlStatement = buf->Des();
  1546 
  1603 
  1547 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  1604 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  1548 	sqlStatement.Format(KSQLInsert, &KPreviousIMSI, &KAkaTableName, 
  1605 	sqlStatement.Format(
  1549 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  1606 		KSQLInsert,
       
  1607 		&KPreviousIMSI,
       
  1608 		&KAkaTableName, 
       
  1609 		&KServiceType,
       
  1610 		m_index_type,
       
  1611 		&KServiceIndex,
       
  1612 		m_index,
       
  1613 		&KTunnelingTypeVendorId,
       
  1614 		m_tunneling_type.get_vendor_id(),
       
  1615 		&KTunnelingType, 
       
  1616 		m_tunneling_type.get_vendor_type());
  1550 		
  1617 		
  1551 	// Evaluate view
  1618 	// Evaluate view
  1552 	RDbView view;
  1619 	RDbView view;
  1553 	
  1620 	
  1554 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  1621 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  2816 	
  2883 	
  2817 	// Now do the database query
  2884 	// Now do the database query
  2818 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2885 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2819 	TPtr sqlStatement = buf->Des();
  2886 	TPtr sqlStatement = buf->Des();
  2820 
  2887 
  2821 	_LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  2888 	_LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  2822 	sqlStatement.Format(KSQLQueryRow, &unicodeString, &KAkaTableName, 
  2889 	sqlStatement.Format(
  2823 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  2890 		KSQLQueryRow,
       
  2891 		&unicodeString,
       
  2892 		&KAkaTableName, 
       
  2893 		&KServiceType,
       
  2894 		m_index_type,
       
  2895 		&KServiceIndex,
       
  2896 		m_index,
       
  2897 		&KTunnelingTypeVendorId,
       
  2898 		m_tunneling_type.get_vendor_id(),
       
  2899 		&KTunnelingType, 
       
  2900 		m_tunneling_type.get_vendor_type());
  2824 	
  2901 	
  2825 	RDbView view;
  2902 	RDbView view;
  2826 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  2903 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  2827 	CleanupClosePushL(view);
  2904 	CleanupClosePushL(view);
  2828 	User::LeaveIfError(view.EvaluateAll());	
  2905 	User::LeaveIfError(view.EvaluateAll());	
  3014 
  3091 
  3015 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  3092 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  3016 	TPtr sqlStatement = buf->Des();
  3093 	TPtr sqlStatement = buf->Des();
  3017 	
  3094 	
  3018 	// Query all the relevant parameters
  3095 	// Query all the relevant parameters
  3019 	_LIT(KSQLQuery, "SELECT %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  3096 	_LIT(KSQLQuery, "SELECT %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  3020 	sqlStatement.Format(KSQLQuery, &cf_str_EAP_AKA_max_session_validity_time_literal,
  3097 	sqlStatement.Format(
  3021 						&KAKALastFullAuthTime, &KAkaTableName,
  3098 		KSQLQuery,
  3022 						&KServiceType, m_index_type, 
  3099 		&cf_str_EAP_AKA_max_session_validity_time_literal,
  3023 						&KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  3100 		&KAKALastFullAuthTime,
       
  3101 		&KAkaTableName,
       
  3102 		&KServiceType,
       
  3103 		m_index_type, 
       
  3104 		&KServiceIndex,
       
  3105 		m_index,
       
  3106 		&KTunnelingTypeVendorId,
       
  3107 		m_tunneling_type.get_vendor_id(),
       
  3108 		&KTunnelingType, 
       
  3109 		m_tunneling_type.get_vendor_type());
  3024 
  3110 
  3025 	RDbView view;
  3111 	RDbView view;
  3026 	// Evaluate view
  3112 	// Evaluate view
  3027 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  3113 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  3028 	CleanupClosePushL(view);
  3114 	CleanupClosePushL(view);
  3136 
  3222 
  3137 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  3223 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  3138 	TPtr sqlStatement = buf->Des();
  3224 	TPtr sqlStatement = buf->Des();
  3139 	
  3225 	
  3140 	// Query all the relevant parameters
  3226 	// Query all the relevant parameters
  3141 	_LIT(KSQLQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  3227 	_LIT(KSQLQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  3142 	sqlStatement.Format(KSQLQuery, &KAKALastFullAuthTime, &KAkaTableName,
  3228 	sqlStatement.Format(
  3143 						&KServiceType, m_index_type, 
  3229 		KSQLQuery,
  3144 						&KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  3230 		&KAKALastFullAuthTime,
       
  3231 		&KAkaTableName,
       
  3232 		&KServiceType,
       
  3233 		m_index_type, 
       
  3234 		&KServiceIndex,
       
  3235 		m_index,
       
  3236 		&KTunnelingTypeVendorId,
       
  3237 		m_tunneling_type.get_vendor_id(),
       
  3238 		&KTunnelingType, 
       
  3239 		m_tunneling_type.get_vendor_type());
  3145 
  3240 
  3146 	RDbView view;
  3241 	RDbView view;
  3147 	// Evaluate view
  3242 	// Evaluate view
  3148 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  3243 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  3149 	CleanupClosePushL(view);
  3244 	CleanupClosePushL(view);