cpsecplugins/cpadvancedsecplugin/src/cpcerttrustview.cpp
branchRCL_3
changeset 50 03674e5abf46
parent 49 09b1ac925e3f
child 54 94da73d93b58
--- a/cpsecplugins/cpadvancedsecplugin/src/cpcerttrustview.cpp	Tue Aug 31 16:04:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,379 +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:   Implementation of class CCertManUIContainerTrust.
-*                Maintains correct list of trusted clients depending
-*                on the certificate that was in focus in Authority
-*                certificates view when Trust Settings view was entered.
-*                Shows and changes correct Yes/No text for the Trusted client.
-*
-*/
-
-// INCLUDE FILES
-#include <certificateapps.h>
-#include <mctcertapps.h>
-#include <mctcertstore.h>
-
-#include <QGraphicsLinearLayout>
-#include <QString>
-#include <QList>
-
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblistwidgetitem.h>
-#include <hblistwidget.h>
-
-#include <memory>
-#include <../../inc/cpsecplugins.h>
-#include "cpcerttrustview.h"
-#include "cpcertdatacontainer.h"
-#include "cpcertmanuisyncwrapper.h"
-#include "cpuitrustids.h"
-
-const TInt KMidpCertStoreUid = 0x101F5B71;
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// ================= MEMBER FUNCTIONS =======================
-
-CpCertTrustView::CpCertTrustView( TInt certificateIndex, CpCertDataContainer& certDataContainer, QGraphicsItem *parent /*= 0*/)
-		: CpBaseSettingView(0,parent), mCertDataContainer(certDataContainer), mCertificateIndex(certificateIndex)
-		{
-		setTitle(tr("Trust Settings"));
-		viewTrustSettings();	 
-		}
-
-// ---------------------------------------------------------
-// CpCertTrustView::~CpCertTrustView()
-// Destructor
-// ---------------------------------------------------------
-//
-CpCertTrustView::~CpCertTrustView()
-    {
-    delete mAppInfoManager;
-    mClientUids.Close();
-    delete mFormModel;	
-    mTrustedClients.erase(mTrustedClients.begin(), mTrustedClients.end());
-    mTrustValues.erase(mTrustValues.begin(), mTrustValues.end());
-    }
-
-
-void CpCertTrustView::viewTrustSettings()
-	{
-	RDEBUG("0", 0);
-	mTrustedClients << " \tWAP connection\t\t";
-	mTrustedClients << " \tMail and Image conn.\t\t";
-	mTrustedClients << " \tNative installing\t\t";
-	mTrustedClients << " \tJava installing\t\t";
-	mTrustedClients << " \tOCSP validation\t\t";
-	mTrustedClients << " \tVPN\t\t";
-	mTrustedClients << " \tWidget Installation\t\t";
-	
-	mTrustValues << "On";
-	mTrustValues << "Off";
-		
-	try
-		{
-		QT_TRAP_THROWING( mAppInfoManager =
-			CCertificateAppInfoManager::NewL( mCertDataContainer.iRfs, EFalse );
-			updateListBoxL();)
-		}
-	catch(std::exception& exception)
-		{
-		QString error(exception.what());
-		QT_TRAP_THROWING(	mCertDataContainer.ShowErrorNoteL( error.toInt()) );
-		throw(exception);
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CpCertTrustView::UpdateListBoxL()
-// Puts correct Trust Settings text to listbox and correct value (yes/no)
-// to the setting, asks the value from CheckCertificateClientTrust
-// For X509 certificates, only one Application is currently supported
-// (Application controller), more applications maybe added later however,
-// so one additional application has been left in comments as an example.
-// WAP connection and Application installer have their names from resources
-// and thus localized,  other additional application get their names from
-// TCertificateAppInfo's Name() function.
-// ---------------------------------------------------------------------------
-//
-
-void CpCertTrustView::updateListBoxL()
-    {
-    RDEBUG("0", 0);
-    mClientUids.Reset();
-
-    TInt clientCount = 0;
-
-    // Use certificate index from previous view
-    CCTCertInfo* entry = mCertDataContainer.iCALabelEntries[ mCertificateIndex ]->iCAEntry;
-
-    // Here MCTCertApps should be used to get client options, but it is not properly
-    // supported in any cert store. It should be possible to get the MCTCertApps
-    // through token's GetInterface function.
-    if ( entry->Token().TokenType().Type() == TUid::Uid( KTokenTypeFileCertstore ) )
-        {
-        if ( !mAppInfoManager )
-            {
-            User::Leave( KErrArgument );
-            }
-        RArray<TCertificateAppInfo> apps;
-        apps = mAppInfoManager->Applications();
-        for ( TInt i = 0; i < apps.Count(); i++ )
-            {
-            if ( apps[i].Id() != KCertManUIViewTrustJavaInstallingId &&
-            		apps[i].Id() != KCertManUIViewTrustApplicationControllerId )
-                {
-                mClientUids.Append( apps[i].Id() );
-                }
-            }
-        }
-    else
-        {
-		mCertDataContainer.iWrapper->GetApplicationsL(
-				mCertDataContainer.CertManager(), *entry, mClientUids );
-        }
-
-    // This is needed because MIDPCertStore does not support MCTCertApps
-    if ( mClientUids.Count() == 0 &&
-        entry->Token().TokenType().Type() == TUid::Uid( KMidpCertStoreUid ) )
-        {
-        mClientUids.Append( KCertManUIViewTrustJavaInstallingId );
-        }
-    
-    if ( EX509Certificate != entry->CertificateFormat() )
-        {
-		return;
-        }
-	TInt resIndex = KErrNotFound;
-	QList <int> itemArray;
-	QList <int> trustValue;
-	clientCount = mClientUids.Count();
-	if ( clientCount > 0 )
-		{
-		for ( TInt k = 0; k < clientCount; k++ )
-			{
-			resIndex = trustIdIndex( mClientUids[k] );
-			if ( resIndex == KErrNotFound )
-				{
-				continue;
-				}
-			
-			// based on the trust list update the array
-			TBool trustState = EFalse;
-			QString item = mTrustedClients[ resIndex ];
-			trustState = checkCertificateClientTrustL( mClientUids[k], *entry );
-			// insert the index which would be used to retrieve the value from mTrustedClients
-			itemArray.insert(k,resIndex);
-			
-			if ( trustState )
-				{
-				trustValue.insert(k,1);
-				}
-			else
-				{
-				trustValue.insert(k,0);
-				}
-			}
-		}
-    // display the list
-    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
-    setLayout(layout);
-    std::auto_ptr<HbDataForm> form(new HbDataForm());
-	mFormModel = new HbDataFormModel();
-	
-	HbListWidget* mCertLabelList = new HbListWidget(this); 
-	std::auto_ptr<HbListWidgetItem> certLabel(q_check_ptr(new HbListWidgetItem()));
-	const TDesC& label = entry->Label();
-	certLabel->setText(QString( (QChar*)label.Ptr(),label.Length() ) );
-	mCertLabelList->addItem(certLabel.get());
-	certLabel.release();
-	
-	RDEBUG("0", 0);
-	
-	int count = itemArray.size();
-	for( int index = 0 ;index < count; ++index)
-		{
-		std::auto_ptr<HbDataFormModelItem> item (q_check_ptr(new HbDataFormModelItem( 
-										HbDataFormModelItem::ToggleValueItem,
-										mTrustedClients[itemArray[index]] ) ));
-		
-		if( trustValue[index] == 1)
-			{
-			item->setContentWidgetData("text",mTrustValues[0]);
-			item->setContentWidgetData("additionalText",mTrustValues[1]);
-			}
-		else
-			{
-			item->setContentWidgetData("text",mTrustValues[1]);
-			item->setContentWidgetData("additionalText",mTrustValues[0]);
-			}
-		mFormModel->appendDataFormItem(item.get());
-		item.release();
-		}
-	
-	form->setModel(mFormModel);
-	layout->addItem(mCertLabelList);
-	layout->addItem(form.get());
-	form.release();
-    }
-
-
-void CpCertTrustView::saveTrustSettings()
-	{
-	RDEBUG("0", 0);
-	CCTCertInfo& entry = *( mCertDataContainer.iCALabelEntries[ mCertificateIndex ]->iCAEntry );
-	if ( entry.IsDeletable() )
-		{
-		TInt itemCount = mFormModel->rowCount();
-		RArray<TUid> newUids;
-		QT_TRAP_THROWING
-			(	
-			CleanupClosePushL( newUids );
-			
-			for(int index = 0;index<itemCount;++index)
-				{
-				HbDataFormModelItem *item = mFormModel->item(index);
-				QString trustValue = item->contentWidgetData("text").toString();
-				if(trustValue == "On")
-					{
-					newUids.Append(trusterId(mTrustedClients[index]));
-					}
-				}
-			if(newUids.Count() > 0 )
-				{
-				mCertDataContainer.iWrapper->SetApplicabilityL( mCertDataContainer.CertManager(), entry, newUids );
-				}
-			CleanupStack::PopAndDestroy(&newUids);
-			)
-		}
-	}
-
-TUid CpCertTrustView::trusterId(const QString& clientDescription) const
-	{
-	RDEBUG("0", 0);
-	TUid retValue = TUid::Uid(0);
-	if( clientDescription ==  " \tWAP connection\t\t" )
-		retValue = KCertManUIViewTrustWapConnectionId;
-	else if( clientDescription ==  " \tMail and Image conn.\t\t" )
-		retValue = KCertManUIViewTrustMailAndImageConnId;
-	else if( clientDescription ==  " \tNative installing\t\t" )
-		retValue = KCertManUIViewTrustApplicationControllerId;
-	else if( clientDescription ==  " \tJava installing\t\t" )
-		retValue = KCertManUIViewTrustJavaInstallingId;
-	else if( clientDescription ==  " \tOCSP validation\t\t" )
-		retValue = KCertManUIViewOCSPCheckInstallingId;
-	else if( clientDescription ==  " \tVPN\t\t" )
-		retValue = KCertManUIViewTrustVPNId;
-	else if( clientDescription ==  " \tWidget Installation\t\t" )
-		retValue = KCertManUIViewTrustWidgetInstallId;
-	return retValue;
-	}
-
-// ---------------------------------------------------------------------------
-// CpCertTrustView::trustIdIndex( TUid trustUid )
-// ---------------------------------------------------------------------------
-//
-TInt CpCertTrustView::trustIdIndex( TUid trustUid ) const
-    {
-    RDEBUG("0", 0);
-    TInt resIndex = KErrNotFound;
-    
-    if ( trustUid == KCertManUIViewTrustApplicationControllerId )
-        {
-        resIndex = KTrustSettingsResourceIndexAppCtrl;
-        }
-    else if( trustUid == KCertManUIViewTrustWapConnectionId )
-    	{
-		resIndex = KTrustSettingsResourceIndexWAP;
-    	}
-    else if ( trustUid == KCertManUIViewTrustMailAndImageConnId )
-        {
-        resIndex = KTrustSettingsResourceIndexMailAndImageConn;
-        }
-    else if ( trustUid == KCertManUIViewTrustJavaInstallingId )
-        {
-        resIndex = KTrustSettingsResourceIndexJavaInstall;
-        }
-    else if ( trustUid == KCertManUIViewOCSPCheckInstallingId )
-        {
-        resIndex = KTrustSettingsResourceIndexOCSPCheck;
-        }
-    else if ( trustUid == KCertManUIViewTrustVPNId )
-        {
-        resIndex = KTrustSettingsResourceIndexVPN;
-        }
-    else if ( trustUid == KCertManUIViewTrustWidgetInstallId )
-		{
-		resIndex = KTrustSettingsResourceIndexWidget;
-		}
-    return resIndex;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CpCertTrustView::CheckCertificateClientTrustL(const TUid aClientTUid,
-// CCTCertInfo& aEntry) const
-// Checks if a certificate trusts a client
-// * Certificate format == ECrX509Certificate ECrX968Certificate ECrCertificateURL
-// are not supported if certificate location == ECrCertLocationWIMCard
-// * Certificate format == ECrX968Certificate ECrCertificateURL are not supported
-// if certificate location == ECrCertLocationCertMan
-// * Certificate location == ECrCertLocationWIMURL ECrCertLocationPhoneMemory
-// ECrCertLocationPhoneMemoryURL are not supported
-// ---------------------------------------------------------------------------
-//
-TBool CpCertTrustView::checkCertificateClientTrustL(
-    const TUid clientUid, const CCTCertInfo& entry ) const
-    {
-    RDEBUG("0", 0);
-    TBool trustSettingTrusted = EFalse;
-    TCertificateFormat format = entry.CertificateFormat();
-
-    if ( format == EX509Certificate )
-        {
-
-        RArray<TUid> trusterUids;
-        CleanupClosePushL( trusterUids );
-
-        //Owned by mCertDataContainer.
-        CUnifiedCertStore*& store = mCertDataContainer.CertManager();
-        // Get trusting applications' Uids for the one selected
-        // certificate entry
-        mCertDataContainer.iWrapper->GetApplicationsL( store, entry, trusterUids );
-
-        // get the number of trusting applications for one
-        // selected certificate entry
-        TInt trusterCount = trusterUids.Count();
-        // in this loop, for every trusting application in one
-        // selected certificate entry
-        for ( TInt i = 0; i < trusterCount; ++i )
-            {
-            // put the trusting application's Uid to TUid truster
-            if ( clientUid == trusterUids[i] )
-                {
-                trustSettingTrusted = ETrue;
-                break;
-                }
-            }
-        CleanupStack::PopAndDestroy(&trusterUids);  
-        }
-    
-    return trustSettingTrusted;
-    }
-
-// End of File
-