--- 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 <asn1enc.h>
#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 <utf.h>
-
+
+#include "eap_ttls_pap_active.h"
#ifdef USE_PAC_STORE
- #include "pac_store_db_symbian.h"
- #include <f32file.h>
+#include "pac_store_db_symbian.h"
+#include <f32file.h>
#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 <mmtsy_names.h>
-
-
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<TUint>(m_tunneling_type);
+ m_current_eap_vendor_type = static_cast<TUint>(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<CEapAuthNotifier::TEapDialogInfo> (*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<TEapFastNotifierStruct> (*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<TEapFastNotifierStruct> (*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<KMaxNotifItemLength> userNameUtf8;
- TBuf8<KMaxUiDataLength> 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<KMaxNotifItemLength> userNameUtf8;
- TBuf8<KMaxNotifItemLength> 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<KIdentityFieldLength> 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<KMaxDeviceSeedLength> deviceSeed16;
- deviceSeed16 += iDeviceId.iManufacturer;
- deviceSeed16 += iDeviceId.iModel;
- deviceSeed16 += iDeviceId.iSerialNumber;
-
- TBuf8<KMaxDeviceSeedSize> 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<u32_t *>(
- 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<eap_type_value_e>(
+ *reinterpret_cast<u32_t *>(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<CX509Certificate>& 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<CX509Certificate>& 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<KExpandedEAPTypeSize> 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<u8_t *>(&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<u16_t> * 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<u16_t> 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<u8_t> 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<eap_variable_data_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<u32_t *>(
- 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<eap_am_file_input_symbian_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<u32_t *>(
+ 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<EapCertificateEntry>& aMatchingCerts,
+ CArrayFixFlat<SCertEntry>& 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<eap_variable_data_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<KExpandedEAPTypeSize> 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<eap_type_value_e> 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<eap_type_ietf_values_e>(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<eap_fast_pac_store_data_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<eap_fast_pac_store_data_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<eap_fast_pac_store_data_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.