diff -r 30e048a7b597 -r bad0cc58d154 eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiCertificates.cpp --- a/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiCertificates.cpp Thu Aug 19 09:58:27 2010 +0300 +++ b/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiCertificates.cpp Tue Aug 31 15:16:37 2010 +0300 @@ -16,7 +16,7 @@ */ /* -* %version: 18.1.2 % +* %version: 52 % */ // This is enumeration of EAPOL source code. @@ -28,22 +28,24 @@ #endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES) #include -#include "EapTlsPeapUtils.h" +//#include "EapTlsPeapUtils.h" #include "EapTlsPeapDbDefaults.h" #include "EapTlsPeapDbParameterNames.h" #include #include -#include -#include "EapTlsPeapCertFetcher.h" +#include #include -#include "eap_am_trace_symbian.h" +#include +#include "EapConversion.h" +#include #include #include -const TUint KMaxSqlQueryLength = 256; const TUint KCertArrayGranularity = 16; +// ---------------------------------------------------------- + CEapTlsPeapUiCertificates::CEapTlsPeapUiCertificates( CEapTlsPeapUiConnection * const aUiConn, MEapTlsPeapUiCertificates * const aParent) @@ -51,83 +53,117 @@ , iUiConn(aUiConn) , iUserCerts(0) , iCACerts(0) +, iEapGeneralSettings(0) , iParent(aParent) +, iEapTypeConnection(0) { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::CEapTlsPeapUiCertificates()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::CEapTlsPeapUiCertificates()\n")); + } +// ---------------------------------------------------------- CEapTlsPeapUiCertificates::~CEapTlsPeapUiCertificates() { - if (iUiConn) - { - Close(); - iUiConn = NULL; - } + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::~CEapTlsPeapUiCertificates()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::~CEapTlsPeapUiCertificates()\n")); + + Close(); } +// ---------------------------------------------------------- TInt CEapTlsPeapUiCertificates::Open() { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::Open()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::Open()\n")); + if (iIsOpened) { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::Open(): KErrAlreadyExists\n"))); return KErrAlreadyExists; } - TInt err = iUiConn->GetDatabase(iDatabase); - if (err != KErrNone) - { - return err; - } + TEapExpandedType aEapType(iUiConn->GetEapType()); - TRAP(err, iCertFetcher = CEapTlsPeapCertFetcher::NewL(this)); - if (err != KErrNone) + TRAPD(error, iEapTypeConnection = CEapType::NewL(iUiConn->GetIndexType(), iUiConn->GetIndex(), aEapType)); + if (error != KErrNone) { - return err; + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::Open(): CEapType::NewL() error=%d\n"),error)); + return error; } + + iEapTypeConnection->SetTunnelingType(iUiConn->GetTunnelingType()); + + TRAP(error, iEapGeneralSettings = CEapGeneralSettings::NewL(iUiConn->GetIndexType(), iUiConn->GetIndex())); + if (error != KErrNone) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::Open(): CEapGeneralSettings::NewL() error=%d\n"),error)); + return error; + } iIsOpened = ETrue; return KErrNone; } +// ---------------------------------------------------------- TInt CEapTlsPeapUiCertificates::Close() { - if (iIsOpened == EFalse) - { - return KErrNone; - } + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::Close()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::Close()\n")); + + if (iIsOpened == EFalse) + { + return KErrNone; + } + + delete iUserCerts; + iUserCerts = 0; - delete iUserCerts; - iUserCerts = 0; - - delete iCACerts; - iCACerts = 0; - - delete iCertFetcher; - iCertFetcher = 0; - - iUiConn = NULL; - return KErrNone; + delete iCACerts; + iCACerts = 0; + + delete iEapGeneralSettings; + iEapGeneralSettings = 0; + + iUiConn = NULL; + + iIsOpened = EFalse; + + return KErrNone; } -TInt CEapTlsPeapUiCertificates::GetCertificates(CArrayFixFlat ** aUserCerts, - CArrayFixFlat ** aCACerts) +// ---------------------------------------------------------- + +TInt CEapTlsPeapUiCertificates::GetCertificates( + RPointerArray ** aUserCerts, + RPointerArray ** aCACerts) { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::GetCertificates()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::GetCertificates()\n")); + if (aUserCerts == NULL || aCACerts == NULL) { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::GetCertificates(): KErrArgument\n"))); return KErrArgument; } + if (iIsOpened == EFalse) { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::GetCertificates(): KErrSessionClosed\n"))); return KErrSessionClosed; } + if (iUserCerts == 0) { - iUserCerts = new CArrayFixFlat(KCertArrayGranularity); + iUserCerts = new RPointerArray(KCertArrayGranularity); if (!iUserCerts) { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::GetCertificates(): iUserCerts, KErrNoMemory\n"))); return KErrNoMemory; } } @@ -136,460 +172,236 @@ if (iCACerts == 0) { - iCACerts = new CArrayFixFlat(KCertArrayGranularity); + iCACerts = new RPointerArray(KCertArrayGranularity); if (!iUserCerts) { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::GetCertificates(): iCACerts, KErrNoMemory\n"))); return KErrNoMemory; } } *aCACerts = iCACerts; - TRAPD(err, iCertFetcher->GetCertificatesL()); + TInt error(KErrNone); + + error = iEapGeneralSettings->GetCertificateLists( + *iUserCerts, + *iCACerts); + + if (error != KErrNone) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::GetCertificates(): GetCertificateLists() error=%d\n"), + error)); + iParent->CompleteReadCertificates(error); + return error; + } + + TRAP(error, SelectActiveCertificatesL()); - return err; + return error; } - + +// ---------------------------------------------------------- + +void CEapTlsPeapUiCertificates::SelectCertificatesL( + const EapCertificateEntry::TCertType aCertType, + const EAPSettings & aSettings, + RPointerArray& aAvailableCerts) +{ + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::SelectCertificatesL(): - Available cert count in device aAvailableCerts.Count()=%d, aSettings.iCertificates.Count()=%d\n"), + aAvailableCerts.Count(), + aSettings.iCertificates.Count())); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::SelectCertificatesL()\n")); + + // Loop through available certs + TInt avail_ind(0); + + for (avail_ind = 0; avail_ind < aAvailableCerts.Count(); ++avail_ind) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::SelectCertificatesL(): loops aAvailableCerts avail_ind=%d, aAvailableCerts.Count()=%d, aSettings.iCertificates.Count()=%d\n"), + avail_ind, + aAvailableCerts.Count(), + aSettings.iCertificates.Count()) ); -void CEapTlsPeapUiCertificates::CompleteReadCertificatesL( - const RArray& aAvailableUserCerts, - const RArray& aAvailableCACerts) + EapCertificateEntry * const avail_cert = aAvailableCerts[avail_ind]; + + EAP_TRACE_SETTINGS(avail_cert); + + avail_cert->SetIsEnabled(EFalse); + + if (aSettings.iCertificatesPresent) + { + TInt select_ind(0); + + for (select_ind = 0; select_ind < aSettings.iCertificates.Count(); ++select_ind) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::SelectCertificatesL(): loops aSettings.iCertificates select_ind=%d\n"), + select_ind ) ); + + EapCertificateEntry * const conf_cert = aSettings.iCertificates[select_ind]; + + EAP_TRACE_SETTINGS(conf_cert); + + if (aCertType == conf_cert->GetCertType() + && avail_cert->GetSubjectKeyId() == conf_cert->GetSubjectKeyId()) + { + avail_cert->SetIsEnabled(ETrue); + + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::SelectCertificatesL(): - Reading certificate details from the DB - Label=%S \n"), + avail_cert->GetLabel() ) ); + + EAP_TRACE_DATA_DEBUG_SYMBIAN(("Subject Key Id:", + avail_cert->GetSubjectKeyId().Ptr(), + avail_cert->GetSubjectKeyId().Length())); + } + } + } + } +} + +// ---------------------------------------------------------- + +void CEapTlsPeapUiCertificates::SelectActiveCertificatesL() { - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::CompleteReadCertificatesL - Available cert count in device - USER=%d, CA=%d \n"), - aAvailableUserCerts.Count(), aAvailableCACerts.Count())); + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::SelectActiveCertificatesL(): - Available cert count in device - USER=%d, CA=%d \n"), + iUserCerts->Count(), iCACerts->Count())); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::SelectActiveCertificatesL()\n")); // Now all available certificates have been read. - // Get the allowed certs from the database and set their iIsEnabled flag -> ETrue. - TInt err(KErrNone); - if (iUiConn->GetEapType() == eap_type_tls) - { - TRAP(err, FetchDataL(KTlsAllowedUserCertsDatabaseTableName, aAvailableUserCerts, iUserCerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::CompleteReadCertificatesL -TLS- USER cert - LEAVE from FetchDataL err=%d\n"), - err)); - - iParent->CompleteReadCertificates(err); - return; - } - TRAP(err, FetchDataL(KTlsAllowedCACertsDatabaseTableName, aAvailableCACerts, iCACerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::CompleteReadCertificatesL -TLS- CA cert - LEAVE from FetchDataL err=%d\n"), - err)); + // Get the allowed certs from the server and set their iIsEnabled flag -> ETrue. - iParent->CompleteReadCertificates(err); - return; - } - - } - else if (iUiConn->GetEapType() == eap_type_peap) - { - - TRAP(err, FetchDataL(KPeapAllowedUserCertsDatabaseTableName, aAvailableUserCerts, iUserCerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::CompleteReadCertificatesL -PEAP- USER cert - LEAVE from FetchDataL err=%d\n"), - err)); - - iParent->CompleteReadCertificates(err); - return; - } - TRAP(err, FetchDataL(KPeapAllowedCACertsDatabaseTableName, aAvailableCACerts, iCACerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::CompleteReadCertificatesL -PEAP- CA cert - LEAVE from FetchDataL err=%d\n"), - err)); - - iParent->CompleteReadCertificates(err); - return; - } + EAPSettings aSettings; + + TRAPD(error, iEapTypeConnection->GetConfigurationL(aSettings)); + if (error) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::SelectActiveCertificatesL(): GetConfigurationL(): failed %d\n"), error)); + iParent->CompleteReadCertificates(error); + User::Leave(error); } - else if (iUiConn->GetEapType() == eap_type_ttls || iUiConn->GetEapType() == eap_type_ttls_plain_pap) - { - - TRAP(err, FetchDataL(KTtlsAllowedUserCertsDatabaseTableName, aAvailableUserCerts, iUserCerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L( - "CEapTlsPeapUiCertificates::CompleteReadCertificatesL -TTLS- USER cert - LEAVE from FetchDataL err=%d\n"), - err)); - - iParent->CompleteReadCertificates(err); - return; - } - TRAP(err, FetchDataL(KTtlsAllowedCACertsDatabaseTableName, aAvailableCACerts, iCACerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L( - "CEapTlsPeapUiCertificates::CompleteReadCertificatesL -TTLS- CA cert - LEAVE from FetchDataL err=%d\n"), - err)); - - iParent->CompleteReadCertificates(err); - return; - } + + TRAP(error, SelectCertificatesL(EapCertificateEntry::EUser, aSettings, *iUserCerts)); + if (error) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::SelectActiveCertificatesL(): SelectCertificatesL(iUserCerts): failed %d\n"), error)); + iParent->CompleteReadCertificates(error); + User::Leave(error); } - -#ifdef USE_FAST_EAP_TYPE - else if (iUiConn->GetEapType() == eap_type_fast) - { - - TRAP(err, FetchDataL(KFastAllowedUserCertsDatabaseTableName, aAvailableUserCerts, iUserCerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L( - "CEapTlsPeapUiCertificates::CompleteReadCertificatesL -FAST- USER cert - LEAVE from FetchDataL err=%d\n"), - err)); - - iParent->CompleteReadCertificates(err); - return; - } - TRAP(err, FetchDataL(KFastAllowedCACertsDatabaseTableName, aAvailableCACerts, iCACerts)); - if (err != KErrNone) - { - EAP_TRACE_DEBUG_SYMBIAN((_L( - "CEapTlsPeapUiCertificates::CompleteReadCertificatesL -FAST- CA cert - LEAVE from FetchDataL err=%d\n"), - err)); - - iParent->CompleteReadCertificates(err); - return; - } + + TRAP(error, SelectCertificatesL(EapCertificateEntry::ECA, aSettings, *iCACerts)); + if (error) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::SelectActiveCertificatesL(): SelectCertificatesL(iCACerts): failed %d\n"), error)); + iParent->CompleteReadCertificates(error); + User::Leave(error); } -#endif //#ifdef USE_FAST_EAP_TYPE - - else - { - iParent->CompleteReadCertificates(KErrNotSupported); - return; - } - + // Operation was successful iParent->CompleteReadCertificates(KErrNone); } -void CEapTlsPeapUiCertificates::FetchDataL( - const TDesC& aTableName, - const RArray& aAvailableCerts, - CArrayFixFlat* const aArray) +// ---------------------------------------------------------- + +void CEapTlsPeapUiCertificates::SaveCertificatesL( + const EapCertificateEntry::TCertType /* aCertType */, + const RPointerArray* const aAvailableCerts, + EAPSettings & aSettings) { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::SaveCertificatesL(): - Available cert count %d \n"), + aAvailableCerts->Count())); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::SaveCertificatesL()\n")); - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::FetchDataL - Fetching & comparing cert details from table:%S\n"), - &aTableName)); + TInt avail_ind(0); + for (avail_ind = 0; avail_ind < aAvailableCerts->Count(); avail_ind++) + { + if ((*aAvailableCerts)[avail_ind]->GetIsEnabled()) + { + EAP_TRACE_SETTINGS((*aAvailableCerts)[avail_ind]); - aArray->Reset(); - - HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); - TPtr sqlStatement = buf->Des(); + // Validate data lengths. + if((*aAvailableCerts)[avail_ind]->GetLabel()->Length() > KMaxCertLabelLengthInDB + || (*aAvailableCerts)[avail_ind]->GetSubjectKeyId().Length() > KMaxSubjectKeyIdLengthInDB) + { + // Too long data. Can not be stored in DB. - // Form the query. Query everything. - _LIT(KSQLQuery, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::UpdateL(): User : Too long Label or SubjectKeyId. Length: Label=%d, SubjectKeyId=%d \n"), + (*aAvailableCerts)[avail_ind]->GetLabel()->Length(), + (*aAvailableCerts)[avail_ind]->GetSubjectKeyId().Length())); + + User::Leave(KErrArgument); + } + +#if 1 - sqlStatement.Format(KSQLQuery, - &aTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - - // Evaluate view - RDbView view; - User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(sqlStatement))); - CleanupClosePushL(view); - User::LeaveIfError(view.EvaluateAll()); - - // Get column set so we get the correct column numbers - CDbColSet* colSet = view.ColSetL(); - CleanupStack::PushL(colSet); - - TEapTlsPeapUiCertificate tmp; - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::FetchDataL - Available certs=%d\n"), - aAvailableCerts.Count())); - - // Loop through available certs - TInt i(0); - for (i = 0; i < aAvailableCerts.Count(); i++) - { - SCertEntry cert = aAvailableCerts[i]; - - tmp.iCertEntry = cert; - tmp.iIsEnabled = EFalse; - - // Try to find the cert from the database rows - if (view.FirstL()) - { - do + EapCertificateEntry * const aCertEntry = (*aAvailableCerts)[avail_ind]->Copy(); + if (aCertEntry == 0) + { + User::Leave(KErrNoMemory); + } + CleanupStack::PushL(aCertEntry); + +#else + + EapCertificateEntry * const aCertEntry = new EapCertificateEntry; + if (aCertEntry == 0) { - view.GetL(); - if ((view.ColDes(colSet->ColNo(KCertLabel)) == cert.iLabel - || view.IsColNull(colSet->ColNo(KCertLabel))) - && view.ColDes8(colSet->ColNo(KSubjectKeyIdentifier)) == cert.iSubjectKeyId) - { - tmp.iIsEnabled = ETrue; - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::FetchDataL - Reading certificate details from the DB - Label=%S \n"), - &(cert.iLabel) ) ); - - EAP_TRACE_DATA_DEBUG_SYMBIAN( ( "Subject Key Id:", cert.iSubjectKeyId.Ptr(), - cert.iSubjectKeyId.Size() ) ); - break; - } - } while (view.NextL() != EFalse); + User::Leave(KErrNoMemory); + } + CleanupStack::PushL(aCertEntry); + + aCertEntry->SetCertType(aCertType); + aCertEntry->GetSubjectKeyIdWritable()->Copy(*((*aAvailableCerts)[avail_ind]->GetSubjectKeyId())); + +#endif + + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::UpdateL(): - Wrote User cert details to the DB - Label=%S \n"), + aCertEntry->GetLabel() ) ); + + EAP_TRACE_DATA_DEBUG_SYMBIAN( ( "Subject Key Id:", + aCertEntry->GetSubjectKeyId().Ptr(), + aCertEntry->GetSubjectKeyId().Length() ) ); + + EAP_TRACE_SETTINGS(aCertEntry); + + aSettings.iCertificates.AppendL(aCertEntry); + + aSettings.iCertificatesPresent = ETrue; + + CleanupStack::Pop(aCertEntry); } - - aArray->AppendL(tmp); } - CleanupStack::PopAndDestroy(); // colset - CleanupStack::PopAndDestroy(); // view - CleanupStack::PopAndDestroy(buf); } +// ---------------------------------------------------------- + TInt CEapTlsPeapUiCertificates::Update() { - TRAPD(err, UpdateL()); - - if(KErrNone != err) + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::Update()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCertificates::Update()\n")); + + EAPSettings aSettings; + + TRAPD(error, SaveCertificatesL(EapCertificateEntry::EUser, iUserCerts, aSettings)); + if (error) { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::Update - UpdateL LEAVES with error =%d \n"), - err)); + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::Update() SaveCertificatesL(iUserCerts): failed %d\n"), error)); + iParent->CompleteReadCertificates(error); + return error; } - return err; + TRAP(error, SaveCertificatesL(EapCertificateEntry::ECA, iCACerts, aSettings)); + if (error) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCertificates::Update() SaveCertificatesL(iCACerts): failed %d\n"), error)); + iParent->CompleteReadCertificates(error); + return error; + } + + TRAP(error,iEapTypeConnection->SetConfigurationL(aSettings)); + + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::Update(): error = %d\n"),error)); + + return error; } - -void CEapTlsPeapUiCertificates::UpdateL() -{ - HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); - TPtr sqlStatement = buf->Des(); - - // USER CERTIFICATES - _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); - - if (iUiConn->GetEapType() == eap_type_tls) - { - sqlStatement.Format( - KSQL, - &KTlsAllowedUserCertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - else if (iUiConn->GetEapType() == eap_type_peap) - { - sqlStatement.Format( - KSQL, - &KPeapAllowedUserCertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - else if (iUiConn->GetEapType() == eap_type_ttls || iUiConn->GetEapType() == eap_type_ttls_plain_pap) - { - sqlStatement.Format( - KSQL, - &KTtlsAllowedUserCertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - -#ifdef USE_FAST_EAP_TYPE - else if (iUiConn->GetEapType() == eap_type_fast) - { - sqlStatement.Format( - KSQL, - &KFastAllowedUserCertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } -#endif //#ifdef USE_FAST_EAP_TYPE - - RDbView view; - User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(sqlStatement), TDbWindow::EUnlimited)); - CleanupClosePushL(view); - User::LeaveIfError(view.EvaluateAll()); - - // Get column set so we get the correct column numbers - CDbColSet* colSet; - colSet = view.ColSetL(); - CleanupStack::PushL(colSet); - - // Delete old rows - if (view.FirstL()) - { - do { - view.DeleteL(); - } while (view.NextL() != EFalse); - } - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::UpdateL - About to update cert details in the DB - User cert count=%d \n"), - iUserCerts->Count())); - - TInt i(0); - for (i = 0; i < iUserCerts->Count(); i++) - { - if ((*iUserCerts)[i].iIsEnabled) - { - // Validate data lengths. - if((*iUserCerts)[i].iCertEntry.iLabel.Length() > KMaxCertLabelLengthInDB - || (*iUserCerts)[i].iCertEntry.iSubjectKeyId.Length() > KMaxSubjectKeyIdLengthInDB) - { - // Too long data. Can not be stored in DB. - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::UpdateL: User : Too long Label or SubjectKeyId. Length: Label=%d, SubjectKeyId=%d \n"), - (*iUserCerts)[i].iCertEntry.iLabel.Length(), (*iUserCerts)[i].iCertEntry.iSubjectKeyId.Length())); - - User::Leave(KErrArgument); - } - - view.InsertL(); - // Set the default values. The other three tables (certs, ca certs & cipher suites) are empty by default. - view.SetColL(colSet->ColNo(KServiceType), static_cast(iUiConn->GetIndexType())); - view.SetColL(colSet->ColNo(KServiceIndex), static_cast(iUiConn->GetIndex())); - view.SetColL(colSet->ColNo(KTunnelingType), static_cast(iUiConn->GetTunnelingType())); - view.SetColL(colSet->ColNo(KCertLabel), (*iUserCerts)[i].iCertEntry.iLabel); - view.SetColL(colSet->ColNo(KSubjectKeyIdentifier), (*iUserCerts)[i].iCertEntry.iSubjectKeyId); - view.SetColL(colSet->ColNo(KActualSubjectKeyIdentifier), (*iUserCerts)[i].iCertEntry.iSubjectKeyId); - view.PutL(); - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::UpdateL - Wrote User cert details to the DB - Label=%S \n"), - &((*iUserCerts)[i].iCertEntry.iLabel) ) ); - - EAP_TRACE_DATA_DEBUG_SYMBIAN( ( "Subject Key Id:", (*iUserCerts)[i].iCertEntry.iSubjectKeyId.Ptr(), - (*iUserCerts)[i].iCertEntry.iSubjectKeyId.Size() ) ); - } - } - - CleanupStack::PopAndDestroy(colSet); - CleanupStack::PopAndDestroy(); // view - - // CA CERTIFICATES - _LIT(KSQL2, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); - - if (iUiConn->GetEapType() == eap_type_tls) - { - sqlStatement.Format( - KSQL2, - &KTlsAllowedCACertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - else if (iUiConn->GetEapType() == eap_type_peap) - { - sqlStatement.Format( - KSQL2, - &KPeapAllowedCACertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - else if (iUiConn->GetEapType() == eap_type_ttls || iUiConn->GetEapType() == eap_type_ttls_plain_pap) - { - sqlStatement.Format( - KSQL2, - &KTtlsAllowedCACertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - -#ifdef USE_FAST_EAP_TYPE - else if (iUiConn->GetEapType() == eap_type_fast) - { - sqlStatement.Format( - KSQL2, - &KFastAllowedCACertsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } -#endif // #ifdef USE_FAST_EAP_TYPE - - User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(sqlStatement), TDbWindow::EUnlimited)); - CleanupClosePushL(view); - User::LeaveIfError(view.EvaluateAll()); - - // Get column set so we get the correct column numbers - colSet = view.ColSetL(); - CleanupStack::PushL(colSet); - - // Delete old rows - if (view.FirstL()) - { - do { - view.DeleteL(); - } while (view.NextL() != EFalse); - } - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::UpdateL - About to update cert details in the DB - CA cert count=%d \n"), - iCACerts->Count())); - - for (i = 0; i < iCACerts->Count(); i++) - { - if ((*iCACerts)[i].iIsEnabled) - { - // Validate data lengths. - if((*iCACerts)[i].iCertEntry.iLabel.Length() > KMaxCertLabelLengthInDB - || (*iCACerts)[i].iCertEntry.iSubjectKeyId.Length() > KMaxSubjectKeyIdLengthInDB) - { - // Too long data. Can not be stored in DB. - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::UpdateL: CA : Too long Label or SubjectKeyId. Length: Label=%d, SubjectKeyId=%d \n"), - (*iCACerts)[i].iCertEntry.iLabel.Length(), (*iCACerts)[i].iCertEntry.iSubjectKeyId.Length())); - - User::Leave(KErrArgument); - } - - view.InsertL(); - // Set the default values. The other three tables (certs, ca certs & cipher suites) are empty by default. - view.SetColL(colSet->ColNo(KServiceType), static_cast(iUiConn->GetIndexType())); - view.SetColL(colSet->ColNo(KServiceIndex), static_cast(iUiConn->GetIndex())); - view.SetColL(colSet->ColNo(KTunnelingType), static_cast(iUiConn->GetTunnelingType())); - view.SetColL(colSet->ColNo(KCertLabel), (*iCACerts)[i].iCertEntry.iLabel); - view.SetColL(colSet->ColNo(KSubjectKeyIdentifier), (*iCACerts)[i].iCertEntry.iSubjectKeyId); - view.SetColL(colSet->ColNo(KActualSubjectKeyIdentifier), (*iCACerts)[i].iCertEntry.iSubjectKeyId); - view.PutL(); - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCertificates::UpdateL - Wrote CA cert details to the DB - Label=%S \n"), - &((*iCACerts)[i].iCertEntry.iLabel) ) ); - - EAP_TRACE_DATA_DEBUG_SYMBIAN( ( "Subject Key Id:", (*iCACerts)[i].iCertEntry.iSubjectKeyId.Ptr(), - (*iCACerts)[i].iCertEntry.iSubjectKeyId.Size() ) ); - } - } - CleanupStack::PopAndDestroy(colSet); - CleanupStack::PopAndDestroy(); // view - - CleanupStack::PopAndDestroy(buf); -} - +// ---------------------------------------------------------- // End of file