eapol/eapol_framework/eapol_symbian/am/type/gsmsim/symbian/eap_am_type_gsmsim_symbian.cpp
changeset 26 9abfd4f00d37
parent 2 1c7bc153c08e
child 34 ad1f037f1ac2
equal deleted inserted replaced
25:e03a3db4489e 26:9abfd4f00d37
    14 * Description:  EAP and WLAN authentication protocols.
    14 * Description:  EAP and WLAN authentication protocols.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 50 %
    19 * %version: 47.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
    37 #include "eap_am_tools_symbian.h"
    37 #include "eap_am_tools_symbian.h"
    38 #include "eap_state_notification.h"
    38 #include "eap_state_notification.h"
    39 #include "EapSimDbDefaults.h"
    39 #include "EapSimDbDefaults.h"
    40 #include "EapSimDbParameterNames.h"
    40 #include "EapSimDbParameterNames.h"
    41 #include "EapSimDbUtils.h"
    41 #include "EapSimDbUtils.h"
    42 #include "eap_am_trace_symbian.h"
    42 #include "EapTraceSymbian.h"
    43 
    43 
    44 #include <d32dbms.h>	// For DBMS
    44 #include <d32dbms.h>	// For DBMS
    45 #include <s32strm.h> 	// For RReadStream
    45 #include <s32strm.h> 	// For RReadStream
    46 
    46 
    47 #if defined (USE_EAP_GSMSIM_INTERFACE) && !defined(__WINS__)
    47 #if defined (USE_EAP_GSMSIM_INTERFACE) && !defined(__WINS__)
   106 , m_do_rand_uniqueness_check(true)
   106 , m_do_rand_uniqueness_check(true)
   107 , m_max_session_time(0)
   107 , m_max_session_time(0)
   108 {
   108 {
   109 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   109 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   110 
   110 
   111 #ifdef USE_EAP_EXPANDED_TYPES
       
   112 
       
   113 	m_tunneling_vendor_type = m_tunneling_type.get_vendor_type();
       
   114 
       
   115 #else
       
   116 
       
   117 	m_tunneling_vendor_type = static_cast<TUint>(m_tunneling_type);
       
   118 
       
   119 #endif //#ifdef USE_EAP_EXPANDED_TYPES
       
   120 
       
   121 	if (receive_network_id != 0
   111 	if (receive_network_id != 0
   122 		&& receive_network_id->get_is_valid_data() == true)
   112 		&& receive_network_id->get_is_valid_data() == true)
   123 	{
   113 	{
   124 		eap_status_e status = m_receive_network_id.set_copy_of_network_id(
   114 		eap_status_e status = m_receive_network_id.set_copy_of_network_id(
   125 			receive_network_id);
   115 			receive_network_id);
   288 
   278 
   289 	// Form the insertion command
   279 	// Form the insertion command
   290 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   280 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   291 	TPtr sqlStatement = buf->Des();
   281 	TPtr sqlStatement = buf->Des();
   292 
   282 
   293 	_LIT(KSQLInsert, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   283 	_LIT(KSQLInsert, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   294 	sqlStatement.Format(KSQLInsert, &KXKey, &KK_aut, &KK_encr, &KReauthCounter, &KSimTableName, 
   284 	sqlStatement.Format(
   295 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   285 		KSQLInsert,
       
   286 		&KXKey,
       
   287 		&KK_aut,
       
   288 		&KK_encr,
       
   289 		&KReauthCounter,
       
   290 		&KSimTableName, 
       
   291 		&KServiceType,
       
   292 		m_index_type,
       
   293 		&KServiceIndex,
       
   294 		m_index,
       
   295 		&KTunnelingTypeVendorId,
       
   296 		m_tunneling_type.get_vendor_id(),
       
   297 		&KTunnelingType, 
       
   298 		m_tunneling_type.get_vendor_type());
   296 		
   299 		
   297 	// Evaluate view
   300 	// Evaluate view
   298 	RDbView view;
   301 	RDbView view;
   299 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   302 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   300 	CleanupClosePushL(view);
   303 	CleanupClosePushL(view);
   425 
   428 
   426 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   429 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   427 	TPtr sqlStatement = buf->Des();
   430 	TPtr sqlStatement = buf->Des();
   428 
   431 
   429 	// Form the query
   432 	// Form the query
   430 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   433 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   431 	sqlStatement.Format(KSQLQuery, &KXKey, &KK_aut, &KK_encr, &KReauthCounter, &KSimTableName, 
   434 	sqlStatement.Format(
   432 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   435 		KSQLQuery,
       
   436 		&KXKey,
       
   437 		&KK_aut,
       
   438 		&KK_encr,
       
   439 		&KReauthCounter,
       
   440 		&KSimTableName,
       
   441 		&KServiceType,
       
   442 		m_index_type,
       
   443 		&KServiceIndex,
       
   444 		m_index,
       
   445 		&KTunnelingTypeVendorId,
       
   446 		m_tunneling_type.get_vendor_id(),
       
   447 		&KTunnelingType, 
       
   448 		m_tunneling_type.get_vendor_type());
   433 		
   449 		
   434 	RDbView view;
   450 	RDbView view;
   435 	// Evaluate view
   451 	// Evaluate view
   436 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
   452 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
   437 	CleanupClosePushL(view);
   453 	CleanupClosePushL(view);
   531 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   547 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   532 		
   548 		
   533 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   549 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   534 	TPtr sqlStatement = buf->Des();
   550 	TPtr sqlStatement = buf->Des();
   535 
   551 
   536 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   552 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   537 	sqlStatement.Format(KSQLInsert, &KReauthCounter, &KSimTableName, 
   553 	sqlStatement.Format(
   538 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   554 		KSQLInsert,
       
   555 		&KReauthCounter,
       
   556 		&KSimTableName, 
       
   557 		&KServiceType,
       
   558 		m_index_type,
       
   559 		&KServiceIndex,
       
   560 		m_index,
       
   561 		&KTunnelingTypeVendorId,
       
   562 		m_tunneling_type.get_vendor_id(),
       
   563 		&KTunnelingType, 
       
   564 		m_tunneling_type.get_vendor_type());
   539 		
   565 		
   540 	// Evaluate view
   566 	// Evaluate view
   541 	RDbView view;
   567 	RDbView view;
   542 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   568 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   543 	CleanupClosePushL(view);
   569 	CleanupClosePushL(view);
   902 
   928 
   903 	// Form the insertion command
   929 	// Form the insertion command
   904 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   930 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
   905 	TPtr sqlStatement = buf->Des();
   931 	TPtr sqlStatement = buf->Des();
   906 
   932 
   907 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
   933 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
   908 	sqlStatement.Format(KSQLInsert, &KPseudonymId, &KSimTableName, 
   934 	sqlStatement.Format(
   909 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
   935 		KSQLInsert,
       
   936 		&KPseudonymId,
       
   937 		&KSimTableName, 
       
   938 		&KServiceType,
       
   939 		m_index_type,
       
   940 		&KServiceIndex,
       
   941 		m_index,
       
   942 		&KTunnelingTypeVendorId,
       
   943 		m_tunneling_type.get_vendor_id(),
       
   944 		&KTunnelingType, 
       
   945 		m_tunneling_type.get_vendor_type());
   910 
   946 
   911 	// Evaluate view
   947 	// Evaluate view
   912 	RDbView view;
   948 	RDbView view;
   913 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   949 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
   914 	CleanupClosePushL(view);
   950 	CleanupClosePushL(view);
   999 
  1035 
  1000 	// Form the insertion command
  1036 	// Form the insertion command
  1001 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1037 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1002 	TPtr sqlStatement = buf->Des();
  1038 	TPtr sqlStatement = buf->Des();
  1003 
  1039 
  1004 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  1040 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  1005 	sqlStatement.Format(KSQLInsert, &KReauthId, &KSimTableName, 
  1041 	sqlStatement.Format(
  1006 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  1042 		KSQLInsert,
       
  1043 		&KReauthId,
       
  1044 		&KSimTableName, 
       
  1045 		&KServiceType,
       
  1046 		m_index_type,
       
  1047 		&KServiceIndex,
       
  1048 		m_index,
       
  1049 		&KTunnelingTypeVendorId,
       
  1050 		m_tunneling_type.get_vendor_id(),
       
  1051 		&KTunnelingType, 
       
  1052 		m_tunneling_type.get_vendor_type());
  1007 		
  1053 		
  1008 	// Evaluate view
  1054 	// Evaluate view
  1009 	RDbView view;
  1055 	RDbView view;
  1010 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  1056 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  1011 	CleanupClosePushL(view);
  1057 	CleanupClosePushL(view);
  1091 	
  1137 	
  1092 	// Form the insertion command
  1138 	// Form the insertion command
  1093 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1139 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  1094 	TPtr sqlStatement = buf->Des();
  1140 	TPtr sqlStatement = buf->Des();
  1095 
  1141 
  1096 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  1142 	_LIT(KSQLInsert, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  1097 	sqlStatement.Format(KSQLInsert, &KPreviousIMSI, &KSimTableName, 
  1143 	sqlStatement.Format(
  1098 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  1144 		KSQLInsert,
       
  1145 		&KPreviousIMSI,
       
  1146 		&KSimTableName, 
       
  1147 		&KServiceType,
       
  1148 		m_index_type,
       
  1149 		&KServiceIndex,
       
  1150 		m_index,
       
  1151 		&KTunnelingTypeVendorId,
       
  1152 		m_tunneling_type.get_vendor_id(),
       
  1153 		&KTunnelingType, 
       
  1154 		m_tunneling_type.get_vendor_type());
       
  1155 
  1099 	// Evaluate view
  1156 	// Evaluate view
  1100 	RDbView view;
  1157 	RDbView view;
  1101 	
  1158 	
  1102 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  1159 	User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  1103 	CleanupClosePushL(view);
  1160 	CleanupClosePushL(view);
  1215 	m_stored_reauth_id.reset();
  1272 	m_stored_reauth_id.reset();
  1216 	m_previous_imsi.reset();
  1273 	m_previous_imsi.reset();
  1217 
  1274 
  1218 	// Query all the relevant parameters
  1275 	// Query all the relevant parameters
  1219 
  1276 
  1220 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  1277 	_LIT(KSQLQuery, "SELECT %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  1221 	sqlStatement.Format(KSQLQuery, &KReauthId, &KReauthCounter, &KPseudonymId,
  1278 	sqlStatement.Format(
  1222 						&KPreviousIMSI, &KSimTableName,
  1279 		KSQLQuery,
  1223 						&KServiceType, m_index_type, 
  1280 		&KReauthId,
  1224 						&KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  1281 		&KReauthCounter,
       
  1282 		&KPseudonymId,
       
  1283 		&KPreviousIMSI,
       
  1284 		&KSimTableName,
       
  1285 		&KServiceType,
       
  1286 		m_index_type, 
       
  1287 		&KServiceIndex,
       
  1288 		m_index,
       
  1289 		&KTunnelingTypeVendorId,
       
  1290 		m_tunneling_type.get_vendor_id(),
       
  1291 		&KTunnelingType, 
       
  1292 		m_tunneling_type.get_vendor_type());
  1225 
  1293 
  1226 	RDbView view;
  1294 	RDbView view;
  1227 	// Evaluate view
  1295 	// Evaluate view
  1228 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  1296 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  1229 	CleanupClosePushL(view);
  1297 	CleanupClosePushL(view);
  2072 	
  2140 	
  2073 	// Now do the database query
  2141 	// Now do the database query
  2074 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2142 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2075 	TPtr sqlStatement = buf->Des();
  2143 	TPtr sqlStatement = buf->Des();
  2076 
  2144 
  2077 	_LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  2145 	_LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  2078 	sqlStatement.Format(KSQLQueryRow, &unicodeString, &KSimTableName, 
  2146 	sqlStatement.Format(
  2079 		&KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  2147 		KSQLQueryRow,
       
  2148 		&unicodeString,
       
  2149 		&KSimTableName, 
       
  2150 		&KServiceType,
       
  2151 		m_index_type,
       
  2152 		&KServiceIndex,
       
  2153 		m_index,
       
  2154 		&KTunnelingTypeVendorId,
       
  2155 		m_tunneling_type.get_vendor_id(),
       
  2156 		&KTunnelingType, 
       
  2157 		m_tunneling_type.get_vendor_type());
  2080 	
  2158 	
  2081 	RDbView view;
  2159 	RDbView view;
  2082 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  2160 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  2083 	CleanupClosePushL(view);
  2161 	CleanupClosePushL(view);
  2084 	User::LeaveIfError(view.EvaluateAll());	
  2162 	User::LeaveIfError(view.EvaluateAll());	
  2626 
  2704 
  2627 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2705 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2628 	TPtr sqlStatement = buf->Des();
  2706 	TPtr sqlStatement = buf->Des();
  2629 	
  2707 	
  2630 	// Query all the relevant parameters
  2708 	// Query all the relevant parameters
  2631 	_LIT(KSQLQuery, "SELECT %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  2709 	_LIT(KSQLQuery, "SELECT %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  2632 	sqlStatement.Format(KSQLQuery, &cf_str_EAP_GSMSIM_max_session_validity_time_literal,
  2710 	sqlStatement.Format(
  2633 						&KGSMSIMLastFullAuthTime, &KSimTableName,
  2711 		KSQLQuery,
  2634 						&KServiceType, m_index_type, 
  2712 		&cf_str_EAP_GSMSIM_max_session_validity_time_literal,
  2635 						&KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  2713 		&KGSMSIMLastFullAuthTime,
       
  2714 		&KSimTableName,
       
  2715 		&KServiceType,
       
  2716 		m_index_type, 
       
  2717 		&KServiceIndex,
       
  2718 		m_index,
       
  2719 		&KTunnelingTypeVendorId,
       
  2720 		m_tunneling_type.get_vendor_id(),
       
  2721 		&KTunnelingType, 
       
  2722 		m_tunneling_type.get_vendor_type());
  2636 
  2723 
  2637 	RDbView view;
  2724 	RDbView view;
  2638 	// Evaluate view
  2725 	// Evaluate view
  2639 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  2726 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement)));
  2640 	CleanupClosePushL(view);
  2727 	CleanupClosePushL(view);
  2748 
  2835 
  2749 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2836 	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
  2750 	TPtr sqlStatement = buf->Des();
  2837 	TPtr sqlStatement = buf->Des();
  2751 	
  2838 	
  2752 	// Query all the relevant parameters
  2839 	// Query all the relevant parameters
  2753 	_LIT(KSQLQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
  2840 	_LIT(KSQLQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
  2754 	sqlStatement.Format(KSQLQuery, &KGSMSIMLastFullAuthTime, &KSimTableName,
  2841 	sqlStatement.Format(
  2755 						&KServiceType, m_index_type, 
  2842 		KSQLQuery,
  2756 						&KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type);
  2843 		&KGSMSIMLastFullAuthTime,
       
  2844 		&KSimTableName,
       
  2845 		&KServiceType,
       
  2846 		m_index_type, 
       
  2847 		&KServiceIndex,
       
  2848 		m_index,
       
  2849 		&KTunnelingTypeVendorId,
       
  2850 		m_tunneling_type.get_vendor_id(),
       
  2851 		&KTunnelingType, 
       
  2852 		m_tunneling_type.get_vendor_type());
  2757 
  2853 
  2758 	RDbView view;
  2854 	RDbView view;
  2759 	// Evaluate view
  2855 	// Evaluate view
  2760 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  2856 	User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
  2761 	CleanupClosePushL(view);
  2857 	CleanupClosePushL(view);