diff -r bad0cc58d154 -r c74b3d9f6b9e securitysettings/qtconfigutils/eapqtconfiginterface/src/eapqtconfiginterface_p.cpp --- a/securitysettings/qtconfigutils/eapqtconfiginterface/src/eapqtconfiginterface_p.cpp Tue Aug 31 15:16:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1934 +0,0 @@ -/* - * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: - * EAP method configuration QT interface - * - */ - -/* - * %version: 52 % - */ - -// System includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// User includes -#include "cpeapplugininterface.h" -#include "eapqtconfiginterface_p.h" -#include "eapqtvalidatorpassword.h" -#include "eapqtvalidatorusername.h" -#include "eapqtvalidatorrealm.h" -#include "eapqtvalidatorpacstorepassword.h" -#include "eapqtvalidatorpacstorepasswordconfirm.h" - -/*! - * \class EapQtConfigInterfacePrivate - * \brief Private implementation of EAP QT configuration interface - */ - -// External function prototypes - -// Local constants -static const QString eapTranslationFile("cpeapuiplugins"); - -// ======== LOCAL FUNCTIONS ======== - -// ======== MEMBER FUNCTIONS ======== - -EapQtConfigInterfacePrivate::EapQtConfigInterfacePrivate() : - mValidatorInstance(true), - mLastOuterHandle(EapQtPluginHandle::PluginUndefined), - mTranslator(NULL), - mEapGsIf(NULL), - mEapTypeIf(NULL), - mIapId(0), - mEapBearer(ELan), - mEapDbIndex(EapQtConfigInterface::IapIdUndefined), - mEapDbIndexValid(false) -{ - qDebug("EapQtConfigInterfacePrivate() - created validator instance, this = 0x%08x", this); -} - -EapQtConfigInterfacePrivate::EapQtConfigInterfacePrivate( - const EapQtConfigInterface::EapBearerType bearerType, const int iapId) : - mValidatorInstance(false), - mLastOuterHandle(EapQtPluginHandle::PluginUndefined), - mTranslator(NULL), - mEapGsIf(NULL), - mEapTypeIf(NULL), - mIapId(iapId), - mEapBearer(ELan), - mEapDbIndex(EapQtConfigInterface::IapIdUndefined), - mEapDbIndexValid(false) -{ - qDebug("EapQtConfigInterfacePrivate() - creating non-validator instance, this = 0x%08x", this); - - switch (bearerType) { - case EapQtConfigInterface::EapBearerTypeVpn: - mEapBearer = EVpn; - break; - default: - // All others default to EapQtConfigInterface::EapBearerTypeWlan i.e. ELan - mEapBearer = ELan; - } - - if (!setEapDbIndex(iapId)) { - qDebug("ERROR: EapQtConfigInterfacePrivate() - setIapId failed, bearer = %d, index = %d", - mEapBearer, iapId); - shutdown(); - // throw an exception - qt_symbian_throwIfError(KErrNotFound); - } - - // load plugins after everything else is ok - qDebug("EapQtConfigInterfacePrivate() - load plugins"); - loadPlugins(); - - qDebug("EapQtConfigInterfacePrivate() - ends"); -} - -EapQtConfigInterfacePrivate::~EapQtConfigInterfacePrivate() -{ - qDebug("EapQtConfigInterfacePrivate::~EapQtConfigInterfacePrivate(), this = 0x%08x", this); - - shutdown(); -} - -void EapQtConfigInterfacePrivate::shutdown() -{ - qDebug("EapQtConfigInterfacePrivate::shutdown(), this = 0x%08x", this); - - mOuterEapsOn.Close(); - mOuterEapsOff.Close(); - - // cleanup Ecom - REComSession::FinalClose(); - - // mTranslator gets deleted automatically (QScopedPointer) - // mEapTypeIf gets deleted automatically (QScopedPointer) - // mEapGsIf gets deleted automatically (QScopedPointer) -} - -bool EapQtConfigInterfacePrivate::setConfigurationReference(const int iapId) -{ - qDebug("EapQtConfigInterfacePrivate::setConfigurationReference - requested id: %d, this = 0x%08x", iapId, this); - - checkInstanceThrowing(); - return setEapDbIndex(iapId); -} - -bool EapQtConfigInterfacePrivate::setEapDbIndex(const int iapId) -{ - - qDebug("EapQtConfigInterfacePrivate::setIapId - requested id: %d, this = 0x%08x", iapId, this); - - - // optimization: do not re-create the interface if the reference does - // not change and mEapGsIf exists already - - // WLAN reference is checked after setEapWlanDbIndex below since iapId may be - // different than WLAN service ID - - // case for EapQtConfigInterface::IapIdUndefined i.e. setIapId was called - // with a negative id last time and now again - if (!mEapDbIndexValid && !mEapGsIf.isNull() && iapId < 0) { - qDebug( - "EapQtConfigInterfacePrivate::setIapId - interface created for IapIdUndefined already"); - return true; - } - - // case for VPN (or any other bearer) in which iap id equals EAP db index - if (mEapBearer != ELan && mEapDbIndexValid && !mEapGsIf.isNull() && iapId == mEapDbIndex) { - qDebug( - "EapQtConfigInterfacePrivate::setIapId - interface created for requested IAP ID for VPN already"); - return true; - } - - // save the current id for checking if WLAN reference changes or not - TInt previousEapDbIndex = mEapDbIndex; - bool wlanIndexOk = true; - - // allow accessing certain methods with negative iapId - if (iapId < 0) { - // set to zero to be able to create EAP server instances - mEapDbIndex = 0; - mEapDbIndexValid = false; - } - // for real usage iapId must not be negative - else { - // for VPN - mIapId = iapId; - mEapDbIndex = iapId; - mEapDbIndexValid = true; - - // for WLAN - if (mEapBearer == ELan) { - // get WLAN service ID as the reference - mEapDbIndexValid = setEapWlanDbIndex(iapId); - wlanIndexOk = mEapDbIndexValid; - // do not re-create if the interface is ok for the new (i.e. same) index already - if (!mEapGsIf.isNull() && mEapDbIndex == previousEapDbIndex) { - qDebug() << "EapQtConfigInterfacePrivate::setIapId - interface" - << "created for requested IAP ID for WLAN already"; - return true; - } - - } - } - - // delete possibly existing instances - mEapGsIf.reset(NULL); - mEapTypeIf.reset(NULL); - - mCurrentServerEapType = *EapExpandedTypeNone.GetType(); - mLastOuterHandle = EapQtPluginHandle::PluginUndefined; - - if (!wlanIndexOk && mEapBearer == ELan) { - // setEapWlanDbIndex was called and failed - qDebug("ERROR: EapQtConfigInterfacePrivate::setIapId() - setEapWlanDbIndex failed"); - return false; - } - - qDebug( - "EapQtConfigInterfacePrivate::setIapId() - calls CEapGeneralSettings::NewL(), bearer = %d, index = %d", - mEapBearer, mEapDbIndex); - - // load EAP general settings interface - CEapGeneralSettings* tmp = NULL; - TRAPD(err, tmp = CEapGeneralSettings::NewL(mEapBearer, mEapDbIndex)); - if (err != KErrNone) { - qDebug("ERROR: EapQtConfigInterfacePrivate::setIapId - CEapGeneralSettings::NewL() failed"); - mEapDbIndexValid = false; - return false; - } - - // set to the created instance - mEapGsIf.reset(tmp); - - return true; -} - -bool EapQtConfigInterfacePrivate::setEapWlanDbIndex(const int iapId) -{ - qDebug("EapQtConfigInterfacePrivate::setEapWlanDbIndex - requested id: %d, this = 0x%08x", iapId, this); - - RCmManager cmm; - TRAPD(err, cmm.OpenL()); - if (err != KErrNone) { - qDebug("ERROR: EapQtConfigInterfacePrivate::setEapWlanDbIndex - cmm.OpenL() failed", - mEapBearer, iapId); - mEapDbIndex = EapQtConfigInterface::IapIdUndefined; - mIapId = 0; - return false; - } - - TRAP(err, mEapDbIndex = cmm.GetConnectionMethodInfoIntL(iapId, CMManager::EWlanServiceId)); - if (err != KErrNone) { - qDebug( - "ERROR: EapQtConfigInterfacePrivate::setEapWlanDbIndex - cmm.GetConnectionMethodInfoIntL() failed", - mEapBearer, iapId); - cmm.Close(); - mEapDbIndex = EapQtConfigInterface::IapIdUndefined; - mIapId = 0; - return false; - } - - cmm.Close(); - - qDebug("EapQtConfigInterfacePrivate::setEapWlanDbIndex - obtained WLAN service id: %d", - mEapDbIndex); - - return true; -} - -void EapQtConfigInterfacePrivate::checkInstanceThrowing() const -{ - qDebug() << "EapQtConfigInterfacePrivate::checkInstanceThrowing() - mValidatorInstance:" - << mValidatorInstance; - - if (mValidatorInstance) { - qDebug( - "ERROR: EapQtConfigInterfacePrivate::checkInstanceThrowing - method not supported by this instance"); - qt_symbian_throwIfError(KErrNotSupported); - } -} - -void EapQtConfigInterfacePrivate::appendEapTypes(const RArray* const eapTypes, - QList* const eapList) -{ - qDebug("EapQtConfigInterfacePrivate::appendEapTypes(), this = 0x%08x", this); - - Q_ASSERT(eapTypes); - Q_ASSERT(eapList); - - qDebug("EapQtConfigInterfacePrivate - appendEapTypes, EAP count = %d", eapTypes->Count()); - - QByteArray tmpEap; - for (int ind = 0; ind < eapTypes->Count(); ind++) { - tmpEap.append(reinterpret_cast ((*eapTypes)[ind].GetValue().Ptr()), - (*eapTypes)[ind].GetValue().Length()); - eapList->append(tmpEap); - qDebug() << "EapQtConfigInterfacePrivate - appendEapTypes added EAP: " << tmpEap.toHex(); - tmpEap.clear(); - } -} - -QList EapQtConfigInterfacePrivate::supportedOuterTypes() -{ - qDebug("EapQtConfigInterfacePrivate::supportedOuterTypes(), this = 0x%08x", this); - - checkInstanceThrowing(); - - if (mEapGsIf.isNull()) { - qDebug("ERROR: EapQtConfigInterfacePrivate::supportedOuterTypes() - mEapGsIf is NULL"); - mOuterEapsOn.Reset(); - mOuterEapsOff.Reset(); - // return empty list - mSupportedOuterTypes.clear(); - return mSupportedOuterTypes; - } - - // get outer EAPs from EAP server, - // returned in two lists: enabled and disabled outer EAPs - // do this always as the list might have changed and mOuterEapsOn/Off are needed in - // other methods - - mOuterEapsOn.Reset(); - mOuterEapsOff.Reset(); - - qDebug("EapQtConfigInterfacePrivate::supportedOuterTypes() - calls GetEapMethods()"); - - TUint err = mEapGsIf->GetEapMethods(mOuterEapsOn, mOuterEapsOff); - if (err != KErrNone) { - qDebug("ERROR: EapQtConfigInterfacePrivate::supportedOuterTypes() - GetEapMethods failed"); - mOuterEapsOn.Reset(); - mOuterEapsOff.Reset(); - // return empty list - mSupportedOuterTypes.clear(); - return mSupportedOuterTypes; - } - - // optimization: collect the list only once per instance life time - // since no new EAPs will appear to the combination of mOuterEapsOn and mOuterEapsOff - if (mSupportedOuterTypes.count() > 0) { - qDebug( - "EapQtConfigInterfacePrivate - supportedOuterTypes: supported EAPs already listed, return stored list"); - return mSupportedOuterTypes; - } - - qDebug("EapQtConfigInterfacePrivate - supportedOuterTypes: copy response to QList"); - - // copy response to qlist for easier comparison - QList outerEaps; - - appendEapTypes(&mOuterEapsOn, &outerEaps); - appendEapTypes(&mOuterEapsOff, &outerEaps); - - qDebug("EapQtConfigInterfacePrivate - supportedOuterTypes: EAP server outer type count: %d", - outerEaps.count()); - - qDebug("EapQtConfigInterfacePrivate - supportedOuterTypes: collected UI plugin count: %d", - mPluginInfos.count()); - - // set mSupportedOuterTypes to contain only EAPs that both UI and EAP server support - QByteArray tmpEap; - for (int ind = 0; ind < mPluginInfos.count(); ind++) { - tmpEap = mPluginInfos[ind].pluginHandle().type().eapExpandedData(); - if (outerEaps.contains(tmpEap)) { - mSupportedOuterTypes.append(mPluginInfos[ind]); - qDebug() << "EapQtConfigInterfacePrivate - supportedOuterTypes: appended EAP: " - << tmpEap.toHex(); - } - } - - // sort the list - qSort(mSupportedOuterTypes.begin(), mSupportedOuterTypes.end(), - EapQtConfigInterfacePrivate::pluginLessThan); - - qDebug("EapQtConfigInterfacePrivate - supportedOuterTypes: supported EAP count: %d", - mSupportedOuterTypes.count()); - - return mSupportedOuterTypes; -} - -// checks if UI plugins support supplied eapType and returns the -// index (in mPluginInfos) of the supporting plugin -bool EapQtConfigInterfacePrivate::isUiSupported(const QByteArray &eapType, int &pluginIndex) const -{ - qDebug("EapQtConfigInterfacePrivate::isUiSupported(), this = 0x%08x", this); - - bool ret = false; - for (int ind = 0; ind < mPluginInfos.count(); ind++) { - qDebug("EapQtConfigInterfacePrivate::isUiSupported() - checking index: %d", ind); - pluginIndex = ind; - if (eapType == mPluginInfos[ind].pluginHandle().type().eapExpandedData()) { - qDebug("EapQtConfigInterfacePrivate::isUiSupported() - ui supported!"); - ret = true; - break; - } - } - return ret; -} - -QList EapQtConfigInterfacePrivate::supportedInnerTypes( - const EapQtPluginHandle &outer) -{ - qDebug("EapQtConfigInterfacePrivate::supportedInnerTypes(), this = 0x%08x", this); - - checkInstanceThrowing(); - - // check if we already have up-to-date data - if (mLastOuterHandle == outer) { - return mSupportedInnerTypes; - } - - // clear previous query result - mSupportedInnerTypes.clear(); - mLastOuterHandle = EapQtPluginHandle::PluginUndefined; - - qDebug() - << "EapQtConfigInterfacePrivate::supportedInnerTypes() - calls isSupportedOuterType for: " - << outer.type().eapExpandedData().toHex(); - - // check if the queried outer EAP is supported - if (!isSupportedOuterType(outer)) { - qDebug() - << "ERROR: EapQtConfigInterfacePrivate::supportedInnerTypes() - queried outer type not supported: " - << outer.type().eapExpandedData().toHex(); - // return empty list - return mSupportedInnerTypes; - } - - qDebug("EapQtConfigInterfacePrivate::supportedInnerTypes() - calls getEapTypeIf"); - - // get outer EAP settings interface - getEapTypeIf(outer); - if (mEapTypeIf.isNull()) { - qDebug("ERROR: EapQtConfigInterfacePrivate::supportedInnerTypes() - getEapTypeIf failed"); - // return empty list - return mSupportedInnerTypes; - } - - // get outer EAP settings - EAPSettings eapSettings; - TRAPD(err, mEapTypeIf->GetConfigurationL(eapSettings)); - // getEapTypeIf has set mCurrentServerEapType correctly for comparison - if (err != KErrNone || eapSettings.iEAPExpandedType != mCurrentServerEapType) { - qDebug() - << "ERROR: EapQtConfigInterfacePrivate::supportedInnerTypes - GetConfigurationL failed, code:" - << err; - // clear the instance so that the next attempt starts from scratch - mEapTypeIf.reset(NULL); - // return empty list - return mSupportedInnerTypes; - } - - // store inner EAPs supported by EAP server - QList innerEaps; - appendEapTypes(&(eapSettings.iEnabledEncapsulatedEAPExpandedTypes), &innerEaps); - appendEapTypes(&(eapSettings.iDisabledEncapsulatedEAPExpandedTypes), &innerEaps); - - int pluginIndex = 0; - for (int ind = 0; ind < innerEaps.count(); ind++) { - // report only EAPs which do have an UI plugin - if (isUiSupported(innerEaps[ind], pluginIndex)) { - mSupportedInnerTypes.append(mPluginInfos[pluginIndex]); - qDebug() << "EapQtConfigInterfacePrivate::supportedInnerTypes - added inner EAP: " - << innerEaps[ind].toHex(); - } - } - - mLastOuterHandle = outer; - - // sort the list - qSort(mSupportedInnerTypes.begin(), mSupportedInnerTypes.end(), - EapQtConfigInterfacePrivate::pluginLessThan); - - qDebug("EapQtConfigInterfacePrivate - supportedInnerTypes: supported EAP count: %d", - mSupportedInnerTypes.count()); - - return mSupportedInnerTypes; -} - -void EapQtConfigInterfacePrivate::copyCertificateInfo( - const RPointerArray* const certEntries, - QList* const certInfos) -{ - qDebug("EapQtConfigInterfacePrivate::copyCertificateInfo(), this = 0x%08x", this); - - Q_ASSERT(certEntries); - Q_ASSERT(certInfos); - - certInfos->clear(); - - EapQtCertificateInfo cert; - TKeyIdentifier subjectKeyId; - const TDes* text = 0; - int ind = 0; - - for (ind = 0; ind < certEntries->Count(); ind++) { - - // cleanup cert - cert.clear(); - - EapCertificateEntry* certPtr = (*certEntries)[ind]; - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo *** certificate starts *** "; - - if (certPtr->GetSubjectNamePresent() != EFalse) { - - text = certPtr->GetSubjectName(); - cert.setValue(EapQtCertificateInfo::SubjectName, QString::fromUtf16(text->Ptr(), - text->Length())); - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo SubjectName: " - << QString::fromUtf16(text->Ptr(), text->Length()); - } - if (certPtr->GetIssuerNamePresent() != EFalse) { - - text = certPtr->GetIssuerName(); - cert.setValue(EapQtCertificateInfo::IssuerName, QString::fromUtf16(text->Ptr(), - text->Length())); - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo IssuerName: " - << QString::fromUtf16(text->Ptr(), text->Length()); - } - if (certPtr->GetSerialNumberPresent() != EFalse) { - - text = certPtr->GetSerialNumber(); - cert.setValue(EapQtCertificateInfo::SerialNumber, QString::fromUtf16(text->Ptr(), - text->Length())); - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo SerialNumber: " - << QString::fromUtf16(text->Ptr(), text->Length()); - } - if (certPtr->GetSubjectKeyIdPresent() != EFalse) { - - subjectKeyId = certPtr->GetSubjectKeyId(); - cert.setValue(EapQtCertificateInfo::SubjectKeyId, QByteArray( - reinterpret_cast (subjectKeyId.Ptr()), subjectKeyId.Length())); - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo SubjectKeyId: " - << (QByteArray(reinterpret_cast (subjectKeyId.Ptr()), - subjectKeyId.Length())).toHex(); - } - if (certPtr->GetThumbprintPresent() != EFalse) { - - text = certPtr->GetThumbprint(); - cert.setValue(EapQtCertificateInfo::ThumbPrint, QString::fromUtf16(text->Ptr(), - text->Length())); - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo ThumbPrint: " - << QString::fromUtf16(text->Ptr(), text->Length()); - } - if (certPtr->GetLabelPresent() != EFalse) { - - text = certPtr->GetLabel(); - cert.setValue(EapQtCertificateInfo::CertificateLabel, QString::fromUtf16(text->Ptr(), - text->Length())); - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo CertificateLabel: " - << QString::fromUtf16(text->Ptr(), text->Length()); - } - - qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo *** certificate ends *** "; - - certInfos->append(cert); - - } -} - -bool EapQtConfigInterfacePrivate::fetchCertificates(QList* const caInfos, - QList* const clientInfos) -{ - qDebug("EapQtConfigInterfacePrivate::fetchCertificates(), this = 0x%08x", this); - - Q_ASSERT(caInfos != NULL || clientInfos != NULL); - Q_ASSERT(!mEapGsIf.isNull()); - - TInt err(KErrNone); - RPointerArray clientCerts; - RPointerArray caCerts; - - err = mEapGsIf->GetCertificateLists(clientCerts, caCerts); - if (err != KErrNone) { - qDebug("EapQtConfigInterfacePrivate - fetchCertificates failed: %d", err); - caCerts.ResetAndDestroy(); - clientCerts.ResetAndDestroy(); - return false; - } - - qDebug("user cert count: %d, CA cert count: %d", clientCerts.Count(), caCerts.Count()); - - if (caInfos != NULL) { - copyCertificateInfo(&caCerts, caInfos); - } - if (clientInfos != NULL) { - copyCertificateInfo(&clientCerts, clientInfos); - } - - caCerts.ResetAndDestroy(); - clientCerts.ResetAndDestroy(); - return true; -} - -bool EapQtConfigInterfacePrivate::updateCertificates() { - - qDebug("EapQtConfigInterfacePrivate::updateCertificates(), this = 0x%08x", this); - - checkInstanceThrowing(); - - // empty current state - mCaCertificates.clear(); - mUserCertificates.clear(); - - return fetchCertificates(&mCaCertificates, &mUserCertificates); -} - -QList EapQtConfigInterfacePrivate::certificateAuthorityCertificates() -{ - qDebug("EapQtConfigInterfacePrivate::certificateAuthorityCertificates(), this = 0x%08x", this); - - checkInstanceThrowing(); - - // update only if the list is empty - if(mCaCertificates.length() == 0) { - qDebug() << "EapQtConfigInterfacePrivate::certificateAuthorityCertificates() - updates certificate lists"; - updateCertificates(); - } - - return mCaCertificates; -} - -QList EapQtConfigInterfacePrivate::userCertificates() -{ - qDebug("EapQtConfigInterfacePrivate::userCertificates(), this = 0x%08x", this); - - // use the CA certificates method, it will update both the lists - // if CA list is empty - (void) certificateAuthorityCertificates(); - return mUserCertificates; -} - -void EapQtConfigInterfacePrivate::getEapTypeIf(const EapQtPluginHandle &pluginHandle) -{ - qDebug("EapQtConfigInterfacePrivate::getEapTypeIf(), this = 0x%08x", this); - - // dig up the EAP type in TEapExpandedType format - TEapExpandedType eapServerType; - QByteArray eapType = pluginHandle.type().eapExpandedData(); - TInt err(KErrNone); - - qDebug() << "EapQtConfigInterfacePrivate - getEapTypeIf: wanted EAP type: " << eapType.toHex(); - - // no need to check if this is successful, - // CEapType::NewL call will handle errors - (void) eapServerType.SetValue(eapType.data(), eapType.length()); - - // slight optimization, load interface only if it does not exist or the EAP type changes - if (mEapTypeIf.isNull() || mCurrentServerEapType != eapServerType) { - - qDebug("EapQtConfigInterfacePrivate - getEapTypeIf deletes previous instance"); - - // delete previous instance - mEapTypeIf.reset(NULL); - mCurrentServerEapType = eapServerType; - - qDebug("EapQtConfigInterfacePrivate - getEapTypeIf calls CEapType::NewL()"); - - // trap all leaves - CEapType* tmp = NULL; - TRAP(err, tmp = CEapType::NewL(mEapBearer, mEapDbIndex, mCurrentServerEapType)); - if (err != KErrNone) { - qDebug( - "ERROR: EapQtConfigInterfacePrivate - getEapTypeIf CEapType::NewL failed with error: %d", - err); - mCurrentServerEapType = *EapExpandedTypeNone.GetType(); - } - mEapTypeIf.reset(tmp); - } - - // always clear the tunnelling type state just in case some earlier call has set it - if (!mEapTypeIf.isNull()) { - mEapTypeIf->SetTunnelingType(*EapExpandedTypeNone.GetType()); - } - -} - -// in config: -// if OuterType is defined, the configuration for pluginHandle is set inside this OuterType -// if OuterType is not defined, pluginHandle is for an outer type -// if InnerType is defined, the defined inner types in config are activated for pluginHandle -// if InnerType is not defined, the pluginHandle does not activate any inner type (or they do not exist) -bool EapQtConfigInterfacePrivate::saveConfiguration(const EapQtPluginHandle &pluginHandle, - const EapQtConfig &config) -{ - qDebug("EapQtConfigInterfacePrivate::saveConfiguration(), this = 0x%08x", this); - - checkInstanceThrowing(); - - if (!mEapDbIndexValid) { - qDebug() << "ERROR: Database reference not valid, call setConfigurationReference first!"; - return false; - } - - // set tunneling type & check if the requested EAP is supported - // if we are configuring outer type, OuterType == QVariant::Invalid or - // EapQtPluginHandle::PluginUndefined - - EapQtPluginHandle tmpOuterHandle; - QVariant varValue = config.value(EapQtConfig::OuterType); - if (varValue != QVariant::Invalid && !(varValue.value () == EapQtPluginHandle::PluginUndefined)) { - tmpOuterHandle = varValue.value (); - // check if supported - if(!isSupportedInnerType(tmpOuterHandle, pluginHandle)) { - qDebug("ERROR: EapQtConfigInterfacePrivate::saveConfiguration() - not supported outer/inner type combination"); - return false; - } - } - else { - tmpOuterHandle = EapQtPluginHandle::PluginUndefined; - // check if supported - if(!isSupportedOuterType(pluginHandle)) { - qDebug("ERROR: EapQtConfigInterfacePrivate::saveConfiguration() - not supported outer type"); - return false; - } - } - - getEapTypeIf(pluginHandle); - if (mEapTypeIf.isNull()) { - qDebug("ERROR: EapQtConfigInterfacePrivate::saveConfiguration() - getEapTypeIf failed"); - return false; - } - - TEapExpandedType tmpOuterEap; - tmpOuterEap.SetValue(tmpOuterHandle.type().eapExpandedData().data(), - tmpOuterHandle.type().eapExpandedData().length()); - - qDebug() << "EapQtConfigInterfacePrivate::saveConfiguration() - sets tunnelling type to: " - << tmpOuterHandle.type().eapExpandedData().toHex(); - - mEapTypeIf->SetTunnelingType(tmpOuterEap); - - // set EAP type here - QByteArray eapType = pluginHandle.type().eapExpandedData(); - - // copy config to EAP settings, - // no need to check if this is successful, - // SetConfigurationL call will handle errors - EAPSettings eapSettings; - (void) eapSettings.iEAPExpandedType.SetValue(eapType.data(), eapType.length()); - - // copy the rest of the settings in the function - copyToEapSettings(config, eapSettings); - // store settings - TRAPD(err, mEapTypeIf->SetConfigurationL(eapSettings)); - if (err != KErrNone) { - qDebug("ERROR: EapQtConfigInterfacePrivate - saveConfiguration: SetConfigurationL failed"); - // clear the instance so that the next attempt starts from scratch - mEapTypeIf.reset(NULL); - mCurrentServerEapType = *EapExpandedTypeNone.GetType(); - return false; - } - - return true; -} - -// config must be empty when calling -bool EapQtConfigInterfacePrivate::readConfiguration(const EapQtPluginHandle &outerHandle, - const EapQtPluginHandle &pluginHandle, EapQtConfig &config) -{ - qDebug("EapQtConfigInterfacePrivate::readConfiguration(), this = 0x%08x", this); - - // clear input - config.clear(); - - checkInstanceThrowing(); - - if (!mEapDbIndexValid) { - qDebug() << "ERROR: Database reference not valid, call setConfigurationReference first!"; - return false; - } - - // check EAP type support - if(!(outerHandle == EapQtPluginHandle::PluginUndefined)) { - if(!isSupportedInnerType(outerHandle, pluginHandle)) { - qDebug("ERROR: EapQtConfigInterfacePrivate::readConfiguration() - not supported outer/inner type combination"); - return false; - } - } else { - if(!isSupportedOuterType(pluginHandle)) { - qDebug("ERROR: EapQtConfigInterfacePrivate::readConfiguration() - not supported outer type"); - return false; - } - } - - getEapTypeIf(pluginHandle); - if (mEapTypeIf.isNull()) { - qDebug("ERROR: EapQtConfigInterfacePrivate::readConfiguration - getEapTypeIf failed"); - return false; - } - - // set tunneling type - // if we are configuring outer type, outerHandle == EapQtPluginHandle::PluginUndefined - // and calling SetTunnelingType is also ok - TEapExpandedType tmpEap; - tmpEap.SetValue(outerHandle.type().eapExpandedData().data(), - outerHandle.type().eapExpandedData().length()); - - qDebug() << "EapQtConfigInterfacePrivate::readConfiguration - sets tunnelling type to: " - << outerHandle.type().eapExpandedData().toHex(); - - mEapTypeIf->SetTunnelingType(tmpEap); - - // always set OuterType, - // set to EapQtPluginHandle::PluginUndefined if no outer type specified - config.setValue(EapQtConfig::OuterType, qVariantFromValue(outerHandle)); - - qDebug("EapQtConfigInterfacePrivate::readConfiguration - calls GetConfigurationL()"); - - // trap all leaves - EAPSettings eapSettings; - TRAPD(err, mEapTypeIf->GetConfigurationL(eapSettings)); - - // check if failed or something strange happened (incorrect EAP type settings received) - if (err != KErrNone || eapSettings.iEAPExpandedType != mCurrentServerEapType) { - qDebug() - << "ERROR: EapQtConfigInterfacePrivate - readConfiguration: GetConfigurationL failed" - << "wanted EAP:" << pluginHandle.type().eapExpandedData().toHex() - << "- got EAP vendor ID:" << eapSettings.iEAPExpandedType.GetVendorId() - << ", vendor type" << eapSettings.iEAPExpandedType.GetVendorType() << ", error code:" - << err; - // clear the instance so that the next attempt starts from scratch - mEapTypeIf.reset(NULL); - mCurrentServerEapType = *EapExpandedTypeNone.GetType(); - // nothing to be set to config - return false; - } - copyFromEapSettings(eapSettings, config); - return true; -} - -bool EapQtConfigInterfacePrivate::convertToBool(TBool value) -{ - return (value != EFalse ? true : false); -} - -TBool EapQtConfigInterfacePrivate::convertToTbool(bool value) -{ - return (value ? ETrue : EFalse); -} - -void EapQtConfigInterfacePrivate::copyToEapSettings(const EapQtConfig &config, EAPSettings &eapSettings) -{ - qDebug("EapQtConfigInterfacePrivate::copyToEapSettings(), this = 0x%08x", this); - - int ind = 0; - - QVariant varValue = config.value(EapQtConfig::UsernameAutomatic); - if (varValue.type() == QVariant::Bool) { - eapSettings.iUseAutomaticUsernamePresent = ETrue; - eapSettings.iUseAutomaticUsername = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings UsernameAutomatic: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::AuthorityCertificateAutomatic); - if (varValue.type() == QVariant::Bool) { - eapSettings.iUseAutomaticCACertificatePresent = ETrue; - eapSettings.iUseAutomaticCACertificate = convertToTbool(varValue.toBool()); - qDebug() - << "EapQtConfigInterfacePrivate - copyToEapSettings AuthorityCertificateAutomatic: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::Username); - // do not copy if too large string - if (varValue.type() == QVariant::String && varValue.toString().count() <= StringMaxLength) { - // QString::utf16 returns a null terminated string - eapSettings.iUsername.Copy(varValue.toString().utf16()); - eapSettings.iUsernamePresent = ETrue; - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings Username: " - << varValue.toString(); - } - - varValue = config.value(EapQtConfig::PasswordPrompt); - if (varValue.type() == QVariant::Bool) { - eapSettings.iShowPassWordPromptPresent = ETrue; - eapSettings.iShowPassWordPrompt = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings PasswordPrompt: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::Password); - // do not copy if too large string - if (varValue.type() == QVariant::String && varValue.toString().count() <= StringMaxLength) { - //QString::utf16 returns a null terminated string - eapSettings.iPassword.Copy(varValue.toString().utf16()); - eapSettings.iPasswordPresent = ETrue; - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings Password: " - << varValue.toString(); - } - - varValue = config.value(EapQtConfig::PasswordClear); - if (varValue.type() == QVariant::Bool) { - eapSettings.iPasswordExistPresent = ETrue; - // eapSettings.iPasswordExist = false cleans the password from database, true does nothing - eapSettings.iPasswordExist = convertToTbool(!varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings PasswordClear: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::RealmAutomatic); - if (varValue.type() == QVariant::Bool) { - eapSettings.iUseAutomaticRealmPresent = ETrue; - eapSettings.iUseAutomaticRealm = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings RealmAutomatic: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::Realm); - // do not copy if too large string - if (varValue.type() == QVariant::String && varValue.toString().count() <= StringMaxLength) { - // QString::utf16 returns a null terminated string - eapSettings.iRealm.Copy(varValue.toString().utf16()); - eapSettings.iRealmPresent = ETrue; - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings Realm: " - << varValue.toString(); - } - - varValue = config.value(EapQtConfig::UsePseudonyms); - if (varValue.type() == QVariant::Bool) { - eapSettings.iUsePseudonymsPresent = ETrue; - eapSettings.iUsePseudonyms = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings UsePseudonyms: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::VerifyServerRealm); - if (varValue.type() == QVariant::Bool) { - eapSettings.iVerifyServerRealmPresent = ETrue; - eapSettings.iVerifyServerRealm = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings VerifyServerRealm: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::ClientAuthenticationRequired); - if (varValue.type() == QVariant::Bool) { - eapSettings.iRequireClientAuthenticationPresent = ETrue; - eapSettings.iRequireClientAuthentication = convertToTbool(varValue.toBool()); - qDebug() - << "EapQtConfigInterfacePrivate - copyToEapSettings ClientAuthenticationRequired: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::SessionValidityTime); - if (varValue.type() == QVariant::UInt) { - eapSettings.iSessionValidityTimePresent = ETrue; - eapSettings.iSessionValidityTime = varValue.toUInt(); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings SessionValidityTime: " - << varValue.toUInt(); - } - - varValue = config.value(EapQtConfig::PeapVersion0Allowed); - if (varValue.type() == QVariant::Bool) { - eapSettings.iPEAPVersionsPresent = ETrue; - eapSettings.iPEAPv0Allowed = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings PeapVersion0Allowed: " - << varValue.toBool(); - } else { - // in any other case disable PEAP version; - // no need to set eapSettings.iPEAPVersionsPresent, - // it will be set if one of the other PEAP versions is enabled, - // otherwise this setting is redundant and can be ignored - eapSettings.iPEAPv0Allowed = EFalse; - } - - varValue = config.value(EapQtConfig::PeapVersion1Allowed); - if (varValue.type() == QVariant::Bool) { - eapSettings.iPEAPVersionsPresent = ETrue; - eapSettings.iPEAPv1Allowed = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings PeapVersion1Allowed: " - << varValue.toBool(); - } else { - // in any other case disable PEAP version; - // no need to set eapSettings.iPEAPVersionsPresent, - // it will be set if one of the other PEAP versions is enabled, - // otherwise this setting is redundant and can be ignored - eapSettings.iPEAPv1Allowed = EFalse; - } - - varValue = config.value(EapQtConfig::PeapVersion2Allowed); - if (varValue.type() == QVariant::Bool) { - eapSettings.iPEAPVersionsPresent = ETrue; - eapSettings.iPEAPv2Allowed = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings PeapVersion2Allowed: " - << varValue.toBool(); - } else { - // in any other case disable PEAP version; - // no need to set eapSettings.iPEAPVersionsPresent, - // it will be set if one of the other PEAP versions is enabled, - // otherwise this setting is redundant and can be ignored - eapSettings.iPEAPv2Allowed = EFalse; - } - - varValue = config.value(EapQtConfig::ProvisioningModeAuthenticated); - if (varValue.type() == QVariant::Bool) { - eapSettings.iAuthProvModeAllowedPresent = ETrue; - eapSettings.iAuthProvModeAllowed = convertToTbool(varValue.toBool()); - qDebug() - << "EapQtConfigInterfacePrivate - copyToEapSettings ProvisioningModeAuthenticated: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::ProvisioningModeUnauthenticated); - if (varValue.type() == QVariant::Bool) { - eapSettings.iUnauthProvModeAllowedPresent = ETrue; - eapSettings.iUnauthProvModeAllowed = convertToTbool(varValue.toBool()); - qDebug() - << "EapQtConfigInterfacePrivate - copyToEapSettings ProvisioningModeUnauthenticated: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::PACGroupReference); - // do not copy if too large string - if (varValue.type() == QVariant::String && varValue.toString().count() <= StringMaxLength) { - eapSettings.iPACGroupReference.Copy(varValue.toString().utf16()); - eapSettings.iPACGroupReferencePresent = ETrue; - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings PACGroupReference: " - << varValue.toString(); - } - - varValue = config.value(EapQtConfig::WarnADHPNoPAC); - if (varValue.type() == QVariant::Bool) { - eapSettings.iWarnADHPNoPACPresent = ETrue; - eapSettings.iWarnADHPNoPAC = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings WarnADHPNoPAC: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::WarnADHPNoMatchingPAC); - if (varValue.type() == QVariant::Bool) { - eapSettings.iWarnADHPNoMatchingPACPresent = ETrue; - eapSettings.iWarnADHPNoMatchingPAC = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings WarnADHPNoMatchingPAC: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::WarnNotDefaultServer); - if (varValue.type() == QVariant::Bool) { - eapSettings.iWarnNotDefaultServerPresent = ETrue; - eapSettings.iWarnNotDefaultServer = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings WarnNotDefaultServer: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::UseIdentityPrivacy); - if (varValue.type() == QVariant::Bool) { - eapSettings.iUseIdentityPrivacyPresent = ETrue; - eapSettings.iUseIdentityPrivacy = convertToTbool(varValue.toBool()); - qDebug() << "EapQtConfigInterfacePrivate - copyToEapSettings UseIdentityPrivacy: " - << varValue.toBool(); - } - - varValue = config.value(EapQtConfig::InnerType); - if (varValue.type() == QVariant::List) { - - // not need to set disable inner types - // EAP server takes care of them internally - - qDebug() << "EapQtConfigInterfacePrivate::copyToEapSettings() - InnerType present"; - - QList varList = varValue.toList(); - TEapExpandedType tmpEap; - EapQtPluginHandle tmpHandle; - TUint err(KErrNone); - - for (ind = 0; ind < varList.count(); ind++) { - if (varList[ind].canConvert ()) { - // set to true only if at least one item is ok - eapSettings.iEnabledEncapsulatedEAPExpandedTypesPresent = ETrue; - - tmpHandle = varList[ind].value (); - tmpEap.SetValue(tmpHandle.type().eapExpandedData().data(), - tmpHandle.type().eapExpandedData().length()); - err = eapSettings.iEnabledEncapsulatedEAPExpandedTypes.Append(tmpEap); - if(err != KErrNone) - { - qDebug() << "ERROR: EapQtConfigInterfacePrivate::copyToEapSettings() - RArray::Append failed for inner types"; - eapSettings.iEnabledEncapsulatedEAPExpandedTypes.Reset(); - // no dynamic memory allocated for tmpEap, just continue with - // the rest of the settings; EapSettings takes care of deallocations in its destructor - break; - } - - qDebug() - << "EapQtConfigInterfacePrivate::copyToEapSettings() - Added to InnerType: " - << tmpHandle.type().eapExpandedData().toHex(); - } - } - } - - varValue = config.value(EapQtConfig::CipherSuites); - if (varValue.type() == QVariant::List) { - - qDebug() << "EapQtConfigInterfacePrivate::copyToEapSettings() - CipherSuites present"; - QList varCiphers = varValue.toList(); - - // clears the ciphersuite configuration if the provided list is empty - eapSettings.iCipherSuitesPresent = ETrue; - TUint err(KErrNone); - - for (ind = 0; ind < varCiphers.count(); ind++) { - // check that the item is of correct type (int also accepted to not be too strict) - if (varCiphers[ind].type() == QVariant::UInt || varCiphers[ind].type() == QVariant::Int) { - - err = eapSettings.iCipherSuites.Append(varCiphers[ind].toUInt()); - if(err != KErrNone) - { - qDebug() << "ERROR: EapQtConfigInterfacePrivate::copyToEapSettings() - RArray::Append failed for ciphersuites"; - eapSettings.iCipherSuites.Reset(); - // continue with the rest of the settings, no dynamic - // memory allocated for varCiphers[ind].toUInt() - break; - } - - qDebug( - "EapQtConfigInterfacePrivate::copyToEapSettings() - CipherSuites at %d: 0x%08x", - ind, varCiphers[ind].toUInt()); - } - } - } - - // set always to true to support clearing previously configured CA/user certificates - // if the EAP method in question does not use certificates, - // EAP server will ignore the setting; - // CA/user certificates get cleared if EapQtConfig::Authority/UserCertificate is QVariant::Invalid or - // the provided lists are empty - eapSettings.iCertificatesPresent = ETrue; - - varValue = config.value(EapQtConfig::AuthorityCertificate); - if (varValue.type() == QVariant::List) { - - qDebug() - << "EapQtConfigInterfacePrivate::copyToEapSettings() - AuthorityCertificate present"; - - QList varCerts = varValue.toList(); - for (ind = 0; ind < varCerts.count(); ind++) { - // check that the item is of correct type - if (varCerts[ind].canConvert ()) { - appendCertificateInfo(true, varCerts[ind].value (), - &(eapSettings.iCertificates)); - qDebug() - << "EapQtConfigInterfacePrivate::copyToEapSettings() - AuthorityCertificate appended"; - } - } - } - - varValue = config.value(EapQtConfig::UserCertificate); - if (varValue.type() == QVariant::List) { - - qDebug() << "EapQtConfigInterfacePrivate::copyToEapSettings() - UserCertificate present"; - - QList varCerts = varValue.toList(); - for (ind = 0; ind < varCerts.count(); ind++) { - // check that the item is of correct type - if (varCerts[ind].canConvert ()) { - appendCertificateInfo(false, varCerts[ind].value (), - &(eapSettings.iCertificates)); - qDebug() - << "EapQtConfigInterfacePrivate::copyToEapSettings() - AuthorityCertificate appended"; - } - } - } - -} - -// caller takes care of deallocating resulting data in certList -void EapQtConfigInterfacePrivate::appendCertificateInfo(bool isCaCertificate, - const EapQtCertificateInfo& certInfo, RPointerArray* const certList) -{ - qDebug("EapQtConfigInterfacePrivate::appendCertificateInfo(), this = 0x%08x", this); - - Q_ASSERT(certList); - - // use scoped pointer to make sure memory is not leaked in failures - QScopedPointer certEntry(new EapCertificateEntry); - - // set certificate enabled in EAP settings - certEntry->SetIsEnabledPresent(); - certEntry->SetIsEnabled(ETrue); - - if (isCaCertificate) { - qDebug("EapQtConfigInterfacePrivate::appendCertificateInfo() - CA certificate"); - certEntry->SetCertType(EapCertificateEntry::ECA); - } - else { - qDebug("EapQtConfigInterfacePrivate::appendCertificateInfo() - Client certificate"); - certEntry->SetCertType(EapCertificateEntry::EUser); - } - - qDebug("EapQtConfigInterfacePrivate::appendCertificateInfo() - *** Adding cert data"); - - TBuf certText; - - QVariant varValue = certInfo.value(EapQtCertificateInfo::SubjectName); - if (varValue.type() == QVariant::String && varValue.toString().count() <= StringMaxLength) { - certEntry->SetSubjectNamePresent(); - certText.Copy(varValue.toString().utf16()); - certEntry->SetSubjectName(certText); - - qDebug() << "EapQtConfigInterfacePrivate::appendCertificateInfo() - SubjectName: " - << varValue.toString(); - } - - varValue = certInfo.value(EapQtCertificateInfo::IssuerName); - if (varValue.type() == QVariant::String && varValue.toString().count() <= StringMaxLength) { - certEntry->SetIssuerNamePresent(); - certText.Copy(varValue.toString().utf16()); - certEntry->SetIssuerName(certText); - - qDebug() << "EapQtConfigInterfacePrivate::appendCertificateInfo() - IssuerName: " - << varValue.toString(); - } - - varValue = certInfo.value(EapQtCertificateInfo::SerialNumber); - if (varValue.type() == QVariant::String && varValue.toString().count() <= StringMaxLength) { - certEntry->SetSerialNumberPresent(); - certText.Copy(varValue.toString().utf16()); - certEntry->SetSerialNumber(certText); - - qDebug() << "EapQtConfigInterfacePrivate::appendCertificateInfo() - SerialNumber: " - << varValue.toString(); - } - - TCertLabel certLabel; - - varValue = certInfo.value(EapQtCertificateInfo::CertificateLabel); - if (varValue.type() == QVariant::String && varValue.toString().count() <= CertLabelMaxLength) { - certEntry->SetLabelPresent(); - certLabel.Copy(varValue.toString().utf16()); - certEntry->SetLabel(certLabel); - - qDebug() << "EapQtConfigInterfacePrivate::appendCertificateInfo() - CertificateLabel: " - << varValue.toString(); - } - - TBuf thumbPrint; - - varValue = certInfo.value(EapQtCertificateInfo::ThumbPrint); - if (varValue.type() == QVariant::String && varValue.toString().count() - <= CertThumbprintMaxLength) { - certEntry->SetThumbprintPresent(); - thumbPrint.Copy(varValue.toString().utf16()); - certEntry->SetThumbprint(thumbPrint); - - qDebug() << "EapQtConfigInterfacePrivate::appendCertificateInfo() - ThumbPrint: " - << varValue.toString(); - } - - TKeyIdentifier keyId; - - varValue = certInfo.value(EapQtCertificateInfo::SubjectKeyId); - if (varValue.type() == QVariant::ByteArray && varValue.toByteArray().count() - <= CertSubjectKeyIdLength) { - certEntry->SetSubjectKeyIdPresent(); - keyId.Copy(reinterpret_cast (varValue.toByteArray().data()), - varValue.toByteArray().size()); - certEntry->SetSubjectKeyId(keyId); - - qDebug() << "EapQtConfigInterfacePrivate::appendCertificateInfo() - SubjectKeyId: " - << varValue.toByteArray().toHex(); - } - - TUint err = certList->Append(certEntry.data()); - if (err != KErrNone) { - qDebug() << "ERROR: EapQtConfigInterfacePrivate::appendCertificateInfo()" - << "- RPointerArray::Append failed for certificate entry"; - // scoped certEntry pointer deleted automatically - // no need to touch the array, it is handled by the caller - } - else { - qDebug() << "EapQtConfigInterfacePrivate::appendCertificateInfo()" - << "- *** certificate appended to list"; - // remove the ownerhsip from scoped pointer, entry owned by the array now - (void) certEntry.take(); - } - - // EapSettings destructor takes care of deallocating the array entries -} - -void EapQtConfigInterfacePrivate::copyFromEapSettings(EAPSettings &eapSettings, EapQtConfig &config) -{ - qDebug("EapQtConfigInterfacePrivate::copyFromEapSettings(), this = 0x%08x", this); - - int ind = 0; - - // automatic username - if (eapSettings.iUseAutomaticUsernamePresent) { - config.setValue(EapQtConfig::UsernameAutomatic, convertToBool( - eapSettings.iUseAutomaticUsername)); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings UsernameAutomatic: " - << config.value(EapQtConfig::UsernameAutomatic).toBool(); - } - - // automatic CA certificate - if (eapSettings.iUseAutomaticCACertificatePresent) { - config.setValue(EapQtConfig::AuthorityCertificateAutomatic, convertToBool( - eapSettings.iUseAutomaticCACertificate)); - qDebug() - << "EapQtConfigInterfacePrivate - copyFromEapSettings AuthorityCertificateAutomatic: " - << config.value(EapQtConfig::AuthorityCertificateAutomatic).toBool(); - } - - // username - if (eapSettings.iUsernamePresent) { - config.setValue(EapQtConfig::Username, QString::fromUtf16(eapSettings.iUsername.Ptr(), - eapSettings.iUsername.Length())); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings Username: " << config.value( - EapQtConfig::Username).toString(); - } - - // password existence check, password itself is write-only, cannot be read - if (eapSettings.iPasswordExistPresent) { - // report to caller if password exists in the database - config.setValue(EapQtConfig::PasswordStored, convertToBool(eapSettings.iPasswordExist)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings PasswordStored: " - << config.value(EapQtConfig::PasswordStored).toBool(); - } - - // password prompt - if (eapSettings.iShowPassWordPromptPresent) { - config.setValue(EapQtConfig::PasswordPrompt, convertToBool(eapSettings.iShowPassWordPrompt)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings PasswordPrompt: " - << config.value(EapQtConfig::PasswordPrompt).toBool(); - } - - // automatic realm - if (eapSettings.iUseAutomaticRealmPresent) { - config.setValue(EapQtConfig::RealmAutomatic, convertToBool(eapSettings.iUseAutomaticRealm)); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings RealmAutomatic: " - << config.value(EapQtConfig::RealmAutomatic).toBool(); - } - - // realm - if (eapSettings.iRealmPresent) { - config.setValue(EapQtConfig::Realm, QString::fromUtf16(eapSettings.iRealm.Ptr(), - eapSettings.iRealm.Length())); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings Realm: " << config.value( - EapQtConfig::Realm).toString(); - } - - // server name - if (eapSettings.iVerifyServerRealmPresent) { - config.setValue(EapQtConfig::VerifyServerRealm, convertToBool( - eapSettings.iVerifyServerRealm)); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings VerifyServerRealm: " - << config.value(EapQtConfig::VerifyServerRealm).toBool(); - } - - // pseudonym - if (eapSettings.iUsePseudonymsPresent) { - config.setValue(EapQtConfig::UsePseudonyms, convertToBool(eapSettings.iUsePseudonyms)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings UsePseudonyms: " - << config.value(EapQtConfig::UsePseudonyms).toBool(); - } - - // policy: server must require client authentication - if (eapSettings.iRequireClientAuthenticationPresent) { - config.setValue(EapQtConfig::ClientAuthenticationRequired, convertToBool( - eapSettings.iRequireClientAuthentication)); - - qDebug() - << "EapQtConfigInterfacePrivate - copyFromEapSettings ClientAuthenticationRequired: " - << config.value(EapQtConfig::ClientAuthenticationRequired).toBool(); - } - - // session validity time - if (eapSettings.iSessionValidityTimePresent) { - config.setValue(EapQtConfig::SessionValidityTime, eapSettings.iSessionValidityTime); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings SessionValidityTime: " - << config.value(EapQtConfig::SessionValidityTime).toUInt(); - } - - // TLS ciphersuites - if (eapSettings.iCipherSuitesPresent) { - QList ciphers; // QVariant has a constructor for uint - for (ind = 0; ind < eapSettings.iCipherSuites.Count(); ind++) { - ciphers.append(eapSettings.iCipherSuites[ind]); - qDebug("EapQtConfigInterfacePrivate - copyFromEapSettings CipherSuites at %d: 0x%08x", - ind, ciphers[ind].toUInt()); - } - config.setValue(EapQtConfig::CipherSuites, ciphers); - } - - // certificates - if (eapSettings.iCertificatesPresent) { - - QList caCerts; - QList clientCerts; - RPointerArray serverCaCerts; - RPointerArray serverClientCerts; - - // separate CA and client certs to their own lists - for (ind = 0; ind < eapSettings.iCertificates.Count(); ind++) { - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings certificates, " - << "cert type: " << eapSettings.iCertificates[ind]->GetCertType() << ", enabled: " - << convertToBool(eapSettings.iCertificates[ind]->GetIsEnabled()); - - // only enabled certificates are reported - if (eapSettings.iCertificates[ind]->GetCertType() == EapCertificateEntry::EUser - && eapSettings.iCertificates[ind]->GetIsEnabled() != EFalse) { - // no need to check the return value for failures, - // serverClientCerts does not own the pointed data, - // eapSettings owns and deallocates it - (void) serverClientCerts.Append(eapSettings.iCertificates[ind]); - } - // only enabled certificates are reported - else if (eapSettings.iCertificates[ind]->GetCertType() == EapCertificateEntry::ECA - && eapSettings.iCertificates[ind]->GetIsEnabled() != EFalse) { - // no need to check the return value for failures, - // serverCaCerts does not own the pointed data, - // eapSettings owns and deallocates it - (void) serverCaCerts.Append(eapSettings.iCertificates[ind]); - } - else { - qDebug() - << "WARNING: EapQtConfigInterfacePrivate - copyFromEapSettings certificates, " - << "unknown certificate type in the list or certificate not enabled"; - } - } - - // copy to lists of our type - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings AuthorityCertificates"; - copyCertificateInfo(&serverCaCerts, &caCerts); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings UserCertificates"; - copyCertificateInfo(&serverClientCerts, &clientCerts); - - // reset the arrays, data is owned by EapSettings.h, - // must not be destroyed here - serverCaCerts.Reset(); - serverClientCerts.Reset(); - - // we still need to convert QList to QList - // to be able to store to config - QVariant tmp; - QList varCaCerts; - QList varClientCerts; - - for (ind = 0; ind < caCerts.count(); ind++) { - tmp.setValue(caCerts[ind]); - varCaCerts.append(tmp); - } - for (ind = 0; ind < clientCerts.count(); ind++) { - tmp.setValue(clientCerts[ind]); - varClientCerts.append(tmp); - } - - // finally copy to config - config.setValue(EapQtConfig::AuthorityCertificate, varCaCerts); - config.setValue(EapQtConfig::UserCertificate, varClientCerts); - } - - // PEAP specific - if (eapSettings.iPEAPVersionsPresent) { - config.setValue(EapQtConfig::PeapVersion0Allowed, convertToBool(eapSettings.iPEAPv0Allowed)); - config.setValue(EapQtConfig::PeapVersion1Allowed, convertToBool(eapSettings.iPEAPv1Allowed)); - config.setValue(EapQtConfig::PeapVersion2Allowed, convertToBool(eapSettings.iPEAPv2Allowed)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings PeapVersion0Allowed: " - << config.value(EapQtConfig::PeapVersion0Allowed).toBool(); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings PeapVersion1Allowed: " - << config.value(EapQtConfig::PeapVersion1Allowed).toBool(); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings PeapVersion2Allowed: " - << config.value(EapQtConfig::PeapVersion2Allowed).toBool(); - } - - // TLS privacy - if (eapSettings.iUseIdentityPrivacyPresent) { - config.setValue(EapQtConfig::UseIdentityPrivacy, convertToBool( - eapSettings.iUseIdentityPrivacy)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings UseIdentityPrivacy: " - << config.value(EapQtConfig::UseIdentityPrivacy).toBool(); - } - - // EAP-FAST specific - if (eapSettings.iAuthProvModeAllowedPresent) { - config.setValue(EapQtConfig::ProvisioningModeAuthenticated, convertToBool( - eapSettings.iAuthProvModeAllowed)); - - qDebug() - << "EapQtConfigInterfacePrivate - copyFromEapSettings ProvisioningModeAuthenticated: " - << config.value(EapQtConfig::ProvisioningModeAuthenticated).toBool(); - } - if (eapSettings.iUnauthProvModeAllowedPresent) { - config.setValue(EapQtConfig::ProvisioningModeUnauthenticated, convertToBool( - eapSettings.iUnauthProvModeAllowed)); - - qDebug() - << "EapQtConfigInterfacePrivate - copyFromEapSettings ProvisioningModeUnauthenticated: " - << config.value(EapQtConfig::ProvisioningModeUnauthenticated).toBool(); - } - if (eapSettings.iWarnADHPNoPACPresent) { - config.setValue(EapQtConfig::WarnADHPNoPAC, convertToBool(eapSettings.iWarnADHPNoPAC)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings WarnADHPNoPAC: " - << config.value(EapQtConfig::WarnADHPNoPAC).toBool(); - } - if (eapSettings.iWarnADHPNoMatchingPACPresent) { - config.setValue(EapQtConfig::WarnADHPNoMatchingPAC, convertToBool( - eapSettings.iWarnADHPNoMatchingPAC)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings WarnADHPNoMatchingPAC: " - << config.value(EapQtConfig::WarnADHPNoMatchingPAC).toBool(); - } - if (eapSettings.iWarnNotDefaultServerPresent) { - config.setValue(EapQtConfig::WarnNotDefaultServer, convertToBool( - eapSettings.iWarnNotDefaultServer)); - - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings WarnNotDefaultServer: " - << config.value(EapQtConfig::WarnNotDefaultServer).toBool(); - } - if (eapSettings.iPACGroupReferencePresent) { - config.setValue(EapQtConfig::PACGroupReference, QString::fromUtf16( - eapSettings.iPACGroupReference.Ptr(), eapSettings.iPACGroupReference.Length())); - qDebug() << "EapQtConfigInterfacePrivate - copyFromEapSettings PACGroupReference: " - << config.value(EapQtConfig::PACGroupReference).toString(); - } - - // enabled inner EAPs - if (eapSettings.iEnabledEncapsulatedEAPExpandedTypesPresent) { - - qDebug("EapQtConfigInterfacePrivate - copyFromEapSettings InnerType, enabled count %d", - eapSettings.iEnabledEncapsulatedEAPExpandedTypes.Count()); - - QList innerEapsOn; - appendEapTypes(&(eapSettings.iEnabledEncapsulatedEAPExpandedTypes), &innerEapsOn); - - // convert to QList to be able to store to config - QVariant varTmp; - QList varInnerEapsOn; - int dummy = 0; - - for (ind = 0; ind < innerEapsOn.count(); ind++) { - // report only EAPs which do have an UI plugin - if (isUiSupported(innerEapsOn[ind], dummy)) { - // create plugin handle from EAP type with constructors - // calls: EapQtExpandedEapType(const QByteArray data) -> EapQtPluginHandle(EapQtExpandedEapType type) - varTmp.setValue(EapQtPluginHandle(EapQtExpandedEapType(innerEapsOn[ind]))); - varInnerEapsOn.append(varTmp); - qDebug() - << "EapQtConfigInterfacePrivate - copyFromEapSettings InnerType: added EAP: " - << innerEapsOn[ind].toHex(); - } - } - - // copy to config - config.setValue(EapQtConfig::InnerType, varInnerEapsOn); - } - - // disabled inner EAPs - if (eapSettings.iDisabledEncapsulatedEAPExpandedTypesPresent) { - // setting is not needed, enabled are enough - qDebug( - "EapQtConfigInterfacePrivate - copyFromEapSettings InnerType: disabled count %d (not needed for anything here)", - eapSettings.iDisabledEncapsulatedEAPExpandedTypes.Count()); - } - -} - -QList EapQtConfigInterfacePrivate::selectedOuterTypes() -{ - qDebug("EapQtConfigInterfacePrivate::selectedOuterTypes(), this = 0x%08x", this); - - checkInstanceThrowing(); - - if (!mEapDbIndexValid) { - qDebug() << "ERROR: Database reference not valid, call setConfigurationReference first!"; - return QList (); - } - - // call to make sure the members (mOuterEapsOn and mSupportedOuterTypes) are up-to-date - (void) supportedOuterTypes(); - - QList selectedOuterTypes; - - QList tmpEaps; - appendEapTypes(&mOuterEapsOn, &tmpEaps); - - // report only the ones that also have an UI, i.e. listed in mSupportedOuterTypes - for (int ind = 0; ind < mSupportedOuterTypes.count(); ind++) { - if (tmpEaps.contains(mSupportedOuterTypes[ind].pluginHandle().type().eapExpandedData())) { - selectedOuterTypes.append(mSupportedOuterTypes[ind].pluginHandle()); - } - } - - qDebug("EapQtConfigInterfacePrivate - selected outer type count: %d", - selectedOuterTypes.count()); - - return selectedOuterTypes; -} - -bool EapQtConfigInterfacePrivate::isSupportedOuterType(const EapQtPluginHandle &handle) -{ - qDebug("EapQtConfigInterfacePrivate::isSupportedOuterType(), this = 0x%08x", this); - - checkInstanceThrowing(); - - // check if mSupportedOuterTypes is up-to-date - if (mSupportedOuterTypes.count() <= 0) { - // update mSupportedOuterTypes - (void) supportedOuterTypes(); - } - - bool ret = false; - for (int ind = 0; ind < mSupportedOuterTypes.count(); ind++) { - if (mSupportedOuterTypes[ind].pluginHandle() == handle) { - ret = true; - } - } - return ret; -} - -bool EapQtConfigInterfacePrivate::setSelectedOuterTypes( - const QList &outerHandles) -{ - qDebug("EapQtConfigInterfacePrivate::setSelectedOuterTypes()"); - - checkInstanceThrowing(); - - if (!mEapDbIndexValid || mEapGsIf.isNull()) { - qDebug() - << "ERROR: Database reference not valid (or mEapGsIf is NULL), call setConfigurationReference first!"; - return false; - } - - // check if mSupportedOuterTypes is up-to-date - if (mSupportedOuterTypes.count() <= 0) { - // update mSupportedOuterTypes - (void) supportedOuterTypes(); - } - - // clear arrays - mOuterEapsOn.Reset(); - mOuterEapsOff.Reset(); - - // pick only the supported ones from outerHandles - TEapExpandedType tmpEap; - TUint err(KErrNone); - for (int ind = 0; ind < mSupportedOuterTypes.count(); ind++) { - if (outerHandles.contains(mSupportedOuterTypes[ind].pluginHandle())) { - - // convert to TEapExpandedType - tmpEap.SetValue( - mSupportedOuterTypes[ind].pluginHandle().type().eapExpandedData().data(), - mSupportedOuterTypes[ind].pluginHandle().type().eapExpandedData().length()); - - // add to mOuterEapsOn - err = mOuterEapsOn.Append(tmpEap); - if(err != KErrNone) - { - qDebug() << "ERROR: EapQtConfigInterfacePrivate - setSelectedOuterTypes RArray::Append failed"; - // reset the array, no dynamic memory allocated for tmpEap - mOuterEapsOn.Reset(); - return false; - } - - qDebug() - << "EapQtConfigInterfacePrivate - setSelectedOuterTypes adding to enabledOuterHandles: " - << mSupportedOuterTypes[ind].pluginHandle().type().eapExpandedData().toHex(); - } - } - - bool ret = true; - - // set selection to EAP server, no need to have correct content in mOuterEapsOff, - // EAP server handles it, mOuterEapsOn is only important - err = mEapGsIf->SetEapMethods(mOuterEapsOn, mOuterEapsOff); - if (err != KErrNone) { - qDebug("EapQtConfigInterfacePrivate::setSelectedOuterTypes() - SetEapMethods failed: %d", - err); - // nothing we can do to recover, just exit - ret = false; - } - return ret; -} - -bool EapQtConfigInterfacePrivate::isSupportedInnerType(const EapQtPluginHandle &outerHandle, - const EapQtPluginHandle &innerHandle) -{ - qDebug("EapQtConfigInterfacePrivate::isSupportedInnerType(), this = 0x%08x", this); - - checkInstanceThrowing(); - - // update mSupportedInnerTypes - (void) supportedInnerTypes(outerHandle); - - for (int ind = 0; ind < mSupportedInnerTypes.count(); ind++) { - if (mSupportedInnerTypes[ind].pluginHandle() == innerHandle) { - return true; - } - } - return false; -} - -bool EapQtConfigInterfacePrivate::deleteConfiguration() -{ - qDebug("EapQtConfigInterfacePrivate::deleteConfiguration(), this = 0x%08x", this); - - checkInstanceThrowing(); - - if (!mEapDbIndexValid || mEapGsIf.isNull()) { - qDebug() - << "ERROR: Database reference not valid (or mEapGsIf is NULL), call setConfigurationReference first!"; - return false; - } - - bool ret = true; - TInt err = mEapGsIf->DeleteAllEapSettings(); - if (err != KErrNone) { - ret = false; - } - return ret; -} - -void EapQtConfigInterfacePrivate::loadPlugins() -{ - qDebug("EapQtConfigInterfacePrivate::loadPlugins(), this = 0x%08x", this); - - checkInstanceThrowing(); - - // plugin directory defined in cpeapplugininterface.h - QDir pluginsDir(CpEapPluginInterfacePluginDirectory); - foreach( QString fileName, pluginsDir.entryList(QDir::Files) ) - { - QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); - QObject *tmp = loader.instance(); - if (tmp) { - CpEapPluginInterface *plugin = qobject_cast (tmp); - if (plugin) { - mPlugins.append(plugin); - } - } - } - - // collect UI plugin infos - QList::iterator iter; - for (iter = mPlugins.begin(); iter != mPlugins.end(); ++iter) { - mPluginInfos.append((*iter)->pluginInfo()); - } - - // sort the UI plugins according to their order number - qSort(mPluginInfos.begin(), mPluginInfos.end(), EapQtConfigInterfacePrivate::pluginLessThan); - - qDebug("EapQtConfigInterfacePrivate - loadPlugins: supported EAP plugin count: %d", - mPluginInfos.count()); -} - -bool EapQtConfigInterfacePrivate::pluginLessThan( - const EapQtPluginInfo &plugin1, - const EapQtPluginInfo &plugin2) -{ - return plugin1.orderNumber() < plugin2.orderNumber(); -} - -CpBaseSettingView *EapQtConfigInterfacePrivate::uiInstance(const EapQtPluginHandle &outerHandle, - const EapQtPluginHandle &pluginHandle) -{ - qDebug("EapQtConfigInterfacePrivate::uiInstance(), this = 0x%08x", this); - - checkInstanceThrowing(); - - // if outer type UI is requested, outerHandle must be undefined and pluginHandle - // must be supported as outer type - if (outerHandle == EapQtPluginHandle::PluginUndefined) { - if (!isSupportedOuterType(pluginHandle)) { - qDebug() << "ERROR: EapQtConfigInterfacePrivate::uiInstance() -" - << "plugin not supported as outer type"; - return NULL; - } - } - else { - // outerHandle defined, pluginHandle must be supported inside outerHandle - if (!isSupportedInnerType(outerHandle, pluginHandle)) { - qDebug() << "ERROR: EapQtConfigInterfacePrivate::uiInstance() -" - << "plugin not supported as the inner type of the specified outer type"; - return NULL; - } - } - - if (mTranslator.isNull()) { - // install translations for EAP UI plugins - mTranslator.reset(new HbTranslator(eapTranslationFile)); - } - - // go through all interfaces (dlls) - QList::iterator iter; - for (iter = mPlugins.begin(); iter != mPlugins.end(); ++iter) { - QList plugins; - plugins.append((*iter)->pluginInfo()); - - // go through all plugings inside the interface implementation - QList::iterator j; - for (j = plugins.begin(); j != plugins.end(); ++j) { - if ((*j).pluginHandle() == pluginHandle) { - qDebug("EapQtConfigInterfacePrivate::uiInstance() - found plugin"); - // indicate configured IAP to plugin - (*iter)->setSettingsReference(getEapBearer(), mIapId); - return (*iter)->uiInstance(outerHandle, *j); - } - } - - } - qDebug("ERROR: EapQtConfigInterfacePrivate::uiInstance() - plugin not found"); - return NULL; -} - -EapQtConfigInterface::EapBearerType EapQtConfigInterfacePrivate::getEapBearer() -{ - EapQtConfigInterface::EapBearerType ret(EapQtConfigInterface::EapBearerTypeWlan); - - switch (mEapBearer) { - case EVpn: - ret = EapQtConfigInterface::EapBearerTypeVpn; - break; - default: - ret = EapQtConfigInterface::EapBearerTypeWlan; - break; - } - return ret; -} - -EapQtValidator *EapQtConfigInterfacePrivate::validatorEap(const EapQtExpandedEapType &type, - const EapQtConfig::SettingsId id) -{ - qDebug("EapQtConfigInterfacePrivate::validatorEap(), this = 0x%08x", this); - - qDebug() << "EapQtConfigInterfacePrivate::validatorEap() - requested EAP: " - << type.eapExpandedData().toHex(); - qDebug() << "EapQtConfigInterfacePrivate::validatorEap() - setting: " << id; - - EapQtValidator *ret = NULL; - - switch (id) { - - case EapQtConfig::Username: - switch (type.type()) { - case EapQtExpandedEapType::TypeEapAka: - case EapQtExpandedEapType::TypeEapFast: - case EapQtExpandedEapType::TypeEapGtc: - case EapQtExpandedEapType::TypeLeap: - case EapQtExpandedEapType::TypeEapMschapv2: - case EapQtExpandedEapType::TypePeap: - case EapQtExpandedEapType::TypeEapSim: - case EapQtExpandedEapType::TypeEapTls: - case EapQtExpandedEapType::TypeEapTtls: - case EapQtExpandedEapType::TypePap: - case EapQtExpandedEapType::TypePlainMschapv2: - ret = new EapQtValidatorUsername(type); - break; - default: - ret = NULL; - } - break; - - case EapQtConfig::Password: - switch (type.type()) { - case EapQtExpandedEapType::TypeEapGtc: - case EapQtExpandedEapType::TypeLeap: - case EapQtExpandedEapType::TypeEapMschapv2: - case EapQtExpandedEapType::TypePap: - case EapQtExpandedEapType::TypePlainMschapv2: - ret = new EapQtValidatorPassword(type); - break; - default: - ret = NULL; - } - break; - - case EapQtConfig::Realm: - switch (type.type()) { - case EapQtExpandedEapType::TypeEapAka: - case EapQtExpandedEapType::TypeEapFast: - case EapQtExpandedEapType::TypePeap: - case EapQtExpandedEapType::TypeEapSim: - case EapQtExpandedEapType::TypeEapTls: - case EapQtExpandedEapType::TypeEapTtls: - ret = new EapQtValidatorRealm(type); - break; - default: - ret = NULL; - } - break; - - default: - ret = NULL; - - } - - qDebug() << "EapQtConfigInterfacePrivate::validatorEap() - is returning NULL: " << (ret == NULL); - - return ret; -} - -bool EapQtConfigInterfacePrivate::readPacStoreConfiguration(EapQtPacStoreConfig& /* config */) -{ - // not supported - return false; -} - -bool EapQtConfigInterfacePrivate::savePacStoreConfiguration(const EapQtPacStoreConfig& /* config */) -{ - // not supported - return false; -} - -EapQtValidator *EapQtConfigInterfacePrivate::validatorPacStore( - const EapQtPacStoreConfig::PacStoreSettings id) -{ - qDebug("EapQtConfigInterfacePrivate::validatorPacStore(), this = 0x%08x", this); - - EapQtValidator *ret = NULL; - - switch (id) { - case EapQtPacStoreConfig::PacStorePassword: - ret = new EapQtValidatorPacStorePassword(); - break; - case EapQtPacStoreConfig::PacStorePasswordConfirmation: - ret = new EapQtValidatorPacStorePasswordConfirm(); - break; - default: - ret = NULL; - } - - return ret; -}