securitysettings/qtconfigutils/eapqtconfiginterface/src/eapqtconfiginterface_p.cpp
branchRCL_3
changeset 19 c74b3d9f6b9e
parent 18 bad0cc58d154
--- 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 <QDir>
-#include <QList>
-#include <QVariant>
-#include <QPluginLoader>
-#include <HbTranslator>
-#include <QLocale>
-#include <QCoreApplication>
-#include <QDebug>
-#include <cmmanager.h>
-#include <cmpluginwlandef.h>
-#include <EapGeneralSettings.h>
-#include <eapqtplugininfo.h>
-#include <eapqtcertificateinfo.h>
-
-// 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<TEapExpandedType>* const eapTypes,
-    QList<QByteArray>* 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<const char*> ((*eapTypes)[ind].GetValue().Ptr()),
-            (*eapTypes)[ind].GetValue().Length());
-        eapList->append(tmpEap);
-        qDebug() << "EapQtConfigInterfacePrivate - appendEapTypes added EAP: " << tmpEap.toHex();
-        tmpEap.clear();
-    }
-}
-
-QList<EapQtPluginInfo> 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<QByteArray> 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<EapQtPluginInfo> 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<QByteArray> 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<EapCertificateEntry>* const certEntries,
-    QList<EapQtCertificateInfo>* 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<const char*> (subjectKeyId.Ptr()), subjectKeyId.Length()));
-
-            qDebug() << "EapQtConfigInterfacePrivate - copyCertificateInfo SubjectKeyId: "
-                << (QByteArray(reinterpret_cast<const char*> (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<EapQtCertificateInfo>* const caInfos,
-    QList<EapQtCertificateInfo>* const clientInfos)
-{
-    qDebug("EapQtConfigInterfacePrivate::fetchCertificates(), this = 0x%08x", this);
-
-    Q_ASSERT(caInfos != NULL || clientInfos != NULL);
-    Q_ASSERT(!mEapGsIf.isNull());
-
-    TInt err(KErrNone);
-    RPointerArray<EapCertificateEntry> clientCerts;
-    RPointerArray<EapCertificateEntry> 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<EapQtCertificateInfo> 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<EapQtCertificateInfo> 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> () == EapQtPluginHandle::PluginUndefined)) {
-        tmpOuterHandle = varValue.value<EapQtPluginHandle> ();
-        // 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<QVariant> varList = varValue.toList();
-        TEapExpandedType tmpEap;
-        EapQtPluginHandle tmpHandle;
-        TUint err(KErrNone);
-
-        for (ind = 0; ind < varList.count(); ind++) {
-            if (varList[ind].canConvert<EapQtPluginHandle> ()) {
-                // set to true only if at least one item is ok
-                eapSettings.iEnabledEncapsulatedEAPExpandedTypesPresent = ETrue;
-
-                tmpHandle = varList[ind].value<EapQtPluginHandle> ();
-                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<QVariant> 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<QVariant> varCerts = varValue.toList();
-        for (ind = 0; ind < varCerts.count(); ind++) {
-            // check that the item is of correct type
-            if (varCerts[ind].canConvert<EapQtCertificateInfo> ()) {
-                appendCertificateInfo(true, varCerts[ind].value<EapQtCertificateInfo> (),
-                    &(eapSettings.iCertificates));
-                qDebug()
-                    << "EapQtConfigInterfacePrivate::copyToEapSettings() - AuthorityCertificate appended";
-            }
-        }
-    }
-
-    varValue = config.value(EapQtConfig::UserCertificate);
-    if (varValue.type() == QVariant::List) {
-
-        qDebug() << "EapQtConfigInterfacePrivate::copyToEapSettings() - UserCertificate present";
-
-        QList<QVariant> varCerts = varValue.toList();
-        for (ind = 0; ind < varCerts.count(); ind++) {
-            // check that the item is of correct type
-            if (varCerts[ind].canConvert<EapQtCertificateInfo> ()) {
-                appendCertificateInfo(false, varCerts[ind].value<EapQtCertificateInfo> (),
-                    &(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<EapCertificateEntry>* 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<EapCertificateEntry> 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<KGeneralStringMaxLength> 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<KThumbprintMaxLength> 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<unsigned char*> (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<QVariant> 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<EapQtCertificateInfo> caCerts;
-        QList<EapQtCertificateInfo> clientCerts;
-        RPointerArray<EapCertificateEntry> serverCaCerts;
-        RPointerArray<EapCertificateEntry> 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<EapQtCertificateInfo> to QList<QVariant>
-        // to be able to store to config
-        QVariant tmp;
-        QList<QVariant> varCaCerts;
-        QList<QVariant> 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<QByteArray> innerEapsOn;
-        appendEapTypes(&(eapSettings.iEnabledEncapsulatedEAPExpandedTypes), &innerEapsOn);
-
-        // convert to QList<QVariant> to be able to store to config
-        QVariant varTmp;
-        QList<QVariant> 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<EapQtPluginHandle> EapQtConfigInterfacePrivate::selectedOuterTypes()
-{
-    qDebug("EapQtConfigInterfacePrivate::selectedOuterTypes(), this = 0x%08x", this);
-
-    checkInstanceThrowing();
-
-    if (!mEapDbIndexValid) {
-        qDebug() << "ERROR: Database reference not valid, call setConfigurationReference first!";
-        return QList<EapQtPluginHandle> ();
-    }
-
-    // call to make sure the members (mOuterEapsOn and mSupportedOuterTypes) are up-to-date
-    (void) supportedOuterTypes();
-
-    QList<EapQtPluginHandle> selectedOuterTypes;
-
-    QList<QByteArray> 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<EapQtPluginHandle> &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<CpEapPluginInterface*> (tmp);
-                if (plugin) {
-                    mPlugins.append(plugin);
-                }
-            }
-        }
-
-    // collect UI plugin infos
-    QList<CpEapPluginInterface*>::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<CpEapPluginInterface*>::iterator iter;
-    for (iter = mPlugins.begin(); iter != mPlugins.end(); ++iter) {
-        QList<EapQtPluginInfo> plugins;
-        plugins.append((*iter)->pluginInfo());
-
-        // go through all plugings inside the interface implementation
-        QList<EapQtPluginInfo>::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;
-}