diff -r bad0cc58d154 -r c74b3d9f6b9e eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/eap_am_type_tls_peap_symbian.cpp --- a/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/eap_am_type_tls_peap_symbian.cpp Tue Aug 31 15:16:37 2010 +0300 +++ b/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/eap_am_type_tls_peap_symbian.cpp Wed Sep 01 12:23:57 2010 +0100 @@ -16,7 +16,7 @@ */ /* -* %version: 256 % +* %version: 253 % */ // This is enumeration of EAPOL source code. @@ -53,7 +53,7 @@ #include #include "EapTlsPeapTimerValues.h" #include "eap_state_notification.h" -#include "EapTraceSymbian.h" +#include "eap_am_trace_symbian.h" #include "eap_automatic_variable.h" #if defined(USE_FAST_EAP_TYPE) @@ -65,49 +65,36 @@ #include "eap_tlv_header.h" #include "eap_tlv_message_data.h" #endif -#include - + +#include "eap_ttls_pap_active.h" #ifdef USE_PAC_STORE - #include "pac_store_db_symbian.h" - #include +#include "pac_store_db_symbian.h" +#include #endif +#ifdef USE_EAP_EXPANDED_TYPES #include "eap_header_string.h" +#endif //#ifdef USE_EAP_EXPANDED_TYPES #if defined(USE_EAP_CONFIGURATION_TO_SKIP_USER_INTERACTIONS) - #include "eap_config.h" - #include "eap_file_config.h" - #include "eap_am_file_input_symbian.h" +#include "eap_config.h" +#include "eap_file_config.h" +#include "eap_am_file_input_symbian.h" #endif -#include "EapConfigToolsSymbian.h" -#include "EapConversion.h" -#include "EapPluginTools.h" - -#include - - const TUint KMaxSqlQueryLength = 512; const TUint KMaxDBFieldNameLength = 255; const TUint KDSASignatureLength = 40; const TInt KDefaultColumnInView_One = 1; // For DB view. const TInt KMicroSecsInASecond = 1000000; // 1000000 micro seconds is 1 second. - -#ifdef USE_FAST_EAP_TYPE - -const TUint KMaxDeviceSeedLength = RMobilePhone::KPhoneManufacturerIdSize+ - RMobilePhone::KPhoneModelIdSize+ - RMobilePhone::KPhoneSerialNumberSize; -const TUint KMaxDeviceSeedSize = 2*KMaxDeviceSeedLength; -#endif + /** * Length of the MAC address */ #ifdef USE_FAST_EAP_TYPE - const TUint8 KMacAddressLength = 6; + const TUint8 KMacAddressLength = 6; #endif - //-------------------------------------------------- eap_am_type_tls_peap_symbian_c::eap_am_type_tls_peap_symbian_c( @@ -129,7 +116,8 @@ #if defined(USE_FAST_EAP_TYPE) , m_tls_application(0) //, iWaitNoteCancelled( EFalse ) - + , iEapFastActiveWaitNote( NULL ) + , iEapFastActiveNotes( NULL ) #endif //#if defined(USE_FAST_EAP_TYPE) , m_is_valid(false) , m_is_client(aIsClient) @@ -150,7 +138,7 @@ , m_param_q(aTools) , m_param_g(aTools) , m_shutdown_was_called(false) - + , m_identity_info(0) , m_tunneled_type(eap_type_none) , m_verify_certificate_realm(true) , m_allow_subdomain_matching(false) @@ -160,7 +148,6 @@ , m_use_manual_realm(false) , m_manual_realm(aTools) , m_tls_peap_server_authenticates_client_policy_flag(true) - , m_use_automatic_ca_certificate(false) , m_configured(false) , m_max_session_time(0) #if defined(USE_EAP_TLS_SESSION_TICKET) @@ -189,98 +176,101 @@ , m_ready_references_and_data_blocks(aTools) , m_serv_unauth_prov_mode(false) , m_serv_auth_prov_mode(false) - + , m_is_notifier_connected(false) , m_notifier_data_to_user(NULL) , m_notifier_data_pckg_to_user(NULL) - - , iMMETELConnectionStatus(false) + , m_notifier_data_from_user(NULL) + , m_notifier_data_pckg_from_user(NULL) , m_completed_with_zero(false) , m_verificationStatus(false) - , m_pacStorePWBuf8(0) - , m_userAction(EEapFastNotifierUserActionOk) - , m_pacStoreDataRefType(eap_pac_store_data_type_none) , m_data_reference(m_am_tools) + , m_notifier_complete(false) , m_userResponse(m_am_tools) - , m_pending_operation(eap_fast_pac_store_pending_operation_none) , m_both_completed(0) , m_both_asked(0) - , m_ready_references_array_index(0) - , m_provisioning_mode(eap_fast_completion_operation_none) - , iCompletionOperation(eap_fast_completion_operation_none) - , iCompletion(eap_fast_initialize_pac_store_completion_none) #endif //#if defined(USE_FAST_EAP_TYPE) - , m_notifier_complete(false) - #ifdef USE_PAC_STORE ,iPacStoreDb(NULL) #endif #ifdef USE_EAP_CONFIGURATION_TO_SKIP_USER_INTERACTIONS - , m_skip_user_interactions(false) - , m_fileconfig(0) +, m_skip_user_interactions(false) +, m_fileconfig(0) #endif - - , iEapTtlsPapMaxSessionConfigTime( 0 ) - - - - , iPacStoreDeviceSeed(0) - - , iEapAuthNotifier(0) - + + + + , iEapTtlsPapMaxSessionConfigTime( 0 ) + , iEapTtlsPapActive( NULL ) + { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); +#ifdef USE_EAP_EXPANDED_TYPES + + m_tunneling_vendor_type = m_tunneling_type.get_vendor_type(); + m_current_eap_vendor_type = m_current_eap_type.get_vendor_type(); + +#else + + m_tunneling_vendor_type = static_cast(m_tunneling_type); + m_current_eap_vendor_type = static_cast(m_current_eap_type); + +#endif //#ifdef USE_EAP_EXPANDED_TYPES + // Set the database table name based on the type - if (m_current_eap_type == eap_type_tls) - { - m_db_table_name = KTlsDatabaseTableName; - m_db_user_cert_table_name = KTlsAllowedUserCertsDatabaseTableName; - m_db_ca_cert_table_name = KTlsAllowedCACertsDatabaseTableName; - m_db_cipher_suite_table_name = KTlsAllowedCipherSuitesDatabaseTableName; - m_db_name = KTlsDatabaseName; - } - else if (m_current_eap_type == eap_type_peap) - { - m_db_table_name = KPeapDatabaseTableName; - m_db_user_cert_table_name = KPeapAllowedUserCertsDatabaseTableName; - m_db_ca_cert_table_name = KPeapAllowedCACertsDatabaseTableName; - m_db_cipher_suite_table_name = KPeapAllowedCipherSuitesDatabaseTableName; - m_db_name = KPeapDatabaseName; - } - else if (m_current_eap_type == eap_expanded_type_ttls_plain_pap.get_type() - || m_current_eap_type == eap_type_ttls) - { - m_db_table_name = KTtlsDatabaseTableName; - m_db_user_cert_table_name = KTtlsAllowedUserCertsDatabaseTableName; - m_db_ca_cert_table_name = KTtlsAllowedCACertsDatabaseTableName; - m_db_cipher_suite_table_name = KTtlsAllowedCipherSuitesDatabaseTableName; - m_db_name = KTtlsDatabaseName; - } + switch (m_current_eap_vendor_type) + { + case eap_type_tls: + m_db_table_name = KTlsDatabaseTableName; + m_db_user_cert_table_name = KTlsAllowedUserCertsDatabaseTableName; + m_db_ca_cert_table_name = KTlsAllowedCACertsDatabaseTableName; + m_db_cipher_suite_table_name = KTlsAllowedCipherSuitesDatabaseTableName; + m_db_name = KTlsDatabaseName; + break; + + case eap_type_peap: + m_db_table_name = KPeapDatabaseTableName; + m_db_user_cert_table_name = KPeapAllowedUserCertsDatabaseTableName; + m_db_ca_cert_table_name = KPeapAllowedCACertsDatabaseTableName; + m_db_cipher_suite_table_name = KPeapAllowedCipherSuitesDatabaseTableName; + m_db_name = KPeapDatabaseName; + break; + + case eap_type_ttls_plain_pap: + // use the same case as for eap_type_ttls; + // break is not needed + + case eap_type_ttls: + m_db_table_name = KTtlsDatabaseTableName; + m_db_user_cert_table_name = KTtlsAllowedUserCertsDatabaseTableName; + m_db_ca_cert_table_name = KTtlsAllowedCACertsDatabaseTableName; + m_db_cipher_suite_table_name = KTtlsAllowedCipherSuitesDatabaseTableName; + m_db_name = KTtlsDatabaseName; + break; #if defined (USE_FAST_EAP_TYPE) - else if (m_current_eap_type == eap_type_fast) - { - m_db_table_name = KFastGeneralSettingsDBTableName; // General settings - m_db_fast_special_table_name = KFastSpecialSettingsDBTableName; // Special settings for only FAST - m_db_user_cert_table_name = KFastAllowedUserCertsDatabaseTableName; - m_db_ca_cert_table_name = KFastAllowedCACertsDatabaseTableName; - m_db_cipher_suite_table_name = KFastAllowedCipherSuitesDatabaseTableName; - m_db_name = KFastDatabaseName; - } + case eap_type_fast: + m_db_table_name = KFastGeneralSettingsDBTableName; // General settings + m_db_fast_special_table_name = KFastSpecialSettingsDBTableName; // Special settings for only FAST + m_db_user_cert_table_name = KFastAllowedUserCertsDatabaseTableName; + m_db_ca_cert_table_name = KFastAllowedCACertsDatabaseTableName; + m_db_cipher_suite_table_name = KFastAllowedCipherSuitesDatabaseTableName; + m_db_name = KFastDatabaseName; + break; #endif // #if defined (USE_FAST_EAP_TYPE) - else - { - // Unsupported type - // Should never happen - EAP_TRACE_ERROR(m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("Unsupported EAP type, m_current_eap_vendor_type=0xfe%06x%08x\n"), - m_current_eap_type.get_vendor_id(), - m_current_eap_type.get_vendor_type())); - - return; + default: + { + // Unsupported type + // Should never happen + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("Unsupported EAP type, m_current_eap_vendor_type=%d \n"), + m_current_eap_vendor_type)); + + return; + } } if (receive_network_id != 0 @@ -320,7 +310,7 @@ && aEapType != eap_type_ttls #endif // #if defined(USE_TTLS_EAP_TYPE) - && aEapType != eap_expanded_type_ttls_plain_pap.get_type() + && aEapType != eap_type_ttls_plain_pap #if defined (USE_FAST_EAP_TYPE) && aEapType != eap_type_fast @@ -358,10 +348,6 @@ // void eap_am_type_tls_peap_symbian_c::ConstructL() { - TInt error = m_session.Connect(); - EAP_TRACE_DEBUG_SYMBIAN((_L("eap_am_type_tls_peap_symbian_c::ConstructL(): - m_session.Connect(), error=%d\n"), error)); - User::LeaveIfError(error); - // Open/create database EapTlsPeapUtils::OpenDatabaseL(m_database, m_session, m_index_type, m_index, m_tunneling_type, m_current_eap_type); @@ -386,13 +372,30 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::ConstructL Opened PAC store"))); } - m_info_array.ResetAndDestroy(); + m_info_array.Reset(); #endif // End: #ifdef USE_FAST_EAP_TYPE #endif // End: #ifdef USE_PAC_STORE - m_notifier_data_to_user = new(ELeave) CEapAuthNotifier::TEapDialogInfo; - m_notifier_data_pckg_to_user = new(ELeave) TPckg (*m_notifier_data_to_user); +#ifdef USE_FAST_EAP_TYPE + + if(m_current_eap_type == eap_type_fast) + { + m_notifier_data_to_user = new(ELeave) TEapFastNotifierStruct; + m_notifier_data_pckg_to_user = new(ELeave) TPckg (*m_notifier_data_to_user); + + EAP_TRACE_DATA_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("eap_am_type_tls_peap_symbian_c::ConstructL m_notifier_data_pckg_to_user"), + m_notifier_data_pckg_to_user->Ptr(), + m_notifier_data_pckg_to_user->Size())); + + m_notifier_data_from_user = new(ELeave) TEapFastNotifierStruct; + m_notifier_data_pckg_from_user = new(ELeave) TPckg (*m_notifier_data_from_user); + } +#endif // End: #ifdef USE_FAST_EAP_TYPE + } @@ -421,27 +424,48 @@ m_cert_if->Cancel(); } } - - if (iEapAuthNotifier != 0) - { - iEapAuthNotifier->Cancel(); - } - - - - -#if defined(USE_FAST_EAP_TYPE) - - - -#endif + + if ( iEapTtlsPapActive ) + { + if ( iEapTtlsPapActive->IsActive() ) + { + EAP_TRACE_DEBUG_SYMBIAN( + ( _L( " eap_am_type_tls_peap_symbian_c::shutdown() \ + Cancelling iEapTtlsPapActive." ) ) ); + iEapTtlsPapActive->Cancel(); + } + EAP_TRACE_DEBUG_SYMBIAN( + ( _L( " eap_am_type_tls_peap_symbian_c::shutdown() \ + Deleting iEapTtlsPapActive." ) ) ); + delete iEapTtlsPapActive; + iEapTtlsPapActive = NULL; + } + +#if defined(USE_FAST_EAP_TYPE) + if( m_is_notifier_connected ) + { + EAP_TRACE_DEBUG_SYMBIAN( + (_L(" eap_am_type_tls_peap_symbian_c::shutdown - calling m_notifier.CancelNotifier"))); + if(IsActive()) + { + TInt error = m_notifier.CancelNotifier(KEapFastNotifierUid); + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::shutdown - CancelNotifier=%d"), error)); + } + EAP_TRACE_DEBUG_SYMBIAN( + (_L(" eap_am_type_securid_symbian_c::shutdown - calling m_notifier.Close()"))); + + m_notifier.Close(); // Call close only if it is connected. + + m_is_notifier_connected = false; + + } // End: if( m_is_notifier_connected ) if (m_partner != NULL) { EAP_TRACE_DEBUG_SYMBIAN( (_L(" eap_am_type_tls_peap_symbian_c::shutdown - Cancel timers ..."))); -#if defined(USE_FAST_EAP_TYPE) m_partner->cancel_timer( this, KRemoveIAPReferenceTimerID); @@ -458,28 +482,36 @@ this, KHandleReadPacstoreTimerID); - m_partner->cancel_timer( - this, - KHandleCompletePacstoreNokTimerID); - - m_partner->cancel_timer( - this, - KHandleCompletePacstoreOkTimerID); - -#endif EAP_TRACE_DEBUG_SYMBIAN( (_L(" eap_am_type_tls_peap_symbian_c::shutdown - Timers canceled"))); } -#if defined(USE_FAST_EAP_TYPE) - + if ( iEapFastActiveWaitNote ) + { + if ( iEapFastActiveWaitNote->IsActive() ) + { + iEapFastActiveWaitNote->Cancel(); + } + delete iEapFastActiveWaitNote; + iEapFastActiveWaitNote = NULL; + } + + if ( iEapFastActiveNotes ) + { + if ( iEapFastActiveNotes->IsActive() ) + { + iEapFastActiveNotes->Cancel(); + } + delete iEapFastActiveNotes; + iEapFastActiveNotes = NULL; + } #endif // #if defined(USE_FAST_EAP_TYPE) - m_allowed_server_certs.ResetAndDestroy(); - m_allowed_ca_certs.ResetAndDestroy(); + m_allowed_server_certs.Reset(); + m_allowed_ca_certs.Close(); m_allowed_cipher_suites.Close(); - m_allowed_user_certs.ResetAndDestroy(); + m_allowed_user_certs.Reset(); #ifdef USE_PAC_STORE #ifdef USE_FAST_EAP_TYPE @@ -489,7 +521,13 @@ iPacStoreDb->Close(); } - m_info_array.ResetAndDestroy(); + TInt count=0; + while (count < m_info_array.Count()) + { + delete m_info_array[count].iData; + delete m_info_array[count].iReference; + } + m_info_array.Reset(); EAP_TRACE_DEBUG_SYMBIAN( (_L(" eap_am_type_tls_peap_symbian_c::shutdown - Arrays cleared"))); @@ -513,6 +551,7 @@ return eap_status_ok; } + //-------------------------------------------------- EAP_FUNC_EXPORT eap_am_type_tls_peap_symbian_c::~eap_am_type_tls_peap_symbian_c() @@ -532,14 +571,26 @@ m_database.Close(); m_session.Close(); - delete m_notifier_data_to_user; - delete m_notifier_data_pckg_to_user; +#ifdef USE_FAST_EAP_TYPE + + if(m_current_eap_type == eap_type_fast) + { + delete m_notifier_data_to_user; + delete m_notifier_data_pckg_to_user; + + delete m_notifier_data_from_user; + delete m_notifier_data_pckg_from_user; + } +#endif // End: #ifdef USE_FAST_EAP_TYPE delete m_cert_if; delete m_ca_certificate; delete m_own_certificate; delete m_peer_certificate; + delete m_identity_info; + +#ifdef USE_EAP_EXPANDED_TYPES m_enabled_tunneling_exp_eap_array.ResetAndDestroy(); m_disabled_tunneling_exp_eap_array.ResetAndDestroy(); @@ -549,306 +600,24 @@ TRACE_FLAGS_DEFAULT, (EAPL("eap_am_type_tls_peap_symbian_c::~eap_am_type_tls_peap_symbian_c() tunneling done.\n"))); +#else + + m_iap_eap_array.ResetAndDestroy(); + +#endif // #ifdef USE_EAP_EXPANDED_TYPES + #ifdef USE_PAC_STORE delete iPacStoreDb; -#endif // #ifdef USE_PAC_STORE - - delete iEapAuthNotifier; - iEapAuthNotifier = 0; - +#endif // End: #ifdef USE_PAC_STORE + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } //-------------------------------------------------- -EAP_FUNC_EXPORT void eap_am_type_tls_peap_symbian_c::DlgComplete( TInt aStatus ) -{ - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("TLS: function: eap_am_type_tls_peap_symbian_c::DlgComplete(): m_notifier_complete=%d, m_state=%d\n"), - m_notifier_complete, - m_state)); - - EAP_TRACE_RETURN_STRING(m_am_tools, "returns: eap_am_type_tls_peap_symbian_c::DlgComplete()"); - -#ifdef USE_FAST_EAP_TYPE - m_userAction = EEapFastNotifierUserActionOk; -#endif - - eap_status_e status = m_am_tools->convert_am_error_to_eapol_error(aStatus); - - if(m_notifier_complete) - { - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL( "m_notifier_data_pckg_to_user" ), - m_notifier_data_pckg_to_user->Ptr(), - m_notifier_data_pckg_to_user->Size() ) ); - - if ( aStatus == KErrCancel ) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("TLS: function: eap_am_type_tls_peap_symbian_c::DlgComplete(): User cancelled the dialog\n"))); - -#ifdef USE_FAST_EAP_TYPE - m_userAction = EEapFastNotifierUserActionCancel; -#endif - } - else if( aStatus != KErrNone ) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("ERROR: TLS: function: eap_am_type_tls_peap_symbian_c::DlgComplete(): dialog error=%d\n"), - aStatus)); - - TBuf8 userNameUtf8; - TBuf8 challengeUtf8; - userNameUtf8.Zero(); - challengeUtf8.Zero(); - - CompleteQueryTtlsPapUserNameAndPassword( - status, userNameUtf8, challengeUtf8 ); - - return; // m_am_tools->convert_am_error_to_eapol_error(aStatus); - } - - if ( m_notifier_data_to_user->iPassword.Size() > 0 ) - { - HBufC8* notifier_data8 = NULL; - TRAPD(err, notifier_data8 = HBufC8::NewL(m_notifier_data_to_user->iPassword.Size())); - if (err) - { - return; - } - TPtr8 notifier_dataPtr8 = notifier_data8->Des(); - - notifier_dataPtr8.Copy(m_notifier_data_to_user->iPassword); // Unicode -> ascii. - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL( "eap_am_type_tls_peap_symbian_c::DlgComplete PW from UI (8bits)" ), - notifier_dataPtr8.Ptr(), - notifier_dataPtr8.Size() ) ); - -#ifdef USE_FAST_EAP_TYPE - status = m_userResponse.set_copy_of_buffer( - notifier_dataPtr8.Ptr(), - notifier_dataPtr8.Size()); -#endif - CleanupStack::PopAndDestroy( notifier_data8 ); - } - } - - m_notifier_complete = 0; - - if ( m_state == EPapChallenge) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("TLS: function: eap_am_type_tls_peap_symbian_c::DlgComplete(): EPapChallenge\n"))); - - m_state = EPapUserNameAndPassword; - TEapExpandedType aEapType(*EapExpandedTypeTtlsPap.GetType()); - - if (iEapAuthNotifier == 0) - { - TRAPD(err, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (err) - { - eap_variable_data_c userNameUtf8( m_am_tools ); - eap_variable_data_c passwordUtf8( m_am_tools ); - - (void) m_tls_am_partner-> - complete_query_ttls_pap_username_and_password( - &userNameUtf8, &passwordUtf8, eap_status_process_general_error); - return; - } - } - - - TTtlsPapDbInfo aInDbInfo; - TRAPD(err2, ReadTtlsPapDbL(aInDbInfo)); - if (err2) - { - eap_variable_data_c userNameUtf8( m_am_tools ); - eap_variable_data_c passwordUtf8( m_am_tools ); - - (void) m_tls_am_partner-> - complete_query_ttls_pap_username_and_password( - &userNameUtf8, &passwordUtf8, eap_status_process_general_error); - return; - } - - m_notifier_data_to_user->iPasswordPromptEnabled = aInDbInfo.iUsrPwdInfo.iPasswordPromptEnabled; - - if (m_notifier_data_to_user->iPasswordPromptEnabled || - (aInDbInfo.iUsrPwdInfo.iUserName.Size() == 0 && - aInDbInfo.iUsrPwdInfo.iPassword.Size() == 0)) - { - m_notifier_data_to_user->iUsername.Zero(); - m_notifier_data_to_user->iPassword.Zero(); - - TRAPD(err3,SetTtlsPapColumnToNullL( cf_str_EAP_TLS_PEAP_ttls_pap_password_literal )); - if (err3) - { - eap_variable_data_c userNameUtf8( m_am_tools ); - eap_variable_data_c passwordUtf8( m_am_tools ); - - (void) m_tls_am_partner-> - complete_query_ttls_pap_username_and_password( - &userNameUtf8, &passwordUtf8, eap_status_process_general_error); - return; - } - - if (iEapAuthNotifier == 0) - { - TRAPD(err4, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (err4) - { - eap_variable_data_c userNameUtf8( m_am_tools ); - eap_variable_data_c passwordUtf8( m_am_tools ); - - (void) m_tls_am_partner-> - complete_query_ttls_pap_username_and_password( - &userNameUtf8, &passwordUtf8, eap_status_process_general_error); - return; - } - } - else - { - TRAPD(err5,iEapAuthNotifier->Cancel()); - if (err5) - { - eap_variable_data_c userNameUtf8( m_am_tools ); - eap_variable_data_c passwordUtf8( m_am_tools ); - - (void) m_tls_am_partner-> - complete_query_ttls_pap_username_and_password( - &userNameUtf8, &passwordUtf8, eap_status_process_general_error); - return; - } - } - - TRAPD(err6, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypePapAuthQueryDialog, m_notifier_data_to_user, aEapType)); - if (err6) - { - eap_variable_data_c userNameUtf8( m_am_tools ); - eap_variable_data_c passwordUtf8( m_am_tools ); - - (void) m_tls_am_partner-> - complete_query_ttls_pap_username_and_password( - &userNameUtf8, &passwordUtf8, eap_status_process_general_error); - return; - } - } - else - { - m_notifier_data_to_user->iUsername = aInDbInfo.iUsrPwdInfo.iUserName; - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password(): iUserName"), - m_notifier_data_to_user->iUsername.Ptr(), - m_notifier_data_to_user->iUsername.Size())); - - m_notifier_data_to_user->iPassword = aInDbInfo.iUsrPwdInfo.iPassword; - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password(): iPassword"), - m_notifier_data_to_user->iPassword.Ptr(), - m_notifier_data_to_user->iPassword.Size())); - - DlgComplete(KErrNone); - } - - } - else if ( m_state == EPapUserNameAndPassword ) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("TLS: function: eap_am_type_tls_peap_symbian_c::DlgComplete(): EPapUserNameAndPassword\n"))); - - TBuf8 userNameUtf8; - TBuf8 passwordUtf8; - userNameUtf8.Zero(); - passwordUtf8.Zero(); - - if (m_notifier_data_to_user->iUsername.Size()>0) - { - CnvUtfConverter::ConvertFromUnicodeToUtf8( userNameUtf8, m_notifier_data_to_user->iUsername ); - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL( "userNameUtf8" ), - userNameUtf8.Ptr(), - userNameUtf8.Size() ) ); - } - - if (m_notifier_data_to_user->iPassword.Size()>0) - { - CnvUtfConverter::ConvertFromUnicodeToUtf8( passwordUtf8, m_notifier_data_to_user->iPassword ); - } - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL( "passwordUtf8" ), - passwordUtf8.Ptr(), - passwordUtf8.Size() ) ); - - CompleteQueryTtlsPapUserNameAndPassword( - status, userNameUtf8, passwordUtf8 ); - - TTtlsPapDbInfo aInDbInfo; - aInDbInfo.iUsrPwdInfo.iPasswordPromptEnabled = m_notifier_data_to_user->iPasswordPromptEnabled; - aInDbInfo.iUsrPwdInfo.iUserName.Copy(userNameUtf8); - aInDbInfo.iUsrPwdInfo.iPassword.Copy(passwordUtf8); - - TRAPD(err1, WriteTtlsPapDbL( aInDbInfo)); - if (err1) - { - // continue - } - } -#ifdef USE_FAST_EAP_TYPE - else if ( m_state == EPasswordCancel - || m_state == EMasterkeyQuery - || m_state == EPasswordQuery - || m_state == EWrongPassword - || m_state == EFilePasswordQuery ) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("TLS: function: eap_am_type_tls_peap_symbian_c::DlgComplete(): else\n"))); - - m_eap_fast_completion_status = m_partner->set_timer( - this, - KHandleReadPacstoreTimerID, - &aStatus, - 0); - return; - } -#endif //#ifdef USE_FAST_EAP_TYPE - -} - -//-------------------------------------------------- - // + void eap_am_type_tls_peap_symbian_c::RunL() { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -858,17 +627,41 @@ iStatus.Int() , m_state)); #ifdef USE_FAST_EAP_TYPE + eap_status_e status(eap_status_ok); + + if (m_notifier_complete) + { + + TRAPD(err, CompleteNotifierL());// Only for the notifiers. + if (err != KErrNone) + { + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("eap_am_type_tls_peap_symbian_c::RunL LEAVE from CompleteNotifierL, Error =%d \n"), + err)); + } + + m_notifier_complete = EFalse; + } + + if ( m_state == EPasswordCancel || + m_state == EMasterkeyQuery || + m_state == EPasswordQuery || + m_state == EWrongPassword || + m_state == EFilePasswordQuery ) + { + m_eap_fast_completion_status = m_partner->set_timer( + this, + KHandleReadPacstoreTimerID, + &status, + 0); + return; + } if (m_state == ENone) { return; } - if ( m_state == EHandlingDeviceSeedQuery) - { - CompleteCreateDeviceSeedL( iStatus.Int() ); - - return; - } #endif // #ifdef USE_FAST_EAP_TYPE if (iStatus.Int() != KErrNone) @@ -908,11 +701,10 @@ 0, eap_status_process_general_error); return; - default: return; } - } // (iStatus.Int() != KErrNone) + } if (m_state == EHandlingIdentityQuery || m_state == EHandlingChainQuery) @@ -931,7 +723,7 @@ if(m_allowed_user_certs.Count() > 0) { - m_own_certificate_info = *m_allowed_user_certs[index]; + m_own_certificate_info = m_allowed_user_certs[index]; } TBool retrieve_chain; @@ -950,7 +742,7 @@ if(allowed_user_cert_count > 0) { - TRAP(err, m_cert_if->ReadCertificateL(*m_allowed_user_certs[index], retrieve_chain)); + TRAP(err, m_cert_if->ReadCertificateL(m_allowed_user_certs[index], retrieve_chain)); } if (err != KErrNone || allowed_user_cert_count <= 0) { @@ -990,124 +782,102 @@ } } } + else if (m_state == EHandlingManualIdentityQuery) + { + // Convert to 8-bit text + TBuf8 buf; + buf.Copy(m_identity_info->iUsername); + + eap_status_e status = m_manual_username.set_copy_of_buffer( + buf.Ptr(), + buf.Size()); + + if (status != eap_status_ok) + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("ERROR: EAP-TLS: EHandlingIdentityQuery: Cannot read manual username.\n"))); + + get_am_partner()->complete_eap_identity_query( + 0, // 0 because identity query failed + &m_receive_network_id, + m_eap_identifier, + status, + false, + 0, + false, + 0); + } + + buf.Copy(m_identity_info->iRealm); + status = m_manual_realm.set_copy_of_buffer( + buf.Ptr(), + buf.Size()); + + if (status != eap_status_ok) + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("ERROR: EAP-TLS: EHandlingIdentityQuery: Cannot read manual realm.\n"))); + + get_am_partner()->complete_eap_identity_query( + 0, // 0 because identity query failed + &m_receive_network_id, + m_eap_identifier, + status, + false, + 0, + false, + 0); + } + + // This must be true + m_use_manual_realm = true; + + if (m_identity_info->iUseManualUsername) + { + m_use_manual_username = true; + } + else + { + m_use_manual_username = false; + } + + + get_am_partner()->complete_eap_identity_query( + 0, // 0 because identity query failed + &m_receive_network_id, + m_eap_identifier, + eap_status_ok, + m_use_manual_username, + &m_manual_username, + m_use_manual_realm, + &m_manual_realm); + + TRAPD(err, SaveManualIdentityL( + m_identity_info->iUseManualUsername, + m_identity_info->iUsername, + ETrue, + m_identity_info->iRealm)); + + (void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(err)); + + // Ignore return value on purpose. It's not fatal if saving fails. + + delete m_identity_info; + m_identity_info = 0; + + } EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } //-------------------------------------------------- -#ifdef USE_FAST_EAP_TYPE -// -// --------------------------------------------------------- -// eap_am_type_tls_peap_symbian_c::CreateDeviceSeedAsync() -// --------------------------------------------------------- + // -eap_status_e eap_am_type_tls_peap_symbian_c::CreateDeviceSeedAsync() -{ - EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); - - EAP_TRACE_DEBUG_SYMBIAN( - (_L("eap_am_type_tls_peap_symbian_c::CreateDeviceSeedAsync-Start ActiveStatus=%d"), - IsActive())); - - if ( IsActive() ) - { - EAP_TRACE_DEBUG_SYMBIAN( - (_L("CreateDeviceSeedAsync: Already active when tried to create device seed"))); - - return eap_status_device_busy; - } - - eap_status_e status(eap_status_ok); - - m_state = EHandlingDeviceSeedQuery; - - // Create MMETEL connection. - TRAPD(error, CreateMMETelConnectionL()); - if(error !=KErrNone) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - - iPhone.GetPhoneId( iStatus, iDeviceId ); - - SetActive(); - return status; -} // eap_am_type_tls_peap_symbian_c::CreateDeviceSeedAsynch() - -//-------------------------------------------------- - -void eap_am_type_tls_peap_symbian_c::CompleteCreateDeviceSeedL( TInt aStatus ) -{ - EAP_TRACE_DEBUG_SYMBIAN( - (_L("eap_am_type_tls_peap_symbian_c::CompleteCreateDeviceSeedL aStatus=%d"), - iStatus.Int())); - if ( aStatus != KErrNone ) - { - EAP_TRACE_DEBUG_SYMBIAN( - (_L("eap_am_type_tls_peap_symbian_c::CompleteCreateDeviceSeedL ERROR: aStatus=%d"), - iStatus.Int())); - } - EAP_TRACE_DATA_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Manufacturer"), - iDeviceId.iManufacturer.Ptr(), - iDeviceId.iManufacturer.Size())); - EAP_TRACE_DATA_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Model"), - iDeviceId.iModel.Ptr(), - iDeviceId.iModel.Size())); - EAP_TRACE_DATA_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Revision"), - iDeviceId.iRevision.Ptr(), - iDeviceId.iRevision.Size())); - EAP_TRACE_DATA_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("SerialNumber"), - iDeviceId.iSerialNumber.Ptr(), - iDeviceId.iSerialNumber.Size())); - - // Combine all the above four items. - TBuf deviceSeed16; - deviceSeed16 += iDeviceId.iManufacturer; - deviceSeed16 += iDeviceId.iModel; - deviceSeed16 += iDeviceId.iSerialNumber; - - TBuf8 deviceSeed8; - deviceSeed8.Copy(deviceSeed16); - - if ( iPacStoreDeviceSeed == NULL ) - { - iPacStoreDeviceSeed = new eap_variable_data_c(m_am_tools); - if ( iPacStoreDeviceSeed == NULL ) - { - User::Leave( KErrNoMemory ); - } - } - -#if defined(USE_EAP_CONFIGURATION_TO_SKIP_USER_INTERACTIONS) - const char DUMMY_SEED[]="empty"; - - - if (m_skip_user_interactions == true) - { - iPacStoreDeviceSeed->set_copy_of_buffer(DUMMY_SEED, sizeof(DUMMY_SEED)); - } - else -#endif //#if defined(USE_EAP_CONFIGURATION_TO_SKIP_USER_INTERACTIONS) - { - - if ( iPacStoreDeviceSeed != NULL ) - { - if( deviceSeed8.Size() > 0) - { - iPacStoreDeviceSeed->set_copy_of_buffer( - deviceSeed8.Ptr(), - deviceSeed8.Size()); - } - } - } - DisconnectMMETel(); - - ContinueInitializePacStore(); - -} // eap_am_type_tls_peap_symbian_c::CompleteCreateDeviceSeedL() - -#endif -//-------------------------------------------------- + void eap_am_type_tls_peap_symbian_c::DoCancel() { @@ -1119,12 +889,18 @@ { m_cert_if->Cancel(); } - if (iEapAuthNotifier != 0) - { - iEapAuthNotifier->Cancel(); - } - - + + if ( iEapTtlsPapActive ) + { + if ( iEapTtlsPapActive->IsActive() ) + { + EAP_TRACE_DEBUG_SYMBIAN( + ( _L( " eap_am_type_tls_peap_symbian_c::DoCancel() \ + Cancelling iEapTtlsPapActive." ) ) ); + iEapTtlsPapActive->Cancel(); + } + } + #if defined(USE_FAST_EAP_TYPE) m_partner->cancel_timer( @@ -1143,6 +919,23 @@ this, KHandleReadPacstoreTimerID); + if( m_is_notifier_connected ) + { + EAP_TRACE_DEBUG_SYMBIAN( + (_L(" eap_am_type_tls_peap_symbian_c::DoCancel - calling m_notifier.CancelNotifier"))); + if(IsActive()) + { + TInt error = m_notifier.CancelNotifier(KEapFastNotifierUid); + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::DoCancel:CancelNotifier=%d"), + error)); + } + + m_notifier.Close(); // Call close only if it is connected. + + m_is_notifier_connected = false; + + } // End: if( m_is_notifier_connected ) #endif // #if defined(USE_FAST_EAP_TYPE) @@ -1152,6 +945,7 @@ //-------------------------------------------------- // + eap_status_e eap_am_type_tls_peap_symbian_c::SaveManualIdentityL( const TBool use_manual_username, TDesC& manual_username, @@ -1161,11 +955,11 @@ EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); // Validate length. - if(manual_username.Length() > KMaxUsernameLengthInDB - || manual_realm.Length() > KMaxRealmLengthInDB) + if(manual_username.Length() > KMaxManualUsernameLengthInDB + || manual_realm.Length() > KMaxManualRealmLengthInDB) { // Username or realm too long. Can not be stored in DB. - EAP_TRACE_DEBUG_SYMBIAN((_L("eap_am_type_tls_peap_symbian_c::SaveManualIdentityL: Too long username or realm. Length: manual_username=%d, manual_realm=%d\n"), + EAP_TRACE_DEBUG_SYMBIAN((_L("eap_am_type_tls_peap_symbian_c::SaveManualIdentityL: Too long username or realm. Length: UN=%d, Realm=%d\n"), manual_username.Length(), manual_realm.Length())); User::Leave(KErrArgument); @@ -1176,19 +970,10 @@ RDbView view; - _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d"); - - sqlStatement.Format( - KSQL, - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); + + sqlStatement.Format(KSQL, &m_db_table_name, + &KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited)); CleanupClosePushL(view); @@ -1266,10 +1051,9 @@ // void eap_am_type_tls_peap_symbian_c::SendErrorNotification( const eap_status_e aError ) -{ + { send_error_notification( aError ); -} - + } //-------------------------------------------------- #if defined(USE_FAST_EAP_TYPE) @@ -1284,15 +1068,19 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } + + + // --------------------------------------------------------- // eap_am_type_tls_peap_symbian_c::IsProvisioningMode() // --------------------------------------------------------- // TBool eap_am_type_tls_peap_symbian_c::IsProvisioningMode() -{ + { return ( m_provisioning_mode == eap_fast_completion_operation_server_authenticated_provisioning_mode ) ? ETrue : EFalse; -} + } + // --------------------------------------------------------- // eap_am_type_tls_peap_symbian_c::CompleteQueryUserPermissionForAid() @@ -1301,7 +1089,7 @@ eap_status_e eap_am_type_tls_peap_symbian_c::CompleteQueryUserPermissionForAid( EEapFastNotifierUserAction aUserAction ) -{ + { EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::CompleteQueryUserPermissionForAid"))); if ( aUserAction == EEapFastNotifierUserActionOk ) @@ -1325,14 +1113,15 @@ m_pending_operation ); } return m_eap_fast_completion_status; -} + } + #endif //#if defined(USE_FAST_EAP_TYPE) //-------------------------------------------------- // -EAP_FUNC_EXPORT void eap_am_type_tls_peap_symbian_c::notify_configuration_error( +void eap_am_type_tls_peap_symbian_c::notify_configuration_error( const eap_status_e configuration_status) { if (m_is_client == true) @@ -1409,7 +1198,7 @@ { EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, ( - EAPL("eap_am_type_tls_peap_symbian_c::configure(): ReadCertRowsToArrayL, User cert, Error =%d \n"), + EAPL("eap_am_type_tls_peap_symbian_c::configure - ReadCertRowsToArrayL, User cert, Error =%d \n"), err)); // Convert the leave error code to EAPOL stack error code. @@ -1435,7 +1224,7 @@ { EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, ( - EAPL("eap_am_type_tls_peap_symbian_c::configure(): ReadCertRowsToArrayL, CA cert, Error =%d \n"), + EAPL("eap_am_type_tls_peap_symbian_c::configure - ReadCertRowsToArrayL, CA cert, Error =%d \n"), err)); // Convert the leave error code to EAPOL stack error code. @@ -1462,7 +1251,7 @@ { EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, ( - EAPL("eap_am_type_tls_peap_symbian_c::configure(): ReadUintRowsToArrayL, CipherSuit, Error =%d \n"), + EAPL("eap_am_type_tls_peap_symbian_c::configure - ReadUintRowsToArrayL, CipherSuit, Error =%d \n"), err)); // Convert the leave error code to EAPOL stack error code. @@ -1485,6 +1274,8 @@ ) { +#ifdef USE_EAP_EXPANDED_TYPES + TRAPD(err, EapTlsPeapUtils::GetTunnelingExpandedEapDataL( m_database, m_am_tools, @@ -1494,12 +1285,24 @@ m_index, m_tunneling_type, m_current_eap_type)); + +#else + TRAPD(err, EapTlsPeapUtils::GetEapDataL( + m_database, + m_am_tools, + m_iap_eap_array, + m_index_type, + m_index, + m_tunneling_type, + m_current_eap_type)); + +#endif //#ifdef USE_EAP_EXPANDED_TYPES if (err != KErrNone) { EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, ( - EAPL("eap_am_type_tls_peap_symbian_c::configure(): GetEapDataL or GetTunnelingExpandedEapDataL, Error =%d \n"), + EAPL("eap_am_type_tls_peap_symbian_c::configure - GetEapDataL or GetTunnelingExpandedEapDataL, Error =%d \n"), err)); // Convert the leave error code to EAPOL stack error code. @@ -1564,28 +1367,6 @@ //---------------------------------------------------------- - if (m_is_client == true) - { - eap_variable_data_c use_automatic_ca_certificate(m_am_tools); - - eap_status_e status = type_configure_read( - cf_str_EAP_TLS_PEAP_use_automatic_ca_certificate.get_field(), - &use_automatic_ca_certificate); - if (status == eap_status_ok - && use_automatic_ca_certificate.get_is_valid_data() == true) - { - u32_t *use_automatic_ca_certificate_flag = reinterpret_cast( - use_automatic_ca_certificate.get_data(sizeof(u32_t))); - if (use_automatic_ca_certificate_flag != 0 - && *use_automatic_ca_certificate_flag != 0) - { - m_use_automatic_ca_certificate = true; - } - } - } - - //---------------------------------------------------------- - // This is only for server { eap_variable_data_c cipher_suite(m_am_tools); @@ -1607,6 +1388,75 @@ //---------------------------------------------------------- +#ifndef USE_EAP_EXPANDED_TYPES // This is not needed it seems. Still keeping it for normal EAP types. + // Intention of this is to get tunneled EAP types, but m_tunneled_type is not used + // anywhere other than this place. + + if (m_current_eap_type == eap_type_peap +#if defined(USE_TTLS_EAP_TYPE) + || m_current_eap_type == eap_type_ttls +#endif // #if defined(USE_TTLS_EAP_TYPE) + +#if defined(USE_FAST_EAP_TYPE) + || m_current_eap_type == eap_type_fast +#endif + + + ) + { + eap_variable_data_c tunneled_type(m_am_tools); + + eap_status_e status = type_configure_read( + cf_str_PEAP_tunneled_eap_type_hex_data.get_field(), + &tunneled_type); + if (status == eap_status_illegal_configure_type) + { + status = m_partner->read_configure( + cf_str_PEAP_tunneled_eap_type_u32_t.get_field(), + &tunneled_type); + } + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + else if (tunneled_type.get_is_valid_data() == true + && tunneled_type.get_data_length() == sizeof(u32_t) + && tunneled_type.get_data(sizeof(u32_t)) != 0) + { + m_tunneled_type = static_cast( + *reinterpret_cast(tunneled_type.get_data(sizeof(u32_t)))); + } + else if (tunneled_type.get_data_length() + == eap_expanded_type_c::get_eap_expanded_type_size() + && tunneled_type.get_data(tunneled_type.get_data_length()) != 0) + { + eap_expanded_type_c eap_type(eap_type_none); + + status = eap_type.set_expanded_type_data( + m_am_tools, + &tunneled_type); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + + status = eap_type.get_type_data( + m_am_tools, + &m_tunneled_type); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + } + +#endif //#ifndef USE_EAP_EXPANDED_TYPES + + //---------------------------------------------------------- + { eap_variable_data_c use_manual_username(m_am_tools); @@ -1682,7 +1532,7 @@ { eap_variable_data_c use_session_ticket(m_am_tools); - eap_status_e status = type_configure_read( + eap_status_e status = m_partner->read_configure( cf_str_EAP_TLS_PEAP_use_session_ticket.get_field(), &use_session_ticket); if (status == eap_status_ok @@ -1753,48 +1603,60 @@ eap_status_e status(eap_status_ok); - if (m_current_eap_type == eap_type_tls) - { - status = type_configure_read( - cf_str_EAP_TLS_max_session_validity_time.get_field(), - &sessionTimeFromFile); - } - else if (m_current_eap_type == eap_type_peap) - { - status = type_configure_read( - cf_str_EAP_PEAP_max_session_validity_time.get_field(), - &sessionTimeFromFile); - } - else if (m_current_eap_type == eap_type_ttls) - { - status = type_configure_read( - cf_str_EAP_TTLS_max_session_validity_time.get_field(), - &sessionTimeFromFile); - } - else if (m_current_eap_type == eap_expanded_type_ttls_plain_pap.get_type()) - { + switch (m_current_eap_vendor_type) + { + case eap_type_tls: + { + status = m_partner->read_configure( + cf_str_EAP_TLS_max_session_validity_time.get_field(), + &sessionTimeFromFile); + } + break; + + case eap_type_peap: + { + status = m_partner->read_configure( + cf_str_EAP_PEAP_max_session_validity_time.get_field(), + &sessionTimeFromFile); + } + break; + + case eap_type_ttls: + { + status = m_partner->read_configure( + cf_str_EAP_TTLS_max_session_validity_time.get_field(), + &sessionTimeFromFile); + } + break; + + case eap_type_ttls_plain_pap: + { // read PAP session time - status = type_configure_read( + status = m_partner->read_configure( cf_str_EAP_TLS_PEAP_ttls_pap_max_session_validity_time.get_field(), &sessionTimeFromFile ); - } + } + break; + #if defined(USE_FAST_EAP_TYPE) - else if (m_current_eap_type == eap_type_fast) - { - status = type_configure_read( - cf_str_EAP_FAST_max_session_validity_time.get_field(), - &sessionTimeFromFile); - } + case eap_type_fast: + { + status = m_partner->read_configure( + cf_str_EAP_FAST_max_session_validity_time.get_field(), + &sessionTimeFromFile); + } + break; #endif - else - { - // Should never happen - EAP_TRACE_ERROR(m_am_tools, - TRACE_FLAGS_DEFAULT, ( - EAPL("eap_am_type_tls_peap_symbian_c::configure(): Unsupported EAP type, m_current_eap_vendor_type=0xfe%06x%08x\n"), - m_current_eap_type.get_vendor_id(), - m_current_eap_type.get_vendor_type())); - } + + default: + { + // Should never happen + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("eap_am_type_tls_peap_symbian_c::configure - Unsupported EAP type, m_current_eap_vendor_type=%d \n"), + m_current_eap_vendor_type)); + } + } // set m_max_session_time if (status == eap_status_ok @@ -1895,130 +1757,88 @@ status = eap_status_ok; - if (m_use_automatic_ca_certificate == false) - { - if (m_allowed_ca_certs.Count() == 0) - { - // needed because of nonworking wrong settings + if (m_allowed_ca_certs.Count() == 0) + { + // needed because of nonworking wrong settings #if defined(USE_FAST_EAP_TYPE) - if(m_current_eap_type == eap_type_fast - && m_serv_auth_prov_mode != true) - { - // In the case of EAP-FAST, CA cert is must if m_serv_auth_prov_mode is TRUE. - status = eap_status_ok; - - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): No CA certificate but exception for EAP-FAST as m_serv_auth_prov_mode is FALSE and for all m_serv_unauth_prov_mode \n"))); - } - else + if(m_current_eap_type == eap_type_fast && + m_serv_auth_prov_mode != true) + { + // In the case of EAP-FAST, CA cert is must if m_serv_auth_prov_mode is TRUE. + status = eap_status_ok; + + EAP_TRACE_DEBUG(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("eap_am_type_tls_peap_symbian_c::configure - No CA certificate but exception for EAP-FAST as m_serv_auth_prov_mode is FALSE and for all m_serv_unauth_prov_mode \n"))); + } + else #endif // #if defined(USE_FAST_EAP_TYPE) - { - EAP_TRACE_ERROR( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): Error - No CA certificate\n"))); - - // No root certificate selected. Cannot continue. - status = eap_status_ca_certificate_unknown; - send_error_notification(status); - } - } - else - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): %d CA certificates selected.\n"), - m_allowed_ca_certs.Count())); - } - } - else - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): %d CA certificate selected in automatic CA selection.\n"), - m_allowed_ca_certs.Count())); - } - - + { + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("eap_am_type_tls_peap_symbian_c::configure - Error - No CA certificate\n"))); + + // No root certificate selected. Cannot continue. + status = eap_status_ca_certificate_unknown; + send_error_notification(status); + } + } + if(m_allowed_user_certs.Count() == 0) - { + { #if defined(USE_FAST_EAP_TYPE) if(m_current_eap_type == eap_type_fast) - { + { m_use_manual_realm = true; if (m_use_manual_username == false) - { + { TRAPD(err, status=ConfigureL()); if (err != KErrNone) - { + { EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL("eap_am_type_tls_peap_symbian_c::configure LEAVE from ConfigureL, Error =%d \n"), err)); + } } } - } #endif // #if defined(USE_FAST_EAP_TYPE) - } - else - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): %d user certificates selected.\n"), - m_allowed_user_certs.Count())); - } - - + } if (m_tls_peap_server_authenticates_client_policy_flag == true && m_allowed_user_certs.Count() == 0) { #if defined(USE_FAST_EAP_TYPE) - if (m_current_eap_type == eap_type_fast) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): No USER certificate, but in eap_fast it's not mandatory\n"))); - } - else + if (m_current_eap_type == eap_type_fast) + { + EAP_TRACE_DEBUG(m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("eap_am_type_tls_peap_symbian_c::configure - No USER certificate, but in eap_fast it's not mandatory\n"))); + + } + else #endif // #if defined(USE_FAST_EAP_TYPE) { - EAP_TRACE_ERROR( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): Error - No USER certificate\n"))); - - // No user certificate selected. Cannot continue. - status = eap_status_user_certificate_unknown; - send_error_notification(status); + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("eap_am_type_tls_peap_symbian_c::configure - Error - No USER certificate\n"))); + + // No user certificate selected. Cannot continue. + status = eap_status_user_certificate_unknown; + send_error_notification(status); } } if (m_allowed_cipher_suites.Count() == 0) { - EAP_TRACE_ERROR( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): Error - No cipher suit\n"))); + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("eap_am_type_tls_peap_symbian_c::configure - Error - No cipher suit\n"))); // No sipher suites selected. Cannot continue. status = eap_status_illegal_cipher_suite; send_error_notification(status); } - else - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): %d cipher suites selected.\n"), - m_allowed_cipher_suites.Count())); - } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2029,21 +1849,19 @@ m_configured = true; - EAP_TRACE_DEBUG( - m_am_tools, + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::configure(): END \n"))); + (EAPL("eap_am_type_tls_peap_symbian_c::configure - END \n"))); return EAP_STATUS_RETURN(m_am_tools, status); } //-------------------------------------------------- - #if defined(USE_FAST_EAP_TYPE) eap_status_e eap_am_type_tls_peap_symbian_c::ConfigureL() -{ + { eap_status_e status(eap_status_ok); @@ -2052,8 +1870,7 @@ TempUserName.Copy(KTempUserName); - HBufC8* buf = HBufC8::NewLC(KMaxNotifItemLength); - + HBufC8* buf = HBufC8::NewLC(KIdentityFieldLength); TPtr8 bufPtr = buf->Des(); HBufC8* tempUserBuf8 = HBufC8::NewLC(KMacAddressLength); @@ -2133,13 +1950,13 @@ m_use_manual_username = true; return status; -} + } #endif // #if defined(USE_FAST_EAP_TYPE) //-------------------------------------------------- -EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::reset() +eap_status_e eap_am_type_tls_peap_symbian_c::reset() { return EAP_STATUS_RETURN(m_am_tools, eap_status_ok); @@ -2173,8 +1990,6 @@ return EAP_STATUS_RETURN(m_am_tools, status); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::authentication_finishedL( const bool true_when_successful, const tls_session_type_e tls_session_type) @@ -2280,7 +2095,6 @@ // Get the own certificate only if it has already been retrieved if (m_own_certificate == 0) { - // Get the matching certificates. This function call is completed asyncronously by complete_get_matching_certificates() function call. TRAPD(err, m_cert_if->GetMatchingCertificatesL( m_allowed_user_certs, EFalse, @@ -2317,7 +2131,6 @@ return EAP_STATUS_RETURN(m_am_tools, status); } -//-------------------------------------------------- eap_status_e eap_am_type_tls_peap_symbian_c::complete_read_own_certificate( const RPointerArray& aCertChain, eap_status_e aStatus) @@ -2580,8 +2393,6 @@ return EAP_STATUS_RETURN(m_am_tools, status); } -//-------------------------------------------------- - eap_status_e eap_am_type_tls_peap_symbian_c::complete_read_ca_certificate( const RPointerArray& aCertChain, eap_status_e aStatus) { @@ -2771,8 +2582,6 @@ return EAP_STATUS_RETURN(m_am_tools, eap_status_ok); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::get_identities_from_distinguished_namesL( const CX509Certificate * const aCertificate, eap_variable_data_c * const aSubjectIdentity, @@ -2876,8 +2685,6 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::get_identity_from_alternative_nameL( const CX509Certificate * const aCertificate, eap_variable_data_c * const aIdentity) @@ -3079,6 +2886,9 @@ //-------------------------------------------------- // +//-------------------------------------------------- + +// EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::timer_expired( const u32_t id, void *data) { @@ -3349,9 +3159,6 @@ TRACE_FLAGS_DEFAULT, (EAPL("eap_am_type_tls_peap_symbian_c::type_configure_read - Start\n"))); - EAP_TRACE_RETURN_STRING(m_am_tools, "returns: eap_am_type_tls_peap_symbian_c::type_configure_read()"); - - if (m_current_eap_type == eap_type_peap #if defined(USE_TTLS_EAP_TYPE) || m_current_eap_type == eap_type_ttls @@ -3360,7 +3167,7 @@ || m_current_eap_type == eap_type_fast #endif - || m_current_eap_type == eap_expanded_type_ttls_plain_pap.get_type() + || m_current_eap_type == eap_type_ttls_plain_pap ) { @@ -3423,6 +3230,8 @@ { // We are asked to return cf_str_PEAP_tunneled_eap_type_hex_data +#ifdef USE_EAP_EXPANDED_TYPES + // We need to return here the next ENABLED tunneled EAP type we should try. if (0 == m_enabled_tunneling_exp_eap_array.Count()) @@ -3440,35 +3249,108 @@ { // Get the first enabled EAP type (tunneling). + TBuf8 tmpExpEAP(m_enabled_tunneling_exp_eap_array[0]->iExpandedEAPType); //first item. + EAP_TRACE_DATA_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("type_configure_read:Enabled expanded tunneling EAP type:"), - m_enabled_tunneling_exp_eap_array[0]->GetValue().Ptr(), - m_enabled_tunneling_exp_eap_array[0]->GetValue().Length())); - - status = data->set_copy_of_buffer( - m_enabled_tunneling_exp_eap_array[0]->GetValue().Ptr(), - m_enabled_tunneling_exp_eap_array[0]->GetValue().Length()); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); - } + tmpExpEAP.Ptr(), + tmpExpEAP.Size())); + + status = data->set_copy_of_buffer(tmpExpEAP.Ptr(), KExpandedEAPTypeSize); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } EAP_TRACE_DATA_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("EAP-PEAP or EAP-TTLS: Trying encapsulated EAP type:"), - m_enabled_tunneling_exp_eap_array[0]->GetValue().Ptr(), - m_enabled_tunneling_exp_eap_array[0]->GetValue().Length())); - } - + tmpExpEAP.Ptr(), + tmpExpEAP.Size())); + } + +#else // For normal EAP types. + + // We need to return here the next tunneled EAP type we should try. + TInt i; + + for (i = 0; i < m_iap_eap_array.Count(); i++) + { + // Find the first enabled EAP type (highest priority) + TEap *eapType = m_iap_eap_array[i]; + if (eapType->Enabled == 1) + { + // Convert the string to integer + TLex8 tmp(eapType->UID); + TInt val(0); + tmp.Val(val); + status = data->set_copy_of_buffer(reinterpret_cast(&val), sizeof(TUint)); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("EAP-PEAP: Trying encapsulated EAP type: %d.\n"), val)); + break; + } + } + if (i == m_iap_eap_array.Count()) + { + // Not found + if (m_is_client) + { + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("ERROR: No configured encapsulated EAP types.\n"))); + } + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_illegal_configure_field); + } + +#endif //#ifdef USE_EAP_EXPANDED_TYPES + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return EAP_STATUS_RETURN(m_am_tools, status); } // End of if (!wanted_field.compare(&type_field)) +#if !defined(USE_EAP_EXPANDED_TYPES) + + // cf_str_PEAP_accepted_tunneled_client_types_hex_data is available only for expaned EAP types. + // cf_str_PEAP_accepted_tunneled_client_types_u32array should be used otherwise. + // So for cf_str_PEAP_accepted_tunneled_client_types_hex_data and eap_configure_type_hex_data + // we should return eap_status_illegal_configure_field. + // This is needed only if USE_EAP_EXPANDED_TYPES is not defined. Otherwise the field + // cf_str_PEAP_accepted_tunneled_client_types_hex_data can be read from the database using + // type_configure_readL (let it fall through). + + eap_variable_data_c tunneled_type_field(m_am_tools); + + status = tunneled_type_field.set_buffer( + cf_str_PEAP_accepted_tunneled_client_types_hex_data.get_field()->get_field(), + cf_str_PEAP_accepted_tunneled_client_types_hex_data.get_field()->get_field_length(), + false, + false); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + + if (!wanted_field.compare(&tunneled_type_field)) + { + // Check if the type is eap_configure_type_hex_data. + + if( eap_configure_type_hex_data == field->get_type() ) + { + // This field is used only for exapanded EAP types. + return EAP_STATUS_RETURN(m_am_tools, eap_status_illegal_configure_type); + } + } + +#else // For expanded EAP type. // cf_str_PEAP_accepted_tunneled_client_types_u32array is available only for normal EAP types. // So for cf_str_PEAP_accepted_tunneled_client_types_u32array and eap_configure_type_u32array @@ -3497,28 +3379,34 @@ return EAP_STATUS_RETURN(m_am_tools, eap_status_illegal_configure_type); } } + +#endif // End of #if !defined(USE_EAP_EXPANDED_TYPES) + } // End of if (m_current_eap_type == eap_type_peap - + TRAPD(err, type_configure_readL( field->get_field(), field->get_field_length(), data)); if (err != KErrNone) { - status = m_partner->read_configure(field, data); + status = m_am_tools->convert_am_error_to_eapol_error(err); } m_am_tools->trace_configuration( status, field, data); + + EAP_TRACE_DEBUG(m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("eap_am_type_tls_peap_symbian_c::type_configure_read - End\n"))); EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return EAP_STATUS_RETURN(m_am_tools, status); } //-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::type_configure_readL( eap_config_string field, const u32_t field_length, @@ -3549,7 +3437,7 @@ HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); TPtr sqlStatement = buf->Des(); - _LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d"); + _LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); #if defined(USE_FAST_EAP_TYPE) @@ -3559,62 +3447,44 @@ if(m_current_eap_type == eap_type_fast && ((unicodeString.Compare(cf_str_EAP_FAST_allow_server_authenticated_provisioning_mode_literal) == 0) || (unicodeString.Compare(cf_str_EAP_FAST_allow_server_unauthenticated_provisioning_mode_ADHP_literal) == 0) - || (unicodeString.Compare(KFASTWarnADHPNoPAC) == 0) - || (unicodeString.Compare(KFASTWarnADHPNoMatchingPAC) == 0) - || (unicodeString.Compare(KFASTWarnNotDefaultServer) == 0) + || (unicodeString.Compare(cf_str_EAP_FAST_warn_ADHP_no_PAC_literal) == 0) + || (unicodeString.Compare(cf_str_EAP_FAST_warn_ADHP_no_matching_PAC_literal) == 0) + || (unicodeString.Compare(cf_str_EAP_FAST_warn_ADHP_not_default_server_literal) == 0) || (unicodeString.Compare(KFASTPACGroupImportReferenceCollection) == 0) || (unicodeString.Compare(KFASTPACGroupDBReferenceCollection) == 0))) - { + { + if (unicodeString.Compare(cf_str_EAP_FAST_warn_ADHP_no_matching_PAC_literal) == 0) + { + unicodeString.Copy(KFASTWarnADHPNoMatchingPAC); + } + if (unicodeString.Compare(cf_str_EAP_FAST_warn_ADHP_no_PAC_literal) == 0) + { + unicodeString.Copy(KFASTWarnADHPNoPAC); + } + if (unicodeString.Compare(cf_str_EAP_FAST_warn_ADHP_not_default_server_literal) == 0) + { + unicodeString.Copy(KFASTWarnNotDefaultServer); + } EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_am_type_tls_peap_symbian_c::type_configure_readL This field will be read from EAP-FAST's special table\n"))); - sqlStatement.Format( - KSQLQueryRow, - &unicodeString, - &m_db_fast_special_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); - } + sqlStatement.Format(KSQLQueryRow, &unicodeString, &m_db_fast_special_table_name, + &KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); + } else - { - sqlStatement.Format( - KSQLQueryRow, - &unicodeString, - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); - } + { + sqlStatement.Format(KSQLQueryRow, &unicodeString, &m_db_table_name, + &KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); + } #else - sqlStatement.Format( - KSQLQueryRow, - &unicodeString, - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + sqlStatement.Format(KSQLQueryRow, &unicodeString, &m_db_table_name, + &KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); #endif // End: #if defined(USE_FAST_EAP_TYPE) - + RDbView view; User::LeaveIfError(view.Prepare(m_database, TDbQuery(sqlStatement), TDbWindow::EUnlimited)); CleanupClosePushL(view); @@ -3690,10 +3560,10 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } - //-------------------------------------------------- // + EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::type_configure_write( const eap_configuration_field_c * const field, eap_variable_data_c * const data) @@ -3730,21 +3600,9 @@ HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); TPtr sqlStatement = buf->Des(); - _LIT(KSQLInsert, "SELECT %s FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d"); - - sqlStatement.Format( - KSQLInsert, - field_name.PtrZ(), - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); - + _LIT(KSQLInsert, "SELECT %s FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); + sqlStatement.Format(KSQLInsert, field_name.PtrZ(), &m_db_table_name, + &KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); // Evaluate view RDbView view; User::LeaveIfError(view.Prepare(m_database,TDbQuery(sqlStatement), TDbWindow::EUnlimited)); @@ -3772,8 +3630,6 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::WriteIntParamL( eap_config_string field, const u32_t field_length, @@ -3792,20 +3648,9 @@ HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); TPtr sqlStatement = buf->Des(); - _LIT(KSQLInsert, "SELECT %s FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d"); - - sqlStatement.Format( - KSQLInsert, - field_name.PtrZ(), - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + _LIT(KSQLInsert, "SELECT %s FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); + sqlStatement.Format(KSQLInsert, field_name.PtrZ(), &m_db_table_name, + &KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); // Evaluate view RDbView view; @@ -3833,8 +3678,6 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::WriteIntParamL( eap_config_string field, const u32_t field_length, @@ -3853,20 +3696,9 @@ HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); TPtr sqlStatement = buf->Des(); - _LIT(KSQLInsert, "SELECT %s FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d"); - - sqlStatement.Format( - KSQLInsert, - field_name.PtrZ(), - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + _LIT(KSQLInsert, "SELECT %s FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); + sqlStatement.Format(KSQLInsert, field_name.PtrZ(), &m_db_table_name, + &KServiceType, m_index_type, &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); // Evaluate view RDbView view; @@ -3956,62 +3788,6 @@ //-------------------------------------------------- -eap_status_e eap_am_type_tls_peap_symbian_c::select_cipher_suite( - const bool select_all_cipher_suites, - const tls_cipher_suites_e test_cipher_suite, - const TAlgorithmId testcertAlgorithm, - const TAlgorithmId certAlgorithm, - eap_array_c * cipher_suites) -{ - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::select_cipher_suite(), select_all_cipher_suites=%d, test_cipher_suite=%d, testcertAlgorithm=%d, certAlgorithm=%d\n"), - select_all_cipher_suites, - test_cipher_suite, - testcertAlgorithm, - certAlgorithm)); - - eap_status_e status(eap_status_ok); - - // Cipher suite must be allowed AND the algorithm must match the certificates algorithm. - // Also select_all_cipher_suites can be used to add all cipher suites to the list. - - TInt found = m_allowed_cipher_suites.Find(test_cipher_suite); - - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::select_cipher_suite(), found=%d, cipher suite=%d, KErrNotFound=%d\n"), - found, - test_cipher_suite, - KErrNotFound)); - - if (found != KErrNotFound - && (select_all_cipher_suites == true - || testcertAlgorithm == certAlgorithm)) - { - u16_t *tmp_object = new u16_t; - if (tmp_object == 0) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); - } - *tmp_object = eap_htons(test_cipher_suite); - - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::select_cipher_suite(), adds cipher suite=%d\n"), - test_cipher_suite)); - - status = cipher_suites->add_object(tmp_object, true); - } - - return EAP_STATUS_RETURN(m_am_tools, status); -} - -//-------------------------------------------------- EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::query_cipher_suites_and_previous_session() { @@ -4024,18 +3800,18 @@ EAP_ASSERT_ALWAYS(m_is_client == true); eap_status_e status(eap_status_process_general_error); - + TAlgorithmId certAlgorithm(ERSA); bool select_all_cipher_suites = false; - + eap_variable_data_c session_id(m_am_tools); eap_variable_data_c master_secret(m_am_tools); tls_cipher_suites_e used_cipher_suite(tls_cipher_suites_TLS_NULL_WITH_NULL_NULL); tls_session_type_e tls_session_type(tls_session_type_full_authentication); eap_array_c cipher_suites(m_am_tools); - + #if defined(USE_FAST_EAP_TYPE) if(m_current_eap_type == eap_type_fast && @@ -4081,8 +3857,7 @@ EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("query_cipher_suites_and_previous_session(): No user or CA certificate. Read CA certificate. m_allowed_ca_certs.Count()=%d\n"), - m_allowed_ca_certs.Count())); + (EAPL("query_cipher_suites_and_previous_session(): No user or CA certificate. Read CA certificate.\n"))); if (m_allowed_ca_certs.Count() != 0) { @@ -4101,7 +3876,7 @@ { m_state = EHandlingCipherSuiteQuery; - TRAPD(err, m_cert_if->ReadCACertificateL(*m_allowed_ca_certs[0])); + TRAPD(err, m_cert_if->ReadCACertificateL(m_allowed_ca_certs[0])); if (err != KErrNone) { // Error occurred. Just select all cipher suites. @@ -4114,16 +3889,6 @@ } } } // End: if (m_allowed_ca_certs.Count() != 0) - else - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("query_cipher_suites_and_previous_session(): No allowed CA certificates. Sends all cipher suites and hopes best.\n"), - m_allowed_ca_certs.Count())); - - select_all_cipher_suites = true; - } } else if (m_own_certificate != 0) { @@ -4151,105 +3916,176 @@ certAlgorithm = public_key.AlgorithmId(); } - - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_RSA_WITH_3DES_EDE_CBC_SHA, - certAlgorithm, - ERSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_RSA_WITH_AES_128_CBC_SHA, - certAlgorithm, - ERSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, - certAlgorithm, - EDSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_DHE_DSS_WITH_AES_128_CBC_SHA, - certAlgorithm, - EDSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, - certAlgorithm, - ERSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_DHE_RSA_WITH_AES_128_CBC_SHA, - certAlgorithm, - ERSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_RSA_WITH_RC4_128_MD5, - certAlgorithm, - ERSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - status = select_cipher_suite( - select_all_cipher_suites, - tls_cipher_suites_TLS_RSA_WITH_RC4_128_SHA, - certAlgorithm, - ERSA, - &cipher_suites); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - + + // IF cipher suite is allowed + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_RSA_WITH_3DES_EDE_CBC_SHA) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == ERSA)) + // THEN add it to list. + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_RSA_WITH_3DES_EDE_CBC_SHA); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_RSA_WITH_AES_128_CBC_SHA) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == ERSA)) + // THEN add it to list. + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_RSA_WITH_AES_128_CBC_SHA); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == EDSA)) + // THEN add it to list. + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_DHE_DSS_WITH_AES_128_CBC_SHA) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == EDSA)) + // THEN add it to list. + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_DHE_DSS_WITH_AES_128_CBC_SHA); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == ERSA)) + // THEN add it to list. + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_DHE_RSA_WITH_AES_128_CBC_SHA) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == ERSA)) + // THEN add it to list. + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_DHE_RSA_WITH_AES_128_CBC_SHA); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_RSA_WITH_RC4_128_MD5) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == ERSA)) + // THEN add it to list. + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_RSA_WITH_RC4_128_MD5); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + if (m_allowed_cipher_suites.Find(tls_cipher_suites_TLS_RSA_WITH_RC4_128_SHA) != KErrNotFound + // AND the algorithm matches the certificates algorithm + && (select_all_cipher_suites == true + || certAlgorithm == ERSA)) + // THEN add it to list.) + { + u16_t *tmp_object = new u16_t; + if (tmp_object == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + *tmp_object = eap_htons(tls_cipher_suites_TLS_RSA_WITH_RC4_128_SHA); + + status = cipher_suites.add_object(tmp_object, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } if (is_session_valid()) { @@ -4347,7 +4183,6 @@ // Compression methods. TLS supports only null compression at the moment. eap_array_c compression_methods(m_am_tools); - { u8_t *tmp_object = new u8_t; if (tmp_object == 0) @@ -4356,7 +4191,6 @@ return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); } *tmp_object = tls_compression_method_null; - status = compression_methods.add_object(tmp_object, true); if (status != eap_status_ok) { @@ -4365,7 +4199,6 @@ } } - status = get_tls_am_partner()->complete_query_cipher_suites_and_previous_session( tls_session_type, &cipher_suites, @@ -4611,11 +4444,9 @@ { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("\n"))); - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("TLS: %s: message_function: verify_certificate_chain()\n"), + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("TLS: %s: message_function: verify_certificate_chain_and_query_public_key()\n"), (m_is_client == true ? "client": "server"))); - EAP_TRACE_RETURN_STRING(m_am_tools, "returns: eap_am_type_tls_peap_symbian_c::verify_certificate_chain()"); - EAP_ASSERT_ALWAYS(certificate_chain->get_object_count() > 0); eap_status_e status(eap_status_ok); @@ -4637,20 +4468,15 @@ return EAP_STATUS_RETURN(m_am_tools, status); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::verify_certificate_chainL( EAP_TEMPLATE_CONST eap_array_c * const certificate_chain, const tls_cipher_suites_e required_cipher_suite) { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::verify_certificate_chainL(): Number of certificates in chain=%d\n"), + EAP_TRACE_DEBUG(m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("eap_am_type_tls_peap_symbian_c::verify_certificate_chainL: Number of certificates in chain=%d\n"), certificate_chain->get_object_count())); - EAP_TRACE_RETURN_STRING(m_am_tools, "returns: eap_am_type_tls_peap_symbian_c::verify_certificate_chainL()"); - eap_status_e status(eap_status_process_general_error); if (m_is_client) { @@ -4666,11 +4492,6 @@ || (m_use_manual_realm == true && m_manual_realm.get_is_valid_data() == true))) { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::verify_certificate_chainL(): Does server certificate realm verification\n"))); - eap_variable_data_c client_subject_realm(m_am_tools); eap_variable_data_c manual_client_subject_realm(m_am_tools); eap_variable_data_c client_issuer_realm(m_am_tools); @@ -4884,29 +4705,10 @@ } } } - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Server certificate realm verification OK.\n"))); } - else - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::verify_certificate_chainL(): No server certificate realm verification\n"))); - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HBufC8* chain = HBufC8::NewL(1); - - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::verify_certificate_chainL(): Calls CleanupStack::PushL(chain)\n"))); - - CleanupStack::PushL(chain); - chain->Des().SetLength(0); - + + HBufC8* chain = HBufC8::NewL(0); HBufC8* temp; eap_variable_data_c* cert; @@ -4926,61 +4728,50 @@ #if defined(_DEBUG) || defined(DEBUG) - { - TPtr8 certPtr( - cert->get_data(cert->get_data_length()), - cert->get_data_length(), - cert->get_data_length()); - - CX509Certificate* x509Cert = CX509Certificate::NewL(certPtr); - - if( x509Cert != NULL ) - { - CleanupStack::PushL(x509Cert); - - TKeyIdentifier KeyIdentifier = x509Cert->KeyIdentifierL(); - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("Key identifier is"), - KeyIdentifier.Ptr(), - KeyIdentifier.Size())); - - // This is for subject key id. - const CX509CertExtension* certExt = x509Cert->Extension(KSubjectKeyId); + TPtr8 certPtr( + cert->get_data(cert->get_data_length()), + cert->get_data_length(), + cert->get_data_length()); + CX509Certificate* x509Cert = CX509Certificate::NewL(certPtr); + + if( x509Cert != NULL ) + { + CleanupStack::PushL(x509Cert); + + TKeyIdentifier KeyIdentifier = x509Cert->KeyIdentifierL(); + + EAP_TRACE_DATA_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Key identifier is"), + KeyIdentifier.Ptr(), + KeyIdentifier.Size())); + + // This is for subject key id. + const CX509CertExtension* certExt = x509Cert->Extension(KSubjectKeyId); + + if (certExt) + { + const CX509SubjectKeyIdExt* subKeyExt = CX509SubjectKeyIdExt::NewLC(certExt->Data()); + EAP_UNREFERENCED_PARAMETER(subKeyExt); + + EAP_TRACE_DATA_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("The Subject key Id is:"), + subKeyExt->KeyId().Ptr(), + subKeyExt->KeyId().Size())); - if (certExt) - { - const CX509SubjectKeyIdExt* subKeyExt = CX509SubjectKeyIdExt::NewLC(certExt->Data()); - EAP_UNREFERENCED_PARAMETER(subKeyExt); - - EAP_TRACE_DATA_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("The Subject key Id is:"), - subKeyExt->KeyId().Ptr(), - subKeyExt->KeyId().Size())); - - CleanupStack::PopAndDestroy(); - } - else - { - EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("ERROR: verify_certificate_chainL - No extension for this certificate\n"))); - } - - CleanupStack::PopAndDestroy(); - } - } + CleanupStack::PopAndDestroy(); // subKeyExt + } + else + { + EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("ERROR: verify_certificate_chainL - No extension for this certificate\n"))); + } + + CleanupStack::PopAndDestroy(x509Cert); + } + #endif - temp = chain->ReAllocL(chain->Length() + cert->get_data_length()); - - CleanupStack::Pop(chain); - - chain = temp; - CleanupStack::PushL(chain); - + temp = chain->ReAllocL(chain->Length() + cert->get_data_length()); + chain = temp; TPtr8 ptr = chain->Des(); - ptr.Append(cert->get_data(cert->get_data_length()), cert->get_data_length()); if (i == 0) { @@ -4991,120 +4782,42 @@ } m_peer_certificate = CX509Certificate::NewL(ptr); } - - } // for() - - - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::verify_certificate_chainL(): calls chain->Des()\n"))); - + CleanupStack::Pop(); + } + CleanupStack::PushL(chain); TPtr8 certChain = chain->Des(); - TBool aUseAutomaticCaCertificate = (m_use_automatic_ca_certificate == true) ? ETrue : EFalse; - - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::verify_certificate_chainL(): calls m_cert_if->ValidateChainL()\n"))); - - m_cert_if->ValidateChainL(certChain, m_allowed_ca_certs, aUseAutomaticCaCertificate); - - CleanupStack::PopAndDestroy(chain); - + m_cert_if->ValidateChainL(certChain, m_allowed_ca_certs); + + CleanupStack::PopAndDestroy(); EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - // This returns eap_status_pending_request User::Leave(KErrCompletion); } -//-------------------------------------------------- - -#if defined(USE_EAP_DEBUG_TRACE) - -static eap_const_string get_certificate_error_string(const enum TValidationError certificate_error) -{ -#if defined(USE_EAP_TRACE_STRINGS) - EAP_IF_RETURN_STRING(certificate_error, EValidatedOK) - else EAP_IF_RETURN_STRING(certificate_error, EChainHasNoRoot) - else EAP_IF_RETURN_STRING(certificate_error, ESignatureInvalid) - else EAP_IF_RETURN_STRING(certificate_error, EDateOutOfRange) - else EAP_IF_RETURN_STRING(certificate_error, ENameIsExcluded) - else EAP_IF_RETURN_STRING(certificate_error, ENameNotPermitted) - else EAP_IF_RETURN_STRING(certificate_error, ENotCACert) - else EAP_IF_RETURN_STRING(certificate_error, ECertificateRevoked) - else EAP_IF_RETURN_STRING(certificate_error, EUnrecognizedCriticalExtension) - else EAP_IF_RETURN_STRING(certificate_error, ENoBasicConstraintInCACert) - else EAP_IF_RETURN_STRING(certificate_error, ENoAcceptablePolicy) - else EAP_IF_RETURN_STRING(certificate_error, EPathTooLong) - else EAP_IF_RETURN_STRING(certificate_error, ENegativePathLengthSpecified) - else EAP_IF_RETURN_STRING(certificate_error, ENamesDontChain) - else EAP_IF_RETURN_STRING(certificate_error, ERequiredPolicyNotFound) - else EAP_IF_RETURN_STRING(certificate_error, EBadKeyUsage) - else EAP_IF_RETURN_STRING(certificate_error, ERootCertNotSelfSigned) - else EAP_IF_RETURN_STRING(certificate_error, ECriticalExtendedKeyUsage) - else EAP_IF_RETURN_STRING(certificate_error, ECriticalCertPoliciesWithQualifiers) - else EAP_IF_RETURN_STRING(certificate_error, ECriticalPolicyMapping) - else EAP_IF_RETURN_STRING(certificate_error, ECriticalDeviceId) - else EAP_IF_RETURN_STRING(certificate_error, ECriticalSid) - else EAP_IF_RETURN_STRING(certificate_error, ECriticalVid) - else EAP_IF_RETURN_STRING(certificate_error, ECriticalCapabilities) -#endif // #if defined(USE_EAP_TRACE_STRINGS) - { - EAP_UNREFERENCED_PARAMETER(certificate_error); - return EAPL("Unknown TValidationError"); - } -} - -#endif //#if defined(USE_EAP_DEBUG_TRACE) - -//-------------------------------------------------- void eap_am_type_tls_peap_symbian_c::complete_validate_chain( - const CPKIXValidationResult * const aValidationResult, - const eap_status_e aStatus) + CPKIXValidationResult& aValidationResult, eap_status_e aStatus) { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); - - TValidationError validationError(EBadKeyUsage); - - if (aValidationResult != 0) - { - validationError = aValidationResult->Error().iReason; - } - - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::complete_validate_chain(): Certificate chain validation reason=%d=%s, status=%d=%s\n"), - validationError, - get_certificate_error_string(validationError), - aStatus, - eap_status_string_c::get_status_string(aStatus))); - + if(aStatus != eap_status_ok) { get_tls_am_partner()->complete_verify_certificate_chain(aStatus); return; } - - eap_status_e result(eap_status_ok); - - if (validationError == EValidatedOK) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("Certificate chain validation OK. Reason: %d=%s\n"), - validationError, - get_certificate_error_string(validationError))); - + + eap_status_e result; + if (aValidationResult.Error().iReason == EValidatedOK) + { + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, + (EAPL("Certificate chain validation OK. Reason: %d\n"), + aValidationResult.Error().iReason)); result = eap_status_ok; } else { - if (validationError == EDateOutOfRange) + if (aValidationResult.Error().iReason == EDateOutOfRange) { send_error_notification(eap_status_certificate_expired); // Ignore error on purpose @@ -5115,12 +4828,9 @@ // Ignore error on purpose } - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("ERROR: Certificate chain validation FAILED. Reason: %d=%s\n"), - validationError, - get_certificate_error_string(validationError))); + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, + (EAPL("ERROR: Certificate chain validation FAILED. Reason: %d\n"), + aValidationResult.Error().iReason)); result = eap_status_illegal_certificate; } @@ -5141,63 +4851,203 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } -//-------------------------------------------------- - #if defined(USE_FAST_EAP_TYPE) #if defined(USE_EAP_CONFIGURATION_TO_SKIP_USER_INTERACTIONS) - eap_status_e eap_am_type_tls_peap_symbian_c::ReadFileConfig() -{ - eap_status_e status = eap_status_ok; - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - status = EapConfigToolsSymbian::EapReadDefaultConfigFileSymbian( - m_am_tools, - &m_fileconfig); - if (status != eap_status_ok) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, status); - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eap_variable_data_c skip_user_interactions(m_am_tools); - - if (m_fileconfig != 0 - && m_fileconfig->get_is_valid() == true) - { - // Here we could try the final configuration option. - status = m_fileconfig->read_configure( - cf_str_EAP_skip_user_interactions_for_testing_purposes.get_field(), - &skip_user_interactions); - } - - if (status == eap_status_ok - && skip_user_interactions.get_is_valid_data() == true) - { - u32_t *skip_user_interactions_flag = reinterpret_cast( - skip_user_interactions.get_data(sizeof(u32_t))); - if (skip_user_interactions_flag != 0) - { - if (*skip_user_interactions_flag != 0) - { - m_skip_user_interactions = true; - } - else - { - m_skip_user_interactions = false; - } - } - } - - iPacStoreDb->SkipUserActions(m_skip_user_interactions); - - return status; -} - + { + eap_status_e status = eap_status_ok; + + eap_am_file_input_symbian_c * const fileio = new eap_am_file_input_symbian_c(m_am_tools); + + eap_automatic_variable_c automatic_fileio(m_am_tools, fileio); + + if (fileio != 0 + && fileio->get_is_valid() == true) + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("Initialize file configuration.\n"))); + + eap_variable_data_c file_name_c_data(m_am_tools); + + { + #if defined(EAPOL_SYMBIAN_VERSION_7_0_s) + eap_const_string const FILECONFIG_FILENAME_C + = "c:\\system\\data\\eap.conf"; + #else + eap_const_string const FILECONFIG_FILENAME_C + = "c:\\private\\101F8EC5\\eap.conf"; + #endif + + status = file_name_c_data.set_copy_of_buffer( + FILECONFIG_FILENAME_C, + m_am_tools->strlen(FILECONFIG_FILENAME_C)); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + + status = file_name_c_data.add_end_null(); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + + eap_variable_data_c file_name_z_data(m_am_tools); + + { + #if defined(EAPOL_SYMBIAN_VERSION_7_0_s) + eap_const_string const FILECONFIG_FILENAME_Z + = "z:\\system\\data\\eap.conf"; + #else + eap_const_string const FILECONFIG_FILENAME_Z + = "z:\\private\\101F8EC5\\eap.conf"; + #endif + + status = file_name_z_data.set_copy_of_buffer( + FILECONFIG_FILENAME_Z, + m_am_tools->strlen(FILECONFIG_FILENAME_Z)); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + + status = file_name_z_data.add_end_null(); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + + + + if (status == eap_status_ok) + { + // First try open from C: disk. + status = fileio->file_open( + &file_name_c_data, + eap_file_io_direction_read); + if (status == eap_status_ok) + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("Opens configure file %s\n"), + file_name_c_data.get_data(file_name_c_data.get_data_length()))); + } + else if (status != eap_status_ok) + { + // Second try open from Z: disk. + status = fileio->file_open( + &file_name_z_data, + eap_file_io_direction_read); + if (status == eap_status_ok) + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("Opens configure file %s\n"), + file_name_z_data.get_data(file_name_z_data.get_data_length()))); + } + } + + if (status == eap_status_ok) + { + // Some of the files were opened. + + m_fileconfig = new eap_file_config_c(m_am_tools); + if (m_fileconfig != 0 + && m_fileconfig->get_is_valid() == true) + { + status = m_fileconfig->configure(fileio); + if (status != eap_status_ok) + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("ERROR: Configure read from %s failed.\n"), + file_name_c_data.get_data(file_name_c_data.get_data_length()))); + } + else + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("Configure read from %s\n"), + file_name_c_data.get_data(file_name_c_data.get_data_length()))); + } + } + else + { + // No file configuration. + delete m_fileconfig; + m_fileconfig = 0; + + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("ERROR: Cannot create configure object for file %s\n"), + file_name_c_data.get_data(file_name_c_data.get_data_length()))); + } + } + else + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("ERROR: Cannot open configure file neither %s nor %s\n"), + file_name_c_data.get_data(file_name_c_data.get_data_length()), + file_name_z_data.get_data(file_name_z_data.get_data_length()))); + } + } + } + else + { + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("Skips file configuration.\n"))); + } + + eap_variable_data_c skip_user_interactions(m_am_tools); + + if (m_fileconfig != 0 + && m_fileconfig->get_is_valid() == true) + { + // Here we could try the final configuration option. + status = m_fileconfig->read_configure( + cf_str_EAP_skip_user_interactions_for_testing_purposes.get_field(), + &skip_user_interactions); + } + + if (status == eap_status_ok + && skip_user_interactions.get_is_valid_data() == true) + { + u32_t *skip_user_interactions_flag = reinterpret_cast( + skip_user_interactions.get_data(sizeof(u32_t))); + if (skip_user_interactions_flag != 0) + { + if (*skip_user_interactions_flag != 0) + { + m_skip_user_interactions = true; + } + else + { + m_skip_user_interactions = false; + } + } + } + + iPacStoreDb->SkipUserActions (m_skip_user_interactions); + + return status; + } #endif //#if defined(USE_EAP_CONFIGURATION_TO_SKIP_USER_INTERACTIONS) #endif @@ -5222,8 +5072,7 @@ if (m_is_client) { - // client - // Get the matching certificates. This function call is completed asyncronously by complete_get_matching_certificates() function call. + // Get the matching certificates TRAPD(err, m_cert_if->GetMatchingCertificatesL( m_allowed_user_certs, ETrue, @@ -5238,7 +5087,6 @@ else { // server - // Get the matching certificates. This function call is completed asyncronously by complete_get_matching_certificates() function call. TRAPD(err, m_cert_if->GetMatchingCertificatesL( m_allowed_user_certs, EFalse, @@ -5268,10 +5116,8 @@ } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates( - RPointerArray& aMatchingCerts, + CArrayFixFlat& aMatchingCerts, eap_status_e aStatus) { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -5292,39 +5138,17 @@ // Add found certs to allowed certificate list. // This list is updated here because there might be certificates that have been removed. - m_allowed_user_certs.ResetAndDestroy(); - - for (TInt i = 0; i < aMatchingCerts.Count() && aMatchingCerts[i] != 0; i++) - { - EapCertificateEntry * const entry = aMatchingCerts[i]->Copy(); - if (entry == 0) + m_allowed_user_certs.Reset(); + for (TInt i = 0; i < aMatchingCerts.Count(); i++) + { + TRAPD(err, m_allowed_user_certs.AppendL(aMatchingCerts[i])); + if (err != KErrNone) { EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("ERROR: EAP-TLS: No memory.\n"))); - - get_am_partner()->complete_eap_identity_query( - 0, // 0 because identity query failed - &m_receive_network_id, - m_eap_identifier, - eap_status_allocation_error, - false, - 0, - false, - 0); - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return; - } - - TInt error = m_allowed_user_certs.Append(entry); - if (error != KErrNone) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("ERROR: eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates(): -EHandlingIdentityQuery- Error=%d\n"), - error)); + (EAPL("ERROR: eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates -EHandlingIdentityQuery- Error=%d\n"), + err)); get_am_partner()->complete_eap_identity_query( 0, // 0 because identity query failed @@ -5335,8 +5159,6 @@ 0, false, 0); - - delete entry; EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return; @@ -5378,60 +5200,35 @@ EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates(): no manual realm - no user cert. Get realm from CA certificate.\n"))); + (EAPL("eap_am_type_tls_peap_symbian_c: no manual realm - no user cert. Get realm from CA certificate.\n"))); TInt allowed_ca_cert_count = m_allowed_ca_certs.Count(); TInt err(KErrNone); - + if(allowed_ca_cert_count > 0) { - TRAP(err, m_cert_if->ReadCACertificateL(*m_allowed_ca_certs[0])); + TRAP(err, m_cert_if->ReadCACertificateL(m_allowed_ca_certs[0])); } - - if (err != KErrNone - || allowed_ca_cert_count <= 0) + if (err != KErrNone || allowed_ca_cert_count <= 0) { - if (m_use_automatic_ca_certificate == false) - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("ERROR: EAP-TLS: eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates(): Cannot read user certificate and no CA cert configured, CA cert count=%d.\n"), - allowed_ca_cert_count)); - - get_am_partner()->complete_eap_identity_query( - 0, // 0 because identity query failed - &m_receive_network_id, - m_eap_identifier, - eap_status_illegal_certificate, - false, - 0, - false, - 0); - - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return; - } - else - { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("WARNING: EAP-TLS: eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates(): Cannot read user certificate and automatic CA cert configured, CA cert count=%d.\n"), - m_allowed_ca_certs.Count())); - - get_am_partner()->complete_eap_identity_query( - 0, // 0 because certificate query failed - &m_receive_network_id, - m_eap_identifier, - eap_status_ok, - false, - 0, - false, - 0); - } + EAP_TRACE_DEBUG( + m_am_tools, + TRACE_FLAGS_DEFAULT, + (EAPL("ERROR: EAP-TLS: Cannot read user certificate or No CA cert configured, CA cert count=%d.\n"), + allowed_ca_cert_count)); + + get_am_partner()->complete_eap_identity_query( + 0, // 0 because identity query failed + &m_receive_network_id, + m_eap_identifier, + eap_status_illegal_certificate, + false, + 0, + false, + 0); + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return; } - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return; } @@ -5443,14 +5240,14 @@ (EAPL("EAP-TLS: Uses manual realm.\n"))); get_am_partner()->complete_eap_identity_query( - 0, // 0 because certificate query failed - &m_receive_network_id, - m_eap_identifier, - eap_status_ok, - m_use_manual_username, - &m_manual_username, - m_use_manual_realm, - &m_manual_realm); + 0, // 0 because certificate query failed + &m_receive_network_id, + m_eap_identifier, + eap_status_ok, + m_use_manual_username, + &m_manual_username, + m_use_manual_realm, + &m_manual_realm); } EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -5468,31 +5265,20 @@ if (aMatchingCerts.Count() > 0) { - TInt error; - - m_allowed_user_certs.ResetAndDestroy(); - - for (TInt i = 0; i < aMatchingCerts.Count(); i++) - { - EapCertificateEntry * const entry = aMatchingCerts[i]->Copy(); - if (entry != 0) - { - TRAP(error, m_allowed_user_certs.AppendL(entry)); - } - else + m_allowed_user_certs.Reset(); + + for (TInt i = 0; i < aMatchingCerts.Count(); i++) { - error = KErrNoMemory; - } - - if (error != KErrNone) - { - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("ERROR: eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates -EHandlingChainQuery- Error=%d\n"), - error)); - - get_tls_am_partner()->complete_query_certificate_chain(0, eap_status_allocation_error); - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return; - } + TRAPD(err, m_allowed_user_certs.AppendL(aMatchingCerts[i])); + if (err != KErrNone) + { + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_am_type_tls_peap_symbian_c::complete_get_matching_certificates -EHandlingChainQuery- Error=%d\n"), + err)); + + get_tls_am_partner()->complete_query_certificate_chain(0, eap_status_allocation_error); + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return; + } } } @@ -5501,18 +5287,10 @@ // No matching or allowed certs and no pre-loaded cert. // Could not find matching certificate - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("EAP-TLS: Could not find proper user certificate.\n"))); + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("EAP-TLS: Could not find proper user certificate.\n"))); if (m_tls_peap_server_authenticates_client_policy_flag == true) { - EAP_TRACE_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("ERROR: EAP-TLS: Could not find proper user certificate and anonymous cliet is not allowed.\n"))); - send_error_notification(eap_status_user_certificate_unknown); } @@ -5535,12 +5313,10 @@ { EAP_TRACE_ERROR(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("EAP-TLS: Illegal state in complete_get_matching_certs.\n"))); } - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return; } -//-------------------------------------------------- EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::query_certificate_authorities_and_types() { @@ -5555,7 +5331,7 @@ eap_array_c certificate_authorities(m_am_tools); eap_variable_data_c ca_dn(m_am_tools); - // TEST CODE: Implementation do not support yet a proper CA DN. + // TEST CODE: This is not a proper CA DN. _LIT8(KTestCA, "ca.eapsim.foo"); status = ca_dn.add_data(KTestCA().Ptr(), KTestCA().Size()); if (status != eap_status_ok) @@ -5745,13 +5521,13 @@ subject_identity.get_data_length(), subject_identity.get_data_length()); - status = subject_realm->set_copy_of_buffer((ptr.Mid(offset + KOffsetCorrection)).Ptr(), ptr.Length() - offset - KOffsetCorrection); + status = subject_realm->set_copy_of_buffer((ptr.Mid(offset + 1)).Ptr(), ptr.Length() - offset - 1); if (status != eap_status_ok) { EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return EAP_STATUS_RETURN(m_am_tools, status); } - + // ISSUER // Check DN TRAP(err, get_identities_from_distinguished_namesL(certificate, &subject_identity, &issuer_identity)); @@ -5766,10 +5542,10 @@ issuer_identity.get_data(issuer_identity.get_data_length()), issuer_identity.get_data_length(), issuer_identity.get_data_length()); - + offset = ptr2.Find(KAt); - status = issuer_realm->set_copy_of_buffer((ptr2.Mid(offset + KOffsetCorrection)).Ptr(), ptr2.Length() - offset - KOffsetCorrection); + status = issuer_realm->set_copy_of_buffer((ptr2.Mid(offset + 1)).Ptr(), ptr2.Length() - offset - 1); if (status != eap_status_ok) { EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -5782,6 +5558,7 @@ //-------------------------------------------------- + EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::save_tls_session( const eap_variable_data_c * const session_id, const eap_variable_data_c * const master_secret, @@ -5874,7 +5651,7 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return EAP_STATUS_RETURN(m_am_tools, eap_status_ok); } - +//-------------------------------------------------- //-------------------------------------------------- EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::rsa_encrypt_with_public_key( @@ -5954,7 +5731,7 @@ ptr.Copy(encrypted_premaster_secret->get_data(encrypted_premaster_secret->get_data_length()), encrypted_premaster_secret->get_data_length()); - TRAP(err, m_cert_if->DecryptL(m_own_certificate_info.GetSubjectKeyId(), *data)); + TRAP(err, m_cert_if->DecryptL(m_own_certificate_info.iSubjectKeyId, *data)); if (err != KErrNone) { @@ -6016,7 +5793,6 @@ } //-------------------------------------------------- - EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::sign_with_private_key( const eap_variable_data_c * const message_hash) { @@ -6075,7 +5851,7 @@ signature_length = public_key_data.Size(); } - TRAP(err, m_cert_if->SignL(m_own_certificate_info.GetSubjectKeyId(), hash, signature_length)); + TRAP(err, m_cert_if->SignL(m_own_certificate_info.iSubjectKeyId, hash, signature_length)); if (err != KErrNone) { status = m_am_tools->convert_am_error_to_eapol_error(err); @@ -6091,9 +5867,7 @@ return EAP_STATUS_RETURN(m_am_tools, status); } - //-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::complete_sign( const RInteger& aR, const RInteger& aS, eap_status_e aStatus) { @@ -6114,8 +5888,6 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::complete_signL( const RInteger& aR, const RInteger& aS, eap_status_e aStatus) { @@ -6277,7 +6049,7 @@ } else { - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("ERROR: Verify with private key failed.\n"))); + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("ERROR: Signing with private key failed.\n"))); EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return EAP_STATUS_RETURN(m_am_tools, eap_status_not_supported); } @@ -6294,8 +6066,6 @@ return EAP_STATUS_RETURN(m_am_tools, status); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::read_dsa_parametersL() { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -6353,7 +6123,6 @@ //-------------------------------------------------- // MODULE HANDLING FUNCTIONS //-------------------------------------------------- - eap_status_e eap_am_type_tls_peap_symbian_c::load_module( const eap_type_value_e /*type*/, const eap_type_value_e /* tunneling_type */, @@ -6375,32 +6144,31 @@ eap_status_e status(eap_status_illegal_eap_type); +#ifdef USE_EAP_EXPANDED_TYPES + EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::check_is_valid_eap_type:Given EAP-type=0xfe%06x%08x\n"), - eap_type.get_vendor_id(), - eap_type.get_vendor_type())); + (EAPL("eap_am_type_tls_peap_symbian_c::check_is_valid_eap_type:Given EAP vendor ID=%x, type=%x\n"), + eap_type.get_vendor_id(), eap_type.get_vendor_type())); for (TInt i = 0; i < m_enabled_tunneling_exp_eap_array.Count(); i++) { eap_expanded_type_c expEAPTmp; - TInt error = CEapConversion::ConvertExpandedEAPTypeToInternalType( - m_enabled_tunneling_exp_eap_array[i], - &expEAPTmp); - - if (error != KErrNone) - { - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error)); - } - + // This will read the expanded EAP from enabledEAPTypes[i]->iExpandedEAPType to expEAPTmp. + // This makes easy to get the vendor type. + eap_expanded_type_c::read_type( m_am_tools, + 0, + m_enabled_tunneling_exp_eap_array[i]->iExpandedEAPType.Ptr(), + KExpandedEAPTypeSize, + &expEAPTmp); + EAP_TRACE_DATA_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("check_is_valid_eap_type:Checking with EAP type:"), - m_enabled_tunneling_exp_eap_array[i]->GetValue().Ptr(), - m_enabled_tunneling_exp_eap_array[i]->GetValue().Size())); + m_enabled_tunneling_exp_eap_array[i]->iExpandedEAPType.Ptr(), + m_enabled_tunneling_exp_eap_array[i]->iExpandedEAPType.Size())); if (eap_type == expEAPTmp) { @@ -6410,7 +6178,35 @@ } } +#else // For normal EAP types. + + TEap *eapType = 0; + + TInt i(0); + + for (i = 0; i < m_iap_eap_array.Count(); i++) + { + // Try next EAP type + eapType = m_iap_eap_array[i]; + if (eapType->Enabled == 1) + { + // Convert the string to integer + TLex8 tmp(eapType->UID); + TInt val(0); + tmp.Val(val); + if (val == eap_type) + { + // Allowed + status = eap_status_ok; + break; + } + } + } + +#endif //#ifdef USE_EAP_EXPANDED_TYPES + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); } @@ -6427,11 +6223,15 @@ eap_status_e status(eap_status_illegal_eap_type); +#ifdef USE_EAP_EXPANDED_TYPES + // We need to return only the EAP types available as enabled types. // It means only the ones available in m_enabled_tunneling_exp_eap_array. for (TInt i = 0; i < m_enabled_tunneling_exp_eap_array.Count(); i++) { + TBuf8 tmpExpEAP(m_enabled_tunneling_exp_eap_array[i]->iExpandedEAPType); + EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, @@ -6442,27 +6242,25 @@ m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Enabled expanded EAP type:"), - m_enabled_tunneling_exp_eap_array[i]->GetValue().Ptr(), - m_enabled_tunneling_exp_eap_array[i]->GetValue().Size())); + tmpExpEAP.Ptr(), + tmpExpEAP.Size())); // This is for one expanded EAP type (for the above one). eap_type_value_e * expandedEAPType = new eap_type_value_e(); - - eap_automatic_variable_c automatic_expandedEAPType( - m_am_tools, - expandedEAPType); - - TInt error = CEapConversion::ConvertExpandedEAPTypeToInternalType( - m_enabled_tunneling_exp_eap_array[i], - expandedEAPType); - - if (error != KErrNone) - { + + // Read the expanded EAP type details from an item in m_enabled_tunneling_exp_eap_array. + status = eap_type_value_e::read_type(m_am_tools, + 0, + &tmpExpEAP, + tmpExpEAP.Length(), + expandedEAPType); + if (status != eap_status_ok) + { + delete expandedEAPType; + expandedEAPType = 0; EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - return EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error)); - } - - automatic_expandedEAPType.do_not_free_variable(); + return EAP_STATUS_RETURN(m_am_tools, status); + } // Add EAP-type to list. status = eap_type_list->add_object(expandedEAPType, true); @@ -6478,19 +6276,56 @@ EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("get_eap_type_list():added EAP-type=0xfe%06x%08x=%s\n"), - expandedEAPType->get_vendor_id(), + (EAPL("get_eap_type_list():added EAP-type=0x%08x=%s\n"), expandedEAPType->get_vendor_type(), - eap_header_string_c::get_eap_type_string(*expandedEAPType))); + eap_string.get_eap_type_string(*expandedEAPType))); }// for() +#else // for normal EAP types. + + TEap *eapType = 0; + + status = eap_type_list->reset(); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + + + for (TInt i = 0; i < m_iap_eap_array.Count(); i++) + { + // Check if type is enabled + eapType = m_iap_eap_array[i]; + if (eapType->Enabled == 1) + { + TLex8 tmp(eapType->UID); + TInt val(0); + tmp.Val(val); + + eap_type_value_e * const eap_type = new eap_type_value_e(static_cast(val)); + if (eap_type == 0) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error); + } + + status = eap_type_list->add_object(eap_type, true); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + } + } // for() + +#endif // #ifdef USE_EAP_EXPANDED_TYPES + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return eap_status_ok; } -//-------------------------------------------------- - eap_status_e eap_am_type_tls_peap_symbian_c::unload_module(const eap_type_value_e /*type*/) { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -6498,7 +6333,6 @@ return EAP_STATUS_RETURN(m_am_tools, eap_status_not_supported); } -//-------------------------------------------------- void eap_am_type_tls_peap_symbian_c::send_error_notification(const eap_status_e error) { @@ -6537,10 +6371,19 @@ m_partner->state_notification(¬ification); } +eap_status_e eap_am_type_tls_peap_symbian_c::show_certificate_selection_dialog() +{ + return eap_status_ok; +} + +eap_status_e eap_am_type_tls_peap_symbian_c::show_manual_identity_dialog() +{ + return eap_status_ok; +} + //-------------------------------------------------- // CANCELLATION FUNCTIONS //-------------------------------------------------- - EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::cancel_identity_query() { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -6556,8 +6399,6 @@ return eap_status_ok; } -//-------------------------------------------------- - EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::cancel_query_cipher_suites_and_previous_session() { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -6787,74 +6628,73 @@ EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, ( - EAPL("eap_am_type_tls_peap_symbian_c::is_session_valid - m_current_eap_vendor_type=0xfe%06x%08x\n"), - m_current_eap_type.get_vendor_id(), - m_current_eap_type.get_vendor_type())); + EAPL("eap_am_type_tls_peap_symbian_c::is_session_valid - m_current_eap_vendor_type=%d \n"), + m_current_eap_vendor_type)); TPtrC maxSessionTimeString; TPtrC lastFullAuthTimeString; - if (m_current_eap_type == eap_type_tls) - { - maxSessionTimeString.Set(cf_str_EAP_TLS_max_session_validity_time_literal); - lastFullAuthTimeString.Set(KTLSLastFullAuthTime); - } - else if (m_current_eap_type == eap_type_peap) - { - maxSessionTimeString.Set(cf_str_EAP_PEAP_max_session_validity_time_literal); - lastFullAuthTimeString.Set(KPEAPLastFullAuthTime); - } - else if (m_current_eap_type == eap_type_ttls) - { - maxSessionTimeString.Set(cf_str_EAP_TTLS_max_session_validity_time_literal); - lastFullAuthTimeString.Set(KTTLSLastFullAuthTime); - } + switch (m_current_eap_vendor_type) + { + case eap_type_tls: + { + maxSessionTimeString.Set(cf_str_EAP_TLS_max_session_validity_time_literal); + lastFullAuthTimeString.Set(KTLSLastFullAuthTime); + } + break; + + case eap_type_peap: + { + maxSessionTimeString.Set(cf_str_EAP_PEAP_max_session_validity_time_literal); + lastFullAuthTimeString.Set(KPEAPLastFullAuthTime); + } + break; + + case eap_type_ttls: + { + maxSessionTimeString.Set(cf_str_EAP_TTLS_max_session_validity_time_literal); + lastFullAuthTimeString.Set(KTTLSLastFullAuthTime); + } + break; + #if defined(USE_FAST_EAP_TYPE) - else if (m_current_eap_type == eap_type_fast) - { - maxSessionTimeString.Set(cf_str_EAP_FAST_max_session_validity_time_literal); - lastFullAuthTimeString.Set(KFASTLastFullAuthTime); - } + case eap_type_fast: + { + maxSessionTimeString.Set(cf_str_EAP_FAST_max_session_validity_time_literal); + lastFullAuthTimeString.Set(KFASTLastFullAuthTime); + } + break; #endif - else if (m_current_eap_type == eap_expanded_type_ttls_plain_pap.get_type()) - { - // we should not come here, ttls pap has its own - // method for checking session validity - EAP_TRACE_ERROR( m_am_tools, TRACE_FLAGS_DEFAULT, ( - EAPL( "ERROR: wrong eap type.\n" ) ) ); - return false; - } - else - { - // Should never happen - EAP_TRACE_ERROR(m_am_tools, - TRACE_FLAGS_DEFAULT, ( - EAPL("Unsupported EAP type, m_current_eap_vendor_type=0xfe%06x%08x\n"), - m_current_eap_type.get_vendor_id(), - m_current_eap_type.get_vendor_type())); - - return false; // Treat this as Session invalid. - } + + case eap_type_ttls_plain_pap: + { + // we should not come here, ttls pap has its own + // method for checking session validity + EAP_TRACE_ERROR( m_am_tools, TRACE_FLAGS_DEFAULT, ( + EAPL( "ERROR: wrong eap type.\n" ) ) ); + return false; + } + + default: + { + // Should never happen + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("Unsupported EAP type, m_current_eap_vendor_type=%d \n"), + m_current_eap_vendor_type)); + + return false; // Treat this as Session invalid. + } + } HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); TPtr sqlStatement = buf->Des(); // Query all the relevant parameters - _LIT(KSQLQuery, "SELECT %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d"); - - sqlStatement.Format( - KSQLQuery, - &maxSessionTimeString, - &lastFullAuthTimeString, - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + _LIT(KSQLQuery, "SELECT %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); + sqlStatement.Format(KSQLQuery, &maxSessionTimeString, &lastFullAuthTimeString, &m_db_table_name, + &KServiceType, m_index_type, + &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); RDbView view; // Evaluate view @@ -6966,68 +6806,65 @@ EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::store_authentication_timeL, index type=%d, index=%d, tunneling type=0xfe%06x%08x, current eap type=0xfe%06x%08x\n"), - m_index_type, - m_index, - m_tunneling_type.get_vendor_id(), - m_tunneling_type.get_vendor_type(), - m_current_eap_type.get_vendor_id(), - m_current_eap_type.get_vendor_type())); + (EAPL("eap_am_type_tls_peap_symbian_c::store_authentication_timeL, index type=%d, index=%d, tunneling type=%d, current eap type=%d\n"), + m_index_type, m_index, m_tunneling_vendor_type, m_current_eap_vendor_type)); TPtrC lastFullAuthTimeString; - if (m_current_eap_type == eap_type_tls) - { - lastFullAuthTimeString.Set(KTLSLastFullAuthTime); - } - else if (m_current_eap_type == eap_type_peap) - { - lastFullAuthTimeString.Set(KPEAPLastFullAuthTime); - } - else if (m_current_eap_type == eap_type_ttls) - { - lastFullAuthTimeString.Set(KTTLSLastFullAuthTime); - } - else if (m_current_eap_type == eap_expanded_type_ttls_plain_pap.get_type()) - { + switch (m_current_eap_vendor_type) + { + case eap_type_tls: + { + lastFullAuthTimeString.Set(KTLSLastFullAuthTime); + } + break; + + case eap_type_peap: + { + lastFullAuthTimeString.Set(KPEAPLastFullAuthTime); + } + break; + + case eap_type_ttls: + { + lastFullAuthTimeString.Set(KTTLSLastFullAuthTime); + } + break; + + case eap_type_ttls_plain_pap: + { lastFullAuthTimeString.Set( KTTLSPAPLastFullAuthTime ); - } + } + break; + #if defined(USE_FAST_EAP_TYPE) - else if (m_current_eap_type == eap_type_fast) - { - lastFullAuthTimeString.Set(KFASTLastFullAuthTime); - } + case eap_type_fast: + { + lastFullAuthTimeString.Set(KFASTLastFullAuthTime); + } + break; #endif - else - { - // Should never happen - EAP_TRACE_ERROR(m_am_tools, - TRACE_FLAGS_DEFAULT, ( - EAPL("Unsupported EAP type, m_current_eap_vendor_type=0xfe%06x%08x\n"), - m_current_eap_type.get_vendor_id(), - m_current_eap_type.get_vendor_type())); - - User::Leave(KErrNotSupported); - } + + default: + { + // Should never happen + EAP_TRACE_ERROR(m_am_tools, + TRACE_FLAGS_DEFAULT, ( + EAPL("Unsupported EAP type, m_current_eap_vendor_type=%d \n"), + m_current_eap_vendor_type)); + + User::Leave(KErrNotSupported); + } + } HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); TPtr sqlStatement = buf->Des(); // Query all the relevant parameters - _LIT(KSQLQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d"); - - sqlStatement.Format( - KSQLQuery, - &lastFullAuthTimeString, - &m_db_table_name, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + _LIT(KSQLQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); + sqlStatement.Format(KSQLQuery, &lastFullAuthTimeString, &m_db_table_name, + &KServiceType, m_index_type, + &KServiceIndex, m_index, &KTunnelingType, m_tunneling_vendor_type); RDbView view; // Evaluate view @@ -7035,7 +6872,7 @@ CleanupClosePushL(view); User::LeaveIfError(view.EvaluateAll()); - // Get the first (and only) row for update. + // Get the first (and only) row for updation. view.FirstL(); view.UpdateL(); @@ -7152,9 +6989,9 @@ } #endif //#if defined(USE_EAP_CORE_SERVER) - //-------------------------------------------------- + // This is commented in eap_am_fast_pac_store_services_c::query_user_permission_for_A_ID(). EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::query_user_permission_for_A_ID( const eap_fast_pac_store_pending_operation_e in_pending_operation, @@ -7209,7 +7046,7 @@ eap_status_e eap_am_type_tls_peap_symbian_c::QueryUserPermissionForAIDL( const eap_fast_variable_data_c * const in_pac_attribute_A_ID_info, const eap_fast_variable_data_c * const in_pac_attribute_A_ID) -{ + { eap_status_e status(eap_status_ok); HBufC8* A_ID_info8 = HBufC8::NewLC((in_pac_attribute_A_ID_info->get_data_length())); @@ -7236,7 +7073,7 @@ (A_IDPtr.Ptr()), (in_pac_attribute_A_ID->get_data_length()))); - if (A_ID_infoPtr.Size()>=KMaxNotifItemLength) + if (A_ID_infoPtr.Size()>KMaxEapFastNotifierBufLength) { CleanupStack::PopAndDestroy(3); // A_ID, A_ID_info status = m_am_tools->convert_am_error_to_eapol_error(KErrArgument); @@ -7244,42 +7081,41 @@ EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); } - - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - - m_notifier_data_to_user->iPassword.Copy(A_ID_infoPtr); - - if (iEapAuthNotifier == 0) - { - TRAPD(err, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (err) - { - return eap_status_process_general_error; - } - } - else - { - TRAPD(err1, iEapAuthNotifier->Cancel()); - if (err1) - { - return eap_status_process_general_error; - } - } - - TRAPD(err2, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastInstallPacQueryDialog, m_notifier_data_to_user, aEapType)); - if (err2) - { - return eap_status_process_general_error; - } - - + + TBool startedOk = ETrue; + + if (!iEapFastActiveNotes) + { + TRAPD( err, iEapFastActiveNotes = CEapFastActive::NewL( this ) ); + + if ( err != KErrNone ) + { + status = eap_status_allocation_error; + } + } + if ( status == KErrNone ) + { + //update buffer + iEapFastActiveNotes->UpdateInputBuf( A_ID_infoPtr ); + // start query install dialog + // asynch. call, return immediately + startedOk = iEapFastActiveNotes->Start( + CEapFastActive::EEapFastActiveInstallPacQueryDialog ); + if ( startedOk == EFalse ) + { + status = eap_status_process_general_error; + } + } + else + { + status = eap_status_process_general_error; + } CleanupStack::PopAndDestroy(3); // A_ID, A_ID_info return status; -} - -//-------------------------------------------------- + } + EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::read_PAC_store_data( const eap_fast_pac_store_pending_operation_e in_pending_operation, @@ -7767,88 +7603,84 @@ } } - m_info_array.ResetAndDestroy(); + TInt count = 0; + + m_info_array.Reset(); iPacStoreDb->GetPacStoreDataL(dbTableName, m_info_array); EAP_TRACE_DEBUG_SYMBIAN( - (_L("eap_am_type_tls_peap_symbian_c::ReadPACStoredataL:Number of entries in table %S=%d\n"), - &dbTableName, m_info_array.Count())); + (_L("eap_am_type_tls_peap_symbian_c::ReadPACStoredataL:Number of entries in table %S=%d\n"), + &dbTableName, m_info_array.Count())); - TInt first_index = 0; - - while (m_info_array.Count() > 0) - { - if (m_info_array[first_index] != 0 - && m_info_array[first_index]->GetIsValid() != EFalse) - { - // Note this will get always the first object of array. After the first object is processed it is destryed and removed from array. - TPtr8 infoDataPtr = m_info_array[first_index]->GetData()->Des(); - TPtr8 infoRefPtr = m_info_array[first_index]->GetReference()->Des(); - - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("eap_am_type_tls_peap_symbian_c::ReadPACStoredataL: BINARY value from PAC DB (reference)", - infoRefPtr.Ptr(), - infoRefPtr.Size())); - - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("eap_am_type_tls_peap_symbian_c::ReadPACStoredataL: BINARY value from PAC DB (value)", - infoDataPtr.Ptr(), - infoDataPtr.Size())); - - eap_fast_pac_store_data_c * const new_data = new eap_fast_pac_store_data_c(m_am_tools); - - eap_automatic_variable_c automatic_new_data( - m_am_tools, new_data); - - if (new_data == 0) - { - m_eap_fast_completion_status = eap_status_allocation_error; - (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); - break; - } - - new_data->set_type(dataType); - - // Set the reference. - m_eap_fast_completion_status = new_data->get_writable_reference()->set_copy_of_buffer(infoRefPtr.Ptr(), infoRefPtr.Size()); - if (m_eap_fast_completion_status != eap_status_ok) - { - (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); - delete m_info_array[first_index]; - m_info_array.Remove(first_index); - break; - } - - m_eap_fast_completion_status = new_data->get_writable_data()->set_copy_of_buffer(infoDataPtr.Ptr(), infoDataPtr.Size()); - if (m_eap_fast_completion_status != eap_status_ok) - { - (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); - delete m_info_array[first_index]; - m_info_array.Remove(first_index); - break; - } - - automatic_new_data.do_not_free_variable(); - - m_eap_fast_completion_status = m_references_and_data_blocks.add_object(new_data, true); - if (m_eap_fast_completion_status != eap_status_ok) - { - (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); - delete m_info_array[first_index]; - m_info_array.Remove(first_index); - break; - } - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("For GROUP, AID, PAC INFOs - added data", - (new_data->get_data())->get_data((new_data->get_data())->get_data_length()), - (new_data->get_data())->get_data_length())); - } + while (count < m_info_array.Count()) + { + TPtr8 infoDataPtr = m_info_array[count].iData->Des(); + TPtr8 infoRefPtr = m_info_array[count].iReference->Des(); + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("eap_am_type_tls_peap_symbian_c::ReadPACStoredataL: BINARY value from PAC DB (reference)", + infoRefPtr.Ptr(), + infoRefPtr.Size())); + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("eap_am_type_tls_peap_symbian_c::ReadPACStoredataL: BINARY value from PAC DB (value)", + infoDataPtr.Ptr(), + infoDataPtr.Size())); + + eap_fast_pac_store_data_c * const new_data = new eap_fast_pac_store_data_c(m_am_tools); + + eap_automatic_variable_c automatic_new_data( + m_am_tools, new_data); + + if (new_data == 0) + { + m_eap_fast_completion_status = eap_status_allocation_error; + (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); + break; + } + + new_data->set_type(dataType); + + // Set the reference. + m_eap_fast_completion_status = new_data->get_writable_reference()->set_copy_of_buffer(infoRefPtr.Ptr(), infoRefPtr.Size()); + if (m_eap_fast_completion_status != eap_status_ok) + { + (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); + delete m_info_array[count].iData; + delete m_info_array[count].iReference; + break; + } + + m_eap_fast_completion_status = new_data->get_writable_data()->set_copy_of_buffer(infoDataPtr.Ptr(),infoDataPtr.Size() ); + if (m_eap_fast_completion_status != eap_status_ok) + { + (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); + delete m_info_array[count].iData; + delete m_info_array[count].iReference; + break; + } + + automatic_new_data.do_not_free_variable(); + + m_eap_fast_completion_status = m_references_and_data_blocks.add_object(new_data, true); + if (m_eap_fast_completion_status != eap_status_ok) + { + (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); + delete m_info_array[count].iData; + delete m_info_array[count].iReference; + break; + } - delete m_info_array[first_index]; - m_info_array.Remove(first_index); - - + delete m_info_array[count].iData; + delete m_info_array[count].iReference; + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("For GROUP, AID, PAC INFOs - added data", + (new_data->get_data())->get_data((new_data->get_data())->get_data_length()), + (new_data->get_data())->get_data_length())); + + count++; } // End: while @@ -7899,41 +7731,14 @@ if(iPacStoreDb->IsMasterKeyPresentL()) { - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - - m_notifier_data_to_user->iPassword.Zero(); - - if (iEapAuthNotifier == 0) - { - iEapAuthNotifier = CEapAuthNotifier::NewL( *this ); - } - else - { - iEapAuthNotifier->Cancel(); - } - - iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastPacStorePwQueryDialog, m_notifier_data_to_user, aEapType); - - + m_eap_fast_completion_status = ShowNotifierItemAndGetResponse( + EEapFastNotifierPacStorePwQuery, ETrue ); } else { m_state = EMasterkeyQuery; - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - - m_notifier_data_to_user->iPassword.Zero(); - - if (iEapAuthNotifier == 0) - { - iEapAuthNotifier = CEapAuthNotifier::NewL( *this ); - } - else - { - iEapAuthNotifier->Cancel(); - } - - iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastCreateMasterkeyQueryDialog, m_notifier_data_to_user, aEapType); - + m_eap_fast_completion_status = ShowNotifierItemAndGetResponse( + EEapFastNotifierCreateMasterkeyQuery, ETrue ); } break; @@ -7997,7 +7802,7 @@ eap_variable_data_c m_PAC_store_device_seed(m_am_tools); m_eap_fast_completion_status = m_PAC_store_device_seed.set_copy_of_buffer( - iPacStoreDeviceSeed ); + iPacStoreDb->GetSeed() ); if ( m_eap_fast_completion_status != eap_status_ok ) { EAP_TRACE_DEBUG_SYMBIAN( @@ -8243,21 +8048,9 @@ m_both_asked++; - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - - m_notifier_data_to_user->iPassword.Zero(); - - if (iEapAuthNotifier == 0) - { - iEapAuthNotifier = CEapAuthNotifier::NewL( *this ); - } - else - { - iEapAuthNotifier->Cancel(); - } - - iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastPacFilePwQueryDialog, m_notifier_data_to_user, aEapType); - + m_eap_fast_completion_status = ShowNotifierItemAndGetResponse( + EEapFastNotifierPacFilePwQuery, ETrue ); + if (m_eap_fast_completion_status != eap_status_ok) { (void) EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); @@ -8283,14 +8076,9 @@ } // End: switch(pacStoreDataRefType) } } // for () - if (m_both_asked) - { m_eap_fast_completion_status = eap_status_pending_request; - } - - m_info_array.ResetAndDestroy(); - + m_info_array.Reset(); EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::ReadPACStoredataL-End, m_eap_fast_completion_status=%d"), m_eap_fast_completion_status)); @@ -8490,10 +8278,18 @@ break; } case eap_pac_store_data_type_PAC_store_password: + { + //This is not saved anywhere. + break; + } case eap_pac_store_data_type_PAC_store_device_seed: + { + //This is not saved anywhere. + break; + } case eap_pac_store_data_type_PAC_store_IAP_reference: { - //These are not saved anywhere. + //This is not saved anywhere. break; } case eap_pac_store_data_type_PAC_store_group_reference: @@ -8683,12 +8479,10 @@ return EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); } -//-------------------------------------------------- - void eap_am_type_tls_peap_symbian_c::CompleteAddImportedPACFileL( const eap_variable_data_c * const in_imported_PAC_filename, const eap_variable_data_c * const out_used_group_reference) -{ + { RFs aFs; aFs.Connect( KFileServerDefaultMessageSlots ); @@ -8761,32 +8555,21 @@ (_L("eap_am_type_tls_peap_symbian_c::complete_add_imported_PAC_file: NO GROUP REFERENCE !!!!"))); } - + HBufC* FilePath = HBufC::NewLC(KMaxFileName); // must be defined to correct maxs dir length TPtr FilePathPtr = FilePath->Des(); HBufC8* FilePath8 = HBufC8::NewLC(KMaxFileName); // must be defined to correct maxs dir length TPtr8 FilePathPtr8 = FilePath8->Des(); - + + _LIT8(KPacStoreSourceDir, "c:\\private\\101f8ec5\\PACGroup\\"); // in dir are dirs where from files are read FilePathPtr8.Zero(); + FilePathPtr8.Append(KPacStoreSourceDir); FilePathPtr8.Append(refPtr); FilePathPtr8.Append(KSeparator); FilePathPtr8.Append(bufPtr); - // Copy is the only function that takes TPtr8 type of parameter. FilePathPtr.Copy(FilePathPtr8); - { - TFileName aPrivateDatabasePathName; - - EapPluginTools::GetPrivatePathL( - aPrivateDatabasePathName); - - aPrivateDatabasePathName.Append(KPacStoreSourceDir); - aPrivateDatabasePathName.Append(FilePathPtr); - - FilePathPtr.Copy(aPrivateDatabasePathName); - } - EAP_TRACE_DATA_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, @@ -8812,7 +8595,7 @@ CleanupStack::PopAndDestroy(ref); CleanupStack::PopAndDestroy(buf); -} + } // --------------------------------------------------------- @@ -8820,7 +8603,8 @@ // --------------------------------------------------------- // void eap_am_type_tls_peap_symbian_c::ContinueInitializePacStore() -{ + + { EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::ContinueInitializePacStore()"))); @@ -8854,7 +8638,7 @@ 0, 1); -} + } //-------------------------------------------------- @@ -8967,8 +8751,6 @@ return EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); } -//-------------------------------------------------- - // This is commented in eap_am_fast_pac_store_services_c::cancel_PAC_store_operations(). EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::cancel_PAC_store_operations() { @@ -8994,7 +8776,9 @@ //-------------------------------------------------- -EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::initialize_PAC_store( + +EAP_FUNC_EXPORT eap_status_e +eap_am_type_tls_peap_symbian_c::initialize_PAC_store( const eap_fast_completion_operation_e aCompletionOperation, const eap_fast_initialize_pac_store_completion_e aCompletion ) { @@ -9035,7 +8819,7 @@ } } // asynch. call, return immediately - CreateDeviceSeedAsync(); + iPacStoreDb->CreateDeviceSeedAsynch(); } else { @@ -9061,121 +8845,125 @@ // eap_am_type_tls_peap_symbian_c::indicates_eap_fast_provisioning_starts // --------------------------------------------------------------------------- // -EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::indicates_eap_fast_provisioning_starts( +EAP_FUNC_EXPORT +eap_status_e eap_am_type_tls_peap_symbian_c::indicates_eap_fast_provisioning_starts( const eap_fast_completion_operation_e provisioning_mode, const eap_fast_pac_type_e pac_type ) -{ + { eap_status_e status( eap_status_ok ); m_provisioning_mode = provisioning_mode; // save provis. mode - - TInt error(KErrNone); - - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - - m_notifier_data_to_user->iPassword.Zero(); - - if (iEapAuthNotifier == 0) - { - TRAP(error, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (error) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - } - else - { - TRAP(error, iEapAuthNotifier->Cancel()); - if (error) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - } - + + TInt err = KErrNone; + if ( !iEapFastActiveWaitNote ) + { + TRAP( err, iEapFastActiveWaitNote = CEapFastActive::NewL( this ) ); + } + if ( !iEapFastActiveNotes ) + { + TRAP( err, iEapFastActiveNotes = CEapFastActive::NewL( this ) ); + } + if ( err != KErrNone ) + { + status = eap_status_allocation_error; + } + /** + * The note is started in a separate active object. + * When user cancels waiting note, + * SendErrorNotification( eap_status_user_cancel_authentication ) + * will be called in iEapFastActiveWaitNote->RunL(). + * Otherwise note is stopped using iEapFastActiveWaitNote.Start() method. + */ + TBool startedOk = ETrue; + if ( pac_type == eap_fast_pac_type_tunnel_pac - && provisioning_mode == eap_fast_completion_operation_server_authenticated_provisioning_mode - && status == eap_status_ok ) - { - TRAP(error, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastStartAuthProvWaitNote, m_notifier_data_to_user, aEapType)); - if (error) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - } + && + provisioning_mode == + eap_fast_completion_operation_server_authenticated_provisioning_mode + && + status == eap_status_ok ) + { + EAP_TRACE_DEBUG_SYMBIAN( ( _L("eap_am_type_tls_peap_symbian_c:: \ + indicates_eap_fast_provisioning_starts Authenticated provisioning!"))); + startedOk = iEapFastActiveWaitNote->Start( + CEapFastActive::EEapFastActiveStartAuthProvWaitNote ); + } else if ( pac_type == eap_fast_pac_type_tunnel_pac - && provisioning_mode == eap_fast_completion_operation_server_unauthenticated_provisioning_mode_ADHP - && status == eap_status_ok ) - { - TRAP(error, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastStartUnauthProvWaitNote, m_notifier_data_to_user, aEapType)); - if (error) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - } - - - + && + provisioning_mode == + eap_fast_completion_operation_server_unauthenticated_provisioning_mode_ADHP + && + status == eap_status_ok ) + { + EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c:: \ + indicates_eap_fast_provisioning_starts UnAuthenticated provisioning!"))); + startedOk = iEapFastActiveWaitNote->Start( + CEapFastActive::EEapFastActiveStartUnauthProvWaitNote ); + } + if ( startedOk == EFalse ) + { + status = eap_status_process_general_error; + } + if ( status != eap_status_ok ) + { + EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c:: \ + indicates_eap_fast_provisioning_starts ERROR: status=%d."), status ) ); + } return status; -} + } // --------------------------------------------------------------------------- // eap_am_type_tls_peap_symbian_c::indicates_eap_fast_provisioning_ends // --------------------------------------------------------------------------- // -EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::indicates_eap_fast_provisioning_ends( +EAP_FUNC_EXPORT +eap_status_e eap_am_type_tls_peap_symbian_c::indicates_eap_fast_provisioning_ends( const bool provisioning_successfull, const eap_fast_completion_operation_e provisioning_mode, const eap_fast_pac_type_e pac_type ) -{ - EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::indicates_eap_fast_provisioning_ends()"))); + { + EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c:: \ + indicates_eap_fast_provisioning_ends()"))); EAP_UNREFERENCED_PARAMETER(provisioning_mode); - TInt error(KErrNone); - eap_status_e status( eap_status_ok ); - + if ( pac_type == eap_fast_pac_type_tunnel_pac ) - { - // stop wait note; - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - - m_notifier_data_to_user->iPassword.Zero(); - - if (iEapAuthNotifier == 0) - { - TRAP(error, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (error) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - } - else - { - TRAP(error, iEapAuthNotifier->Cancel()); - if (error) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - } - - if( !provisioning_successfull ) - { - TRAP(error, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastShowProvNotSuccessNote, m_notifier_data_to_user, aEapType)); - if (error) - { - return m_am_tools->convert_am_error_to_eapol_error(error); - } - } - } // if ( pac_type == eap_fast_pac_type_tunnel_pac ) + { + // stop wait note; + if ( iEapFastActiveWaitNote ) + { + if ( iEapFastActiveWaitNote->IsActive() ) + { + iEapFastActiveWaitNote->Cancel(); + } + delete iEapFastActiveWaitNote; + iEapFastActiveWaitNote = NULL; + } + + if ( iEapFastActiveNotes ) + { + if( provisioning_successfull ) + { + // synch. call + iEapFastActiveNotes->Start( CEapFastActive:: + EEapFastActiveShowProvSuccessNote, ETrue ); + } + else + { + // synch. call + iEapFastActiveNotes->Start( CEapFastActive:: + EapFastActiveShowProvNotSuccessNote, ETrue ); + } + } + } // if ( pac_type == eap_fast_pac_type_tunnel_pac ) return status; -} + } #endif //#if defined(USE_FAST_EAP_TYPE) -//-------------------------------------------------- - #ifdef USE_PAC_STORE void eap_am_type_tls_peap_symbian_c::GetPacStoreDbDataL( @@ -9446,11 +9234,76 @@ //-------------------------------------------------- -#ifdef USE_FAST_EAP_TYPE +#if defined(USE_FAST_EAP_TYPE) + +eap_status_e eap_am_type_tls_peap_symbian_c::ShowNotifierItemAndGetResponse( + EEapFastNotifierUiItem aNotifierUiItem, TBool aSetActive ) +{ + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::ShowNotifierItem aNotifierUiItem=%d, ActiveStatus=%d "), + aNotifierUiItem, IsActive())); + + if ( aSetActive && IsActive() ) + { + EAP_TRACE_DEBUG_SYMBIAN( + (_L("ShowNotifierItemAndGetResponse: Already active when tried to show Notifier"))); + + return eap_status_device_busy; + } + + eap_status_e status( eap_status_ok ); + + if( !m_is_notifier_connected ) + { + TInt error = m_notifier.Connect(); + + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::ShowNotifierItem - m_notifier.Connect() returned error=%d\n"), error)); + + if( error != KErrNone) + { + // Can not connect to notifier. + return m_am_tools->convert_am_error_to_eapol_error(error); + } + + m_is_notifier_connected = ETrue; // Got connectted to notifier. + } + + // Update the values needed for notifier. + m_notifier_data_to_user->iEapFastNotifierUiItem = aNotifierUiItem; + + EAP_TRACE_DEBUG_SYMBIAN( + (_L("m_notifier_data_pckg_to_user"), + m_notifier_data_pckg_to_user->Ptr(), + m_notifier_data_pckg_to_user->Size())); + + m_notifier_data_from_user->iEapFastNotifierBuffer.Delete(0,KMaxEapFastNotifierBufLength); + + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::ShowNotifierItem - StartNotifierAndGetResponse"))); + + m_notifier.StartNotifierAndGetResponse( + iStatus, + KEapFastNotifierUid, + *m_notifier_data_pckg_to_user, + *m_notifier_data_pckg_from_user); + + if ( aSetActive ) + { + m_notifier_complete = ETrue; + SetActive(); + } + + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::ShowNotifierItem - End"))); + + return status; +} + //-------------------------------------------------- eap_status_e eap_am_type_tls_peap_symbian_c::RemoveIAPReference() -{ + { EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::RemoveIAPReference - Start"))); m_eap_fast_completion_status = eap_status_ok; @@ -9514,12 +9367,10 @@ (_L("eap_am_type_tls_peap_symbian_c::RemoveIAPReference - End"))); return m_eap_fast_completion_status; -} - -//-------------------------------------------------- + } eap_status_e eap_am_type_tls_peap_symbian_c::ImportFilesL() -{ + { EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::ImportFilesL - Start"))); @@ -9614,39 +9465,25 @@ TBool FileFound(EFalse); PathPtr8.Zero(); + PathPtr8.Append(KPacStoreSourceDir); PathPtr8.Append(group_referencePtr8); PathPtr8.Append(KSeparator); - EAP_TRACE_DATA_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_am_type_tls_peap_symbian_c::ImportFilesL: Path8"), PathPtr8.Ptr(), PathPtr8.Size())); - PathPtr.Zero(); - // Copy is the only function that takes TPtr8 type of parameter. PathPtr.Copy(PathPtr8); - { - TFileName aPrivateDatabasePathName; - - EapPluginTools::GetPrivatePathL( - aPrivateDatabasePathName); - - aPrivateDatabasePathName.Append(KPacStoreSourceDir); - aPrivateDatabasePathName.Append(PathPtr); - - PathPtr.Copy(aPrivateDatabasePathName); - } - EAP_TRACE_DATA_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_am_type_tls_peap_symbian_c::ImportFilesL: Path"), PathPtr.Ptr(), PathPtr.Size())); - + EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::ImportFilesL: Check directory availability"))); @@ -9665,7 +9502,7 @@ directoryEmpty = false; - while( fileCounter < files->Count()) + while( fileCounter < files->Count() || (!FileFound)) { if (!((*files)[fileCounter].IsDir())) { @@ -9708,6 +9545,8 @@ KHandleCompletePacstoreOkTimerID, &m_eap_fast_completion_status, 1); + if (readData != NULL) + CleanupStack::PopAndDestroy(readData); CleanupStack::PopAndDestroy(5); // Path, Path8, filename, buf2, group_reference8 EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); return EAP_STATUS_RETURN(m_am_tools, m_eap_fast_completion_status); @@ -9717,44 +9556,23 @@ else if(directoryEmpty == false && directoryExists == true && FileFound != EFalse) { PathPtr8.Zero(); + PathPtr8.Append(KPacStoreSourceDir); PathPtr8.Append(group_referencePtr8); PathPtr8.Append(KSeparator); PathPtr8.Append(filenamePtr8); - EAP_TRACE_DATA_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_am_type_tls_peap_symbian_c::ImportFilesL: Path8"), PathPtr8.Ptr(), PathPtr8.Size())); - PathPtr.Zero(); PathPtr.Copy(PathPtr8); - - { - TFileName aPrivateDatabasePathName; - - EapPluginTools::GetPrivatePathL( - aPrivateDatabasePathName); - - aPrivateDatabasePathName.Append(KPacStoreSourceDir); - aPrivateDatabasePathName.Append(PathPtr); - - PathPtr.Copy(aPrivateDatabasePathName); - } - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::ImportFilesL: PathPtr"), - PathPtr.Ptr(), - PathPtr.Size())); - EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::ImportFilesL: Read file"))); RFile file; - if(file.Open(aFs, PathPtr, EFileRead)==KErrNone) { readData= HBufC8::NewLC(filesize); @@ -9871,7 +9689,7 @@ this, KHandleCompletePacstoreNokTimerID, &m_eap_fast_completion_status, - 0); + 1); } else { @@ -9879,19 +9697,18 @@ this, KHandleCompletePacstoreOkTimerID, &m_eap_fast_completion_status, - 0); + 1); } } EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::ImportFilesL - End"))); return m_eap_fast_completion_status; -} + } // ---------------------------------------------------------------------------- - eap_status_e eap_am_type_tls_peap_symbian_c::PasswordQueryL() -{ + { EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::PasswordQueryL"))); @@ -9942,10 +9759,8 @@ { CleanupStack::PopAndDestroy(m_pacStorePWBuf8); - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - - m_notifier_data_to_user->iPassword.Zero(); - + m_eap_fast_completion_status = ShowNotifierItemAndGetResponse( + EEapFastNotifierWrongPacStorePwNote, ETrue ); return m_eap_fast_completion_status; } @@ -9974,33 +9789,8 @@ m_verificationStatus)); pacStorePWPtr8.Zero(); if (m_verificationStatus == EFalse) - { - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - if (iEapAuthNotifier == 0) - { - TRAPD(err3, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (err3) - { - return eap_status_process_general_error; - } - } - else - { - TRAPD(err4, iEapAuthNotifier->Cancel()); - if (err4) - { - return eap_status_process_general_error; - } - } - - TRAPD(err5, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastPacStorePwQueryDialog, m_notifier_data_to_user, aEapType)); - if (err5) - { - return eap_status_process_general_error; - } - - - } + m_eap_fast_completion_status = ShowNotifierItemAndGetResponse( + EEapFastNotifierPacStorePwQuery, ETrue ); else m_eap_fast_completion_status = m_partner->set_timer( this, @@ -10022,44 +9812,19 @@ } else // temporary before masterkey creation is done dynamically !!! { - TEapExpandedType aEapType(*EapExpandedTypeFast.GetType()); - if (iEapAuthNotifier == 0) - { - TRAPD(err, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (err) - { - return eap_status_process_general_error; - } - } - else - { - TRAPD(err1, iEapAuthNotifier->Cancel()); - if (err1) - { - return eap_status_process_general_error; - } - } - - TRAPD(err2, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypeFastCreateMasterkeyQueryDialog, m_notifier_data_to_user, aEapType)); - if (err2) - { - return eap_status_process_general_error; - } - - - - } + m_eap_fast_completion_status = ShowNotifierItemAndGetResponse( + EEapFastNotifierCreateMasterkeyQuery, ETrue ); + + } } CleanupStack::PopAndDestroy(m_pacStorePWBuf8); return m_eap_fast_completion_status; -} - -//-------------------------------------------------- + } eap_status_e eap_am_type_tls_peap_symbian_c::CompletePasswordQueryL() -{ + { EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::CompletePasswordQueryL"))); @@ -10132,12 +9897,10 @@ m_both_completed++; return m_eap_fast_completion_status; -} - -//-------------------------------------------------- + } eap_status_e eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL(eap_status_e status) -{ + { EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL"))); if (status == eap_status_ok && (m_new_references_and_data_blocks.get_object_count()>0)) @@ -10157,8 +9920,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10176,8 +9938,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10192,8 +9953,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10210,8 +9970,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10238,8 +9997,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10257,8 +10015,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10273,8 +10030,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10291,8 +10047,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10320,8 +10075,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10339,8 +10093,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10355,8 +10108,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10373,8 +10125,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL:status nok"))); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10409,7 +10160,7 @@ EAP_TRACE_DEBUG_SYMBIAN( (_L("eap_am_type_tls_peap_symbian_c::FinalCompleteReadPACStoreDataL Reset Done"))); - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_ready_references_and_data_blocks); @@ -10421,8 +10172,7 @@ m_eap_fast_completion_status = eap_status_user_cancel_authentication; m_new_references_and_data_blocks.reset(); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10435,8 +10185,7 @@ m_eap_fast_completion_status = eap_status_user_cancel_authentication; m_new_references_and_data_blocks.reset(); m_ready_references_and_data_blocks.reset(); - - status = m_tls_application->complete_read_PAC_store_data( + eap_status_e status = m_tls_application->complete_read_PAC_store_data( m_eap_fast_completion_status, m_eap_fast_pac_store_pending_operation, &m_references_and_data_blocks); @@ -10458,7 +10207,7 @@ //-------------------------------------------------- eap_status_e eap_am_type_tls_peap_symbian_c::CompleteFilePasswordQueryL() -{ + { eap_fast_pac_store_data_c * const new_data = new eap_fast_pac_store_data_c(m_am_tools); eap_automatic_variable_c automatic_new_data( @@ -10520,48 +10269,122 @@ m_both_completed++; return m_eap_fast_completion_status; -} + } + +// --------------------------------------------------------- +// eap_am_type_tls_peap_symbian_c::CompleteNotifier +// --------------------------------------------------------- +// +eap_status_e eap_am_type_tls_peap_symbian_c::CompleteNotifierL() + { + eap_status_e status( eap_status_ok ); + switch ( m_state ) + { + case EPasswordCancel: + case EPasswordQuery: + case EWrongPassword: + case EFilePasswordQuery: + case EMasterkeyQuery: + { + EAP_TRACE_DEBUG_SYMBIAN( + (_L("m_notifier_data_pckg_from_user"), + m_notifier_data_pckg_from_user->Ptr(), + m_notifier_data_pckg_from_user->Size())); + if ( iStatus.Int() == KErrCancel ) + { + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::CompleteNotifierL - User cancelled the notifier item"))); + m_userAction = EEapFastNotifierUserActionCancel; + } + else if( iStatus.Int() != KErrNone ) + { + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::CompleteNotifierL - ERROR: Notifier error=%d"), + iStatus.Int())); + return m_am_tools->convert_am_error_to_eapol_error(iStatus.Int()); + } + EAP_TRACE_DEBUG_SYMBIAN( + (_L("CompleteNotifierL - Notifier return UiItem=%d, UserAction=%d"), + m_notifier_data_from_user->iEapFastNotifierUiItem, + m_notifier_data_from_user->iEapFastNotifierUserAction)); + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("CompleteNotifierL:UserInput:", + m_notifier_data_from_user->iEapFastNotifierBuffer.Ptr(), + m_notifier_data_from_user->iEapFastNotifierBuffer.Size())); + + if ( m_notifier_data_from_user->iEapFastNotifierBuffer.Size() > 0 ) + { + HBufC8* notifier_data8 = HBufC8::NewLC(m_notifier_data_from_user->iEapFastNotifierBuffer.Size()); + TPtr8 notifier_dataPtr8 = notifier_data8->Des(); + + notifier_dataPtr8.Copy(m_notifier_data_from_user->iEapFastNotifierBuffer); // Unicode -> ascii. + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::CompleteNotifierL ShowNotifierItem - Data copy done"))); + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("eap_am_type_tls_peap_symbian_c::CompleteNotifierL ShowNotifierItem:PW from UI (8bits)", + notifier_dataPtr8.Ptr(), + notifier_dataPtr8.Size())); + + status = m_userResponse.set_copy_of_buffer( + notifier_dataPtr8.Ptr(), + notifier_dataPtr8.Size()); + + CleanupStack::PopAndDestroy( notifier_data8 ); + } + break; + } + default: + { + EAP_TRACE_DEBUG_SYMBIAN( + ( _L( "eap_am_type_tls_peap_symbian_c::CompleteNotifierL() m_state = %d not supported." ), + m_state ) ); + } + } + return status; + } //-------------------------------------------------- void eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL(const TDesC16& aFromUnicode, TDes8& aToAscii) -{ - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL:From TEXT", - aFromUnicode.Ptr(), - aFromUnicode.Size())); - - if(aFromUnicode.Length() <= 0) - { + { + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL:From TEXT", + aFromUnicode.Ptr(), + aFromUnicode.Size())); + + if(aFromUnicode.Length() <= 0) + { + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL: Return: NOTHING TO CONVERT"))); + + return; + } + EAP_TRACE_DEBUG_SYMBIAN( - (_L("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL: Return: NOTHING TO CONVERT"))); - - return; - } - - EAP_TRACE_DEBUG_SYMBIAN( - (_L("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL, aFromUnicode.Length=%d, aFromUnicode.Size=%d"), - aFromUnicode.Length(), aFromUnicode.Size())); - - // Convert from Unicode to ascii. - HBufC8* aFromUnicodeBuf8 = HBufC8::NewLC(aFromUnicode.Length()); // Half times size of source (or length) is enough here. - TPtr8 aFromUnicodePtr8 = aFromUnicodeBuf8->Des(); - - EAP_TRACE_DEBUG_SYMBIAN( - (_L("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL, aFromUnicodePtr8.Length=%d, aFromUnicodePtr8.Size=%d, aFromUnicodePtr8.MaxLength=%d, aFromUnicodePtr8.MaxSize=%d"), - aFromUnicodePtr8.Length(), aFromUnicodePtr8.Size(), aFromUnicodePtr8.MaxLength(), aFromUnicodePtr8.MaxSize())); - - aFromUnicodePtr8.Copy(aFromUnicode); // Unicode -> ascii. - - aToAscii = aFromUnicodePtr8; - - CleanupStack::PopAndDestroy(aFromUnicodeBuf8); // Delete aFromUnicodeBuf8. - - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL:To ASCII", - aToAscii.Ptr(), - aToAscii.Size())); -} + (_L("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL, aFromUnicode.Length=%d, aFromUnicode.Size=%d"), + aFromUnicode.Length(), aFromUnicode.Size())); + + // Convert from Unicode to ascii. + HBufC8* aFromUnicodeBuf8 = HBufC8::NewLC(aFromUnicode.Length()); // Half times size of source (or length) is enough here. + TPtr8 aFromUnicodePtr8 = aFromUnicodeBuf8->Des(); + + EAP_TRACE_DEBUG_SYMBIAN( + (_L("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL, aFromUnicodePtr8.Length=%d, aFromUnicodePtr8.Size=%d, aFromUnicodePtr8.MaxLength=%d, aFromUnicodePtr8.MaxSize=%d"), + aFromUnicodePtr8.Length(), aFromUnicodePtr8.Size(), aFromUnicodePtr8.MaxLength(), aFromUnicodePtr8.MaxSize())); + + aFromUnicodePtr8.Copy(aFromUnicode); // Unicode -> ascii. + + aToAscii = aFromUnicodePtr8; + + CleanupStack::PopAndDestroy(aFromUnicodeBuf8); // Delete aFromUnicodeBuf8. + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("eap_am_type_tls_peap_symbian_c::ConvertUnicodeToAsciiL:To ASCII", + aToAscii.Ptr(), + aToAscii.Size())); + } // --------------------------------------------------------- @@ -10569,7 +10392,7 @@ // --------------------------------------------------------- // void eap_am_type_tls_peap_symbian_c::CheckPasswordTimeValidityL() -{ + { /* Check validity of password against timelimit */ EAP_TRACE_DEBUG(m_am_tools, @@ -10582,22 +10405,14 @@ // get max session time HBufC* buf = HBufC::NewLC( KMaxSqlQueryLength ); TPtr sqlStatement = buf->Des(); - - _LIT( KSqlQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d" ); - + _LIT( KSqlQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d" ); sqlStatement.Format( KSqlQuery, &cf_str_EAP_FAST_max_session_validity_time_literal, &KFastGeneralSettingsDBTableName, - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); - + &KServiceType, m_index_type, + &KServiceIndex, m_index, + &KTunnelingType, m_tunneling_vendor_type ); TRAPD( err, maxSessionTime = ReadIntDbValueL( m_database, cf_str_EAP_FAST_max_session_validity_time_literal, @@ -10771,7 +10586,7 @@ } } -} // eap_am_type_tls_peap_symbian_c::CheckPasswordTimeValidityL() + } // eap_am_type_tls_peap_symbian_c::CheckPasswordTimeValidityL() // --------------------------------------------------------- @@ -10784,7 +10599,7 @@ const TDesC& aTableName, const TDesC& aColumnName, const TDesC& aColumnDef ) -{ + { EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL( "eap_am_type_tls_peap_symbian_c::AlterTableL() IN\n" ) ) ); @@ -10860,7 +10675,7 @@ EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL( "eap_am_type_tls_peap_symbian_c::AlterTableL() OUT\n" ) ) ); -} // eap_am_type_tls_peap_symbian_c::AlterTableL() + } // eap_am_type_tls_peap_symbian_c::AlterTableL() // --------------------------------------------------------- @@ -10868,7 +10683,7 @@ // --------------------------------------------------------- // void eap_am_type_tls_peap_symbian_c::FixOldTablesForPwdIdentityTimeL() -{ + { EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL( "eap_am_type_tls_peap_symbian_c::FixOldTablesForPwdIdentityTimeL() IN" ) ) ); @@ -10901,7 +10716,7 @@ EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL( "eap_am_type_tls_peap_symbian_c::FixOldTablesForPwdIdentityTimeL() OUT" ) ) ); -} // eap_am_type_tls_peap_symbian_c::FixOldTablesForPwdIdentityTimeL() + } // eap_am_type_tls_peap_symbian_c::FixOldTablesForPwdIdentityTimeL() // --------------------------------------------------------- @@ -10909,7 +10724,7 @@ // --------------------------------------------------------- // void eap_am_type_tls_peap_symbian_c::FixOldTableForPacStoreInitL() -{ + { EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL( "eap_am_type_tls_peap_symbian_c::FixOldTableForPacStoreInitL() IN\n" ) ) ); @@ -10937,7 +10752,7 @@ EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL( "eap_am_type_tls_peap_symbian_c::FixOldTableForPacStoreInitL() OUT\n" ) ) ); -} // eap_am_type_tls_peap_symbian_c::FixOldTableForPacStoreInitL() + } // eap_am_type_tls_peap_symbian_c::FixOldTableForPacStoreInitL() // --------------------------------------------------------- @@ -10948,7 +10763,7 @@ RDbNamedDatabase& aDb, const TDesC& aColumnName, const TDesC& aSqlStatement ) -{ + { EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, ( EAPL( "eap_am_type_tls_peap_symbian_c::ReadIntDbValueL()\n" ) ) ); TPtrC columnName; @@ -10977,7 +10792,7 @@ CleanupStack::PopAndDestroy( &view ); // Close view. return retVal; -} // eap_am_type_tls_peap_symbian_c::ReadIntDbValueL + } // eap_am_type_tls_peap_symbian_c::ReadIntDbValueL // --------------------------------------------------------- @@ -10985,7 +10800,7 @@ // --------------------------------------------------------- // void eap_am_type_tls_peap_symbian_c::UpdatePasswordTimeL() -{ + { /* update last password time */ TPtrC lastFullPasswordTimeString; @@ -11036,7 +10851,7 @@ EAPL("UpdatePasswordTimeL - evaluate view\n"))); User::LeaveIfError(view.EvaluateAll()); - // Get the first (and only) row. + // Get the first (and only) row for updation. view.FirstL(); view.UpdateL(); @@ -11071,12 +10886,11 @@ /* update end */ -} // eap_am_type_tls_peap_symbian_c::UpdatePasswordTimeL() - -//-------------------------------------------------- + } // eap_am_type_tls_peap_symbian_c::UpdatePasswordTimeL() + eap_status_e eap_am_type_tls_peap_symbian_c::CreateMasterkeyL() -{ + { HBufC8* password = HBufC8::NewLC(m_userResponse.get_data_length()); TPtr8 passwordPtr = password->Des(); m_PAC_store_password.set_copy_of_buffer(&m_userResponse); @@ -11084,8 +10898,7 @@ m_eap_fast_completion_status = m_am_tools->convert_am_error_to_eapol_error(iPacStoreDb->CreateAndSaveMasterKeyL(passwordPtr)); CleanupStack::PopAndDestroy(password); return m_eap_fast_completion_status; -} - + } #endif //#if defined(USE_FAST_EAP_TYPE) @@ -11096,9 +10909,10 @@ // eap_am_type_tls_peap_symbian_c::is_ttls_pap_session_valid() // ------------------------------------------------------------------------ // -EAP_FUNC_EXPORT bool eap_am_type_tls_peap_symbian_c::is_ttls_pap_session_valid() -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::is_ttls_pap_session_valid()" ))); +EAP_FUNC_EXPORT +bool eap_am_type_tls_peap_symbian_c::is_ttls_pap_session_valid() + { + DEBUG( "eap_am_type_tls_peap_symbian_c::is_ttls_pap_session_valid()" ); TBool isValid = EFalse; TInt err = KErrNone; @@ -11107,7 +10921,8 @@ TRAP( err, isValid = IsTtlsPapSessionValidL() ); if ( err != KErrNone ) { - EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: eap_am_type_tls_peap_symbian_c::is_ttls_pap_session_valid(): Leave, err==%d."), err )); + DEBUG1( "eap_am_type_tls_peap_symbian_c::is_ttls_pap_session_valid() ERROR: \ + Leave, err==%d.", err ); retVal = false; } else @@ -11115,140 +10930,48 @@ retVal = ( isValid ) ? true : false; } return retVal; -} + } // ------------------------------------------------------------------------ // eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password() // ------------------------------------------------------------------------ // -EAP_FUNC_EXPORT eap_status_e eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password( +EAP_FUNC_EXPORT eap_status_e +eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password( const eap_variable_data_c * const aInSrvChallengeUtf8 ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password()" ))); - - eap_status_e status( eap_status_pending_request ); - TEapExpandedType aEapType(*EapExpandedTypeTtlsPap.GetType()); - - m_notifier_data_to_user->iUsername.Zero(); - m_notifier_data_to_user->iPassword.Zero(); - m_notifier_data_to_user->iUidata.Zero(); - - if ((aInSrvChallengeUtf8 != NULL) && (aInSrvChallengeUtf8->get_data_length() != 0)) - { - const TPtrC8 utf8( - aInSrvChallengeUtf8->get_data(), - aInSrvChallengeUtf8->get_data_length()*2); // Length in bytes - - CnvUtfConverter::ConvertToUnicodeFromUtf8(m_notifier_data_to_user->iUidata, utf8); - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password(): iUidata"), - m_notifier_data_to_user->iUidata.Ptr(), - m_notifier_data_to_user->iUidata.Size())); - - m_state = EPapChallenge; - TEapExpandedType aEapType(*EapExpandedTypeTtlsPap.GetType()); - - if (iEapAuthNotifier == 0) - { - TRAPD(err, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (err) - { - return eap_status_process_general_error; - } - } - - TRAPD(err1, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypePapChallengeDialog, m_notifier_data_to_user, aEapType)); - if (err1) - { - return eap_status_process_general_error; - } - } - else - { - m_state = EPapUserNameAndPassword; - - TTtlsPapDbInfo aInDbInfo; - TRAPD(err2, ReadTtlsPapDbL(aInDbInfo)); - if (err2) - { - return eap_status_process_general_error; - } - - m_notifier_data_to_user->iPasswordPromptEnabled = aInDbInfo.iUsrPwdInfo.iPasswordPromptEnabled; - - if (m_notifier_data_to_user->iPasswordPromptEnabled - || aInDbInfo.iUsrPwdInfo.iUserName.Size() == 0 - || aInDbInfo.iUsrPwdInfo.iPassword.Size() == 0) - { - if (aInDbInfo.iUsrPwdInfo.iUserName.Size() == 0) - { - m_notifier_data_to_user->iUsername.Zero(); - } - else - { - m_notifier_data_to_user->iUsername = aInDbInfo.iUsrPwdInfo.iUserName; - } - - m_notifier_data_to_user->iPassword.Zero(); - - TRAPD(err3,SetTtlsPapColumnToNullL( cf_str_EAP_TLS_PEAP_ttls_pap_password_literal )); - if (err3) - { - return eap_status_process_general_error; - } - - if (iEapAuthNotifier == 0) - { - TRAPD(err4, iEapAuthNotifier = CEapAuthNotifier::NewL( *this )); - if (err4) - { - return eap_status_process_general_error; - } - } - else - { - TRAPD(err5,iEapAuthNotifier->Cancel()); - if (err5) - { - return eap_status_process_general_error; - } - } - - TRAPD(err6, iEapAuthNotifier->StartL(CEapAuthNotifier::EEapNotifierTypePapUsernamePasswordDialog, m_notifier_data_to_user, aEapType)); - if (err6) - { - return eap_status_process_general_error; - } - } - else - { - m_notifier_data_to_user->iUsername = aInDbInfo.iUsrPwdInfo.iUserName; - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password(): iUserName"), - m_notifier_data_to_user->iUsername.Ptr(), - m_notifier_data_to_user->iUsername.Size())); - - m_notifier_data_to_user->iPassword = aInDbInfo.iUsrPwdInfo.iPassword; - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password(): iPassword"), - m_notifier_data_to_user->iPassword.Ptr(), - m_notifier_data_to_user->iPassword.Size())); - - DlgComplete(KErrNone); - } - } - + { + DEBUG( "eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password()" ); + + eap_status_e status( eap_status_pending_request ); + + if ( !iEapTtlsPapActive ) + { + TRAPD( err, iEapTtlsPapActive = CEapTtlsPapActive::NewL( + this, m_am_tools ) ); + if ( err != KErrNone ) + { + DEBUG1( "eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password() \ + ERROR: CEapTtlsPapActive::NewL(), err=%d.", err ); + return ConvertAmErrorToEapolError( err ); + } + } + if ( aInSrvChallengeUtf8 != NULL ) + { + iEapTtlsPapActive->UpdateSrvChallenge( *aInSrvChallengeUtf8 ); + } + TBool startedOk = iEapTtlsPapActive->Start( + CEapTtlsPapActive::EEapTtlsPapActiveQueryUserNameAndPassword ); + if ( !startedOk ) + { + status = eap_status_process_general_error; + } + if ( status != eap_status_pending_request ) + { + DEBUG( "eap_am_type_tls_peap_symbian_c::query_ttls_pap_username_and_password() \ + ERROR: status != eap_status_pending_request" ); + } return status; -} + } // ================= TTLS-PAP public not exported ======================= @@ -11256,13 +10979,14 @@ // eap_am_type_tls_peap_symbian_c::verify_ttls_pap_username_and_password() // ------------------------------------------------------------------------ // -eap_status_e eap_am_type_tls_peap_symbian_c::verify_ttls_pap_username_and_password( +eap_status_e +eap_am_type_tls_peap_symbian_c::verify_ttls_pap_username_and_password( const eap_variable_data_c * const /*aUserName*/, const eap_variable_data_c * const /*aUserPassword*/ ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::verify_ttls_pap_username_and_password()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::verify_ttls_pap_username_and_password()" ); return eap_status_not_supported; -} + } // ================= TTLS-PAP public new ======================= @@ -11270,12 +10994,13 @@ // eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword() // ------------------------------------------------------------------------ // -eap_status_e eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword( +eap_status_e +eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword( eap_status_e aStatus, const TDesC8& aUserNameUtf8, const TDesC8& aPasswordUtf8 ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword()" ); eap_status_e retStatus = aStatus; eap_status_e tmpStatus = eap_status_ok; @@ -11297,14 +11022,15 @@ } if ( m_tls_am_partner == NULL ) { - EAP_TRACE_DEBUG_SYMBIAN((_L( "ERROR: eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword(): m_tls_am_partner is NULL." ))); + DEBUG( "eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword() \ + ERROR: m_tls_am_partner is NULL." ); return eap_status_process_general_error; } retStatus = m_tls_am_partner-> complete_query_ttls_pap_username_and_password( &userNameUtf8, &passwordUtf8, retStatus ); return retStatus; -} // eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword( + } // eap_am_type_tls_peap_symbian_c::CompleteQueryTtlsPapUserNameAndPassword( // ------------------------------------------------------------------------ @@ -11313,14 +11039,14 @@ // eap_status_e eap_am_type_tls_peap_symbian_c::ConvertAmErrorToEapolError( TInt aErr ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::ConvertAmErrorToEapolError()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::ConvertAmErrorToEapolError()" ); if ( m_am_tools ) { return m_am_tools->convert_am_error_to_eapol_error( aErr ); } return eap_status_process_general_error; -} + } // ------------------------------------------------------------------------ @@ -11334,8 +11060,8 @@ //| EAP_TLS_PEAP_ttls_pap_last_full_authentication_time | BIGINT | KTTLSPAPLastFullAuthTime |// void eap_am_type_tls_peap_symbian_c::ReadTtlsPapDbL( TTtlsPapDbInfo& aOutDbInfo ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::ReadTtlsPapDbL()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::ReadTtlsPapDbL()" ); HBufC* buf = HBufC::NewLC( KMaxSqlQueryLength ); TPtr sqlStatement = buf->Des(); @@ -11372,35 +11098,12 @@ // columns reading aOutDbInfo.iUsrPwdInfo.iPasswordPromptEnabled = view.ColUint( colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_password_prompt_literal ) ); - - { - TPtrC username = view.ColDes( - colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_username_literal ) ); - - aOutDbInfo.iUsrPwdInfo.iUserName.Copy(username); - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::ReadTtlsPapDbL(): iUserName"), - aOutDbInfo.iUsrPwdInfo.iUserName.Ptr(), - aOutDbInfo.iUsrPwdInfo.iUserName.Size())); - } - - { - TPtrC password = view.ColDes( - colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_password_literal ) ); - - aOutDbInfo.iUsrPwdInfo.iPassword.Copy(password); - - - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL("eap_am_type_tls_peap_symbian_c::ReadTtlsPapDbL(): iPassword"), - aOutDbInfo.iUsrPwdInfo.iPassword.Ptr(), - aOutDbInfo.iUsrPwdInfo.iPassword.Size())); - } + + aOutDbInfo.iUsrPwdInfo.iUserName = view.ColDes( + colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_username_literal ) ); + + aOutDbInfo.iUsrPwdInfo.iPassword = view.ColDes( + colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_password_literal ) ); aOutDbInfo.iMaxSessionTime = view.ColInt64( colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_max_session_validity_time_literal ) ); @@ -11413,7 +11116,7 @@ CleanupStack::PopAndDestroy( &view ); // Close view. CleanupStack::PopAndDestroy( buf ); // Delete buf. -} // eap_am_type_tls_peap_symbian_c::ReadTtlsPapDbL() + } // eap_am_type_tls_peap_symbian_c::ReadTtlsPapDbL() // ------------------------------------------------------------------------ @@ -11427,8 +11130,8 @@ //| EAP_TLS_PEAP_ttls_pap_last_full_authentication_time | BIGINT | KTTLSPAPLastFullAuthTime |// void eap_am_type_tls_peap_symbian_c::WriteTtlsPapDbL( const TTtlsPapDbInfo& aInDbInfo ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::WriteTtlsPapDbL()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::WriteTtlsPapDbL()" ); HBufC* buf = HBufC::NewLC( KMaxSqlQueryLength ); @@ -11436,24 +11139,17 @@ // Query all the relevant parameters _LIT( KSQLQuery, - "SELECT %S, %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d" ); - - sqlStatement.Format( - KSQLQuery, + "SELECT %S, %S, %S, %S, %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d" ); + sqlStatement.Format( KSQLQuery, &cf_str_EAP_TLS_PEAP_ttls_pap_password_prompt_literal, // select´ &cf_str_EAP_TLS_PEAP_ttls_pap_username_literal, // select &cf_str_EAP_TLS_PEAP_ttls_pap_password_literal, // select &cf_str_EAP_TLS_PEAP_ttls_pap_max_session_validity_time_literal, // select &KTTLSPAPLastFullAuthTime, // select &KTtlsDatabaseTableName, // from - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + &KServiceType, m_index_type, // where %S=%d + &KServiceIndex, m_index, // where %S=%d + &KTunnelingType, m_tunneling_vendor_type ); // where %S=%d RDbView view; // Evaluate view @@ -11475,24 +11171,10 @@ cf_str_EAP_TLS_PEAP_ttls_pap_password_prompt_literal ), aInDbInfo.iUsrPwdInfo.iPasswordPromptEnabled ); - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL( "eap_am_type_tls_peap_symbian_c::WriteTtlsPapDbL(): iUserName" ), - aInDbInfo.iUsrPwdInfo.iUserName.Ptr(), - aInDbInfo.iUsrPwdInfo.iUserName.Size() ) ); - view.SetColL( colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_username_literal ), aInDbInfo.iUsrPwdInfo.iUserName ); - EAP_TRACE_DATA_DEBUG( - m_am_tools, - TRACE_FLAGS_DEFAULT, - (EAPL( "eap_am_type_tls_peap_symbian_c::WriteTtlsPapDbL(): iPassword" ), - aInDbInfo.iUsrPwdInfo.iPassword.Ptr(), - aInDbInfo.iUsrPwdInfo.iPassword.Size() ) ); - view.SetColL( colSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_password_literal ), aInDbInfo.iUsrPwdInfo.iPassword ); @@ -11513,7 +11195,7 @@ CleanupStack::PopAndDestroy( &view ); // Close view. CleanupStack::PopAndDestroy( buf ); // Delete buf. -} // eap_am_type_tls_peap_symbian_c::WriteTtlsPapDbL() + } // eap_am_type_tls_peap_symbian_c::WriteTtlsPapDbL() // ------------------------------------------------------------------------ @@ -11521,28 +11203,21 @@ // ------------------------------------------------------------------------ // void eap_am_type_tls_peap_symbian_c::SetTtlsPapColumnToNullL( const TDesC& aColName ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::SetColumnNullL()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::SetColumnNullL()" ); HBufC* buf = HBufC::NewLC( KMaxSqlQueryLength ); TPtr sqlStatement = buf->Des(); // Query all the relevant parameters _LIT( KSQLQuery, - "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d" ); - - sqlStatement.Format( - KSQLQuery, + "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d" ); + sqlStatement.Format( KSQLQuery, &aColName, // select´ &KTtlsDatabaseTableName, // from - &KServiceType, - m_index_type, - &KServiceIndex, - m_index, - &KTunnelingTypeVendorId, - m_tunneling_type.get_vendor_id(), - &KTunnelingType, - m_tunneling_type.get_vendor_type()); + &KServiceType, m_index_type, // where %S=%d + &KServiceIndex, m_index, // where %S=%d + &KTunnelingType, m_tunneling_vendor_type ); // where %S=%d RDbView view; // Evaluate view @@ -11570,7 +11245,7 @@ CleanupStack::PopAndDestroy( &view ); // Close view. CleanupStack::PopAndDestroy( buf ); // Delete buf. -} // eap_am_type_tls_peap_symbian_c::SetTtlsPapColumnToNullL() + } // eap_am_type_tls_peap_symbian_c::SetTtlsPapColumnToNullL() // ================= TTLS-PAP private ======================= @@ -11580,8 +11255,8 @@ // ------------------------------------------------------------------------ // TBool eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL() -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL()" ); TTtlsPapDbInfo dbInfo; TInt err = KErrNone; @@ -11591,7 +11266,8 @@ if ( err != KErrNone ) { - EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL(): Leave happened, err=%d."), err )); + DEBUG1( "eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL() ERROR: \ + Leave happened, err=%d.", err ); retValue = EFalse; } else @@ -11602,7 +11278,8 @@ // one read from configuration file. if( dbInfo.iMaxSessionTime == 0 ) { - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL() Using max TTLS PAP session validity time from config file." ))); + DEBUG( "eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL() \ + Using max TTLS PAP session validity time from config file." ); // use value from config file dbInfo.iMaxSessionTime = iEapTtlsPapMaxSessionConfigTime; @@ -11613,7 +11290,7 @@ } } return retValue; -} // eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL() + } // eap_am_type_tls_peap_symbian_c::IsTtlsPapSessionValidL() // ------------------------------------------------------------------------ @@ -11623,8 +11300,8 @@ TBool eap_am_type_tls_peap_symbian_c::CheckTtlsPapSessionValidity( const TInt64& aInMaxSessionTime, const TInt64& aInLastFullAuthTime ) -{ - EAP_TRACE_DEBUG_SYMBIAN((_L( "eap_am_type_tls_peap_symbian_c::CheckTtlsPapSessionValidity()" ))); + { + DEBUG( "eap_am_type_tls_peap_symbian_c::CheckTtlsPapSessionValidity()" ); // Get the current time. TTime currentTime; @@ -11694,93 +11371,7 @@ return EFalse; } -} // eap_am_type_tls_peap_symbian_c::CheckTtlsPapSessionValidity - -//-------------------------------------------------- -#if defined(USE_FAST_EAP_TYPE) - -TInt eap_am_type_tls_peap_symbian_c::CreateMMETelConnectionL() -{ - EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Creating MMETel connection.\n"))); - - TInt errorCode = KErrNone; - - // MMETel need to be connected only once. - if( !iMMETELConnectionStatus ) - { - RTelServer::TPhoneInfo phoneInfo; - TInt phoneCount = 0; - - // Connect to ETel server - User::LeaveIfError( iServer.Connect() ); - - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Connected to ETel server.\n"))); - - // This function loads an ETel TSY module, mmtsy. - errorCode = iServer.LoadPhoneModule( KMmTsyModuleName ); - - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Loaded phone module.\n"))); - - if ( errorCode != KErrNone && errorCode != KErrAlreadyExists ) - { - User::Leave( errorCode ); - } - - iServer.SetExtendedErrorGranularity( RTelServer::EErrorExtended ); - - // This function retrieves the total number of phones supported by all - // the currently loaded ETel (TSY) modules. - User::LeaveIfError( iServer.EnumeratePhones( phoneCount ) ); - - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Number of phones supported by the loaded ETel = %d.\n"), phoneCount)); - - // This function retrieves information associated with the specified phone - while ( ( phoneCount-- ) && ( phoneInfo.iName != KMmTsyPhoneName ) ) - { - User::LeaveIfError( iServer.GetPhoneInfo( phoneCount, phoneInfo ) ); - - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Got phone info.\n"))); - } - - // This function opens a phone subsession by name. ("DefaultPhone"). - User::LeaveIfError( iPhone.Open( iServer, phoneInfo.iName ) ); - - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Opened phone subsession.\n"))); - - // MMETel connected and the phone module loaded fine. - iMMETELConnectionStatus = ETrue; - } - else - { - // MMETel already connected. - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("MMETel connected once already.\n"))); - } - - EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); - - return errorCode; -} - -//-------------------------------------------------- - -void eap_am_type_tls_peap_symbian_c::DisconnectMMETel() -{ - if( iMMETELConnectionStatus ) - { - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("Closing RMobilePhone and MMETEL.\n"))); - - iPhone.Close(); - iServer.Close(); // Phone module is unloaded automatically when RTelServer session is closed - - iMMETELConnectionStatus = EFalse; - } - else - { - EAP_TRACE_DEBUG(m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("RMobilePhone and MMETEL already closed.\n"))); - } -} -#endif -//-------------------------------------------------- + } // eap_am_type_tls_peap_symbian_c::CheckTtlsPapSessionValidity + // End of file.