--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/cpadvancedsecplugin.pro Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,108 @@
+#
+# Copyright (c) 2009 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: Advanced security settings (control panel plugin)
+#
+
+TEMPLATE = lib
+TARGET = cpadvancedsecplugin
+CONFIG += hb plugin
+LIBS += -lcpframework
+
+HEADERS += inc/advsecsettingsloader.h \
+ inc/advsecsettingscertificatemodel.h \
+ inc/advsecsettingscertificate.h \
+ inc/advsecsettingstrustedcertusageuids.h \
+ inc/advsecsettingsstoreuids.h \
+ inc/advsecsettingsviewbase.h \
+ inc/advsecsettingsmainview.h \
+ inc/advsecsettingscertificatelistview.h \
+ inc/advsecsettingscertificatedetailview.h \
+ inc/advsecsettingscerttrustsettingsview.h \
+ inc/advsecsettingssecuritymodulemodel.h \
+ inc/advsecsettingssecuritymoduleview.h \
+ inc/advsecsettingssecuritymoduledetailview.h
+
+SOURCES += src/advsecsettingsloader.cpp \
+ src/advsecsettingscertificatemodel.cpp \
+ src/advsecsettingscertificate.cpp \
+ src/advsecsettingsviewbase.cpp \
+ src/advsecsettingsmainview.cpp \
+ src/advsecsettingscertificatelistview.cpp \
+ src/advsecsettingscertificatedetailview.cpp \
+ src/advsecsettingscerttrustsettingsview.cpp \
+ src/advsecsettingssecuritymodulemodel.cpp \
+ src/advsecsettingssecuritymoduleview.cpp \
+ src/advsecsettingssecuritymoduledetailview.cpp
+
+symbian: {
+ TARGET.CAPABILITY = CAP_ECOM_PLUGIN
+ TARGET.UID3 = 0X2002E684
+ TARGET.EPOCALLOWDLLDATA = 1
+
+ INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+
+ LIBS += -lefsrv # RFs
+ LIBS += -lcertstore # CUnifiedCertStore
+ LIBS += -lctframework # CCTCertInfo
+ LIBS += -lx509 # CX509Certificate
+ LIBS += -lpkixcert # CPKIXValidationResult
+ LIBS += -lX509CertNameParser # X509CertNameParser
+ LIBS += -lhash # CMD5
+ LIBS += -lDevTokenClient # CTrustSitesStore
+ LIBS += -lcryptography # CRSAParameters, CDSAPublicKey, TInteger::BitCount
+ LIBS += -lcrypto # CValidityPeriod, CSignedObject, CAlgorithmIdentifier
+
+ PLUGIN_STUB_PATH = /resource/qt/plugins/controlpanel
+
+ deploy.path = C:
+ pluginstub.sources = $${TARGET}.dll
+ pluginstub.path = $$PLUGIN_STUB_PATH
+ DEPLOYMENT += pluginstub
+
+ qtplugins.path = $$PLUGIN_STUB_PATH
+ qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
+
+ BLD_INF_RULES.prj_exports += \
+ "$${LITERAL_HASH}include <platform_paths.hrh>" \
+ "rom/cpadvancedsecplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(cpadvancedsecplugin.iby)" \
+ "rom/cpadvancedsecplugin_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(cpadvancedsecplugin_resources.iby)"
+
+ for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin $$deploy.path$$qtplugins.path/$$basename(qtplugin)"
+
+ MMP_RULES += SMPSAFE
+
+ HEADERS += inc/advsecsettingscertificatemodel_symbian_p.h \
+ inc/advsecsettingscertlistbuilder_symbian.h \
+ inc/advsecsettingscertdetailsbuilder_symbian.h \
+ inc/advsecsettingslabeledcertinfo_symbian.h \
+ inc/advsecsettingscertmover_symbian.h \
+ inc/advsecsettingssecuritymodulemodel_symbian_p.h \
+ inc/advsecsettingssecuritymodule_symbian.h \
+ inc/advsecsettingssecuritymoduleeraser_symbian.h
+ SOURCES += src/advsecsettingscertificatemodel_symbian_p.cpp \
+ src/advsecsettingscertlistbuilder_symbian.cpp \
+ src/advsecsettingscertdetailsbuilder_symbian.cpp \
+ src/advsecsettingslabeledcertinfo_symbian.cpp \
+ src/advsecsettingscertmover_symbian.cpp \
+ src/advsecsettingssecuritymodulemodel_symbian_p.cpp \
+ src/advsecsettingssecuritymodule_symbian.cpp \
+ src/advsecsettingssecuritymoduleeraser_symbian.cpp
+} else {
+ HEADERS += inc/advsecsettingscertificatemodel_stub_p.h \
+ inc/advsecsettingssecuritymodulemodel_stub_p.h
+ SOURCES += src/advsecsettingscertificatemodel_stub_p.cpp \
+ src/advsecsettingssecuritymodulemodel_stub_p.cpp
+}
+
+TRANSLATIONS = certificate_manager.ts
--- a/cpsecplugins/cpadvancedsecplugin/group/advancedsecplugin.pri Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +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: advancedsecplugin source files
-
-# Input
-HEADERS += ../inc/cpcertdatacontainer.h \
- ../inc/cpcertdetailview.h \
- ../inc/cpcertmanuisyncwrapper.h \
- ../inc/cpcerttrustview.h \
- ../inc/cpcertview.h \
- ../inc/cpcertpluginloader.h \
- ../inc/cpsecurityview.h \
- ../inc/cpuitrustids.h \
- ../inc/cpsecmodview.h \
- ../inc/cpsecmodmodel.h \
- ../inc/cpsecmodsyncwrapper.h \
- ../inc/cpmoduleview.h \
- ../inc/cpsecmoduleinfoview.h
-
-SOURCES += ../src/cpcertdatacontainer.cpp \
- ../src/cpcertdetailview.cpp \
- ../src/cpcertmanuisyncwrapper.cpp \
- ../src/cpcerttrustview.cpp \
- ../src/cpcertview.cpp \
- ../src/cpcertpluginloader.cpp \
- ../src/cpsecurityview.cpp \
- ../src/cpsecmodview.cpp \
- ../src/cpsecmodsyncwrapper.cpp \
- ../src/cpsecmodmodel.cpp \
- ../src/cpmoduleview.cpp \
- ../src/cpsecmoduleinfoview.cpp
-
--- a/cpsecplugins/cpadvancedsecplugin/group/advancedsecplugin.pro Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-
-#
-# Copyright (c) 2009 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:
-#
-
-TEMPLATE = lib
-TARGET = cpadvancedsecplugin
-
-CONFIG += hb plugin
-
-LIBS += -lcpframework
-
-include ( advancedsecplugin.pri )
-include ( ../rom/cpsecplugins_rom.pri )
-
-symbian: {
- TARGET.CAPABILITY = CAP_ECOM_PLUGIN
- TARGET.UID3 = 0X2002E684
- INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
- INCLUDEPATH += ../inc
- TARGET.EPOCALLOWDLLDATA = 1
- LIBS += -lcertstore
- LIBS += -lCTFramework
- LIBS += -lX509
- LIBS += -lpkixcert
- LIBS += -lx509certnameparser
- LIBS += -lhash
- LIBS += -lcryptography
- LIBS += -lDevTokenClient
- LIBS += -lcrypto
- LIBS += -lefsrv
-
- PLUGIN_STUB_PATH = /resource/qt/plugins/controlpanel
-
- deploy.path = C:
- pluginstub.sources = $${TARGET}.dll
- pluginstub.path = $$PLUGIN_STUB_PATH
- DEPLOYMENT += pluginstub
-
- qtplugins.path = $$PLUGIN_STUB_PATH
- qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
-
- for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin $$deploy.path$$qtplugins.path/$$basename(qtplugin)"
- }
-
-TRANSLATIONS= certificate_manager.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertdetailsbuilder_symbian.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,100 @@
+/*
+* 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: Helper class to construct certificate details
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTDETAILSBUILDER_SYMBIAN_H
+#define ADVSECSETTINGSCERTDETAILSBUILDER_SYMBIAN_H
+
+#include <e32base.h> // CActive
+#include <ct/rmpointerarray.h> // RMPointerArray
+#include <unifiedcertstore.h> // CUnifiedCertStore
+#include <QMap>
+
+class RFs;
+class CUnifiedCertStore;
+class CUnifiedKeyStore;
+class CCTCertInfo;
+class CCTKeyInfo;
+class CCertAttributeFilter;
+class TCTKeyAttributeFilter;
+
+
+/**
+ * Certificate details helper class.
+ */
+class CAdvSecSettingsCertDetailsBuilder : public CActive
+{
+public: // constructor and destructor
+ static CAdvSecSettingsCertDetailsBuilder *NewL(RFs &aFs, CUnifiedCertStore &aCertStore);
+ ~CAdvSecSettingsCertDetailsBuilder();
+
+public: // new functions
+ void GetDetailsL(const CCTCertInfo &aCert, QMap<int,QString> &aDetails,
+ TRequestStatus &aStatus);
+
+protected: // from CActive
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+private: // new functions
+ CAdvSecSettingsCertDetailsBuilder(RFs &aFs, CUnifiedCertStore &aCertStore);
+ void ConstructL();
+ void InitializeKeyStoreL();
+ void RetrieveCertificateL();
+ void ListKeysL();
+ void ReturnCertificateDetailsL();
+ void AppendLabelL();
+ void AppendIssuerL();
+ void AppendSubjectL();
+ void AppendValidityPeriodL();
+ void AppendLocationL();
+ void AppendFormatL();
+ void AppendKeyUsageL();
+ void AppendAlgorithmL();
+ void AppendSerialNumberL();
+ void AppendFingerprintsL();
+ void AppendPublicKeyL();
+ void AppendTrustedSitesL();
+ QString CertificateFormatStringL(const TCertificateFormat aFormat) const;
+ QString AlgorithmNameStringL(TAlgorithmId aAlgorithmId) const;
+
+private: // data
+ RFs &iFs;
+ CUnifiedCertStore &iCertStore;
+ const CCTCertInfo *iCertInfo; // not owned
+ TRequestStatus *iClientStatus; // not owned
+ QMap<int,QString> *iDetails; // not owned
+
+ CCertificate *iCertificate;
+ HBufC8 *iCertificateUrl;
+ TPtr8 iCertUrlPtr;
+
+ CUnifiedKeyStore *iKeyStore;
+ TCTKeyAttributeFilter *iKeyFilter;
+ RMPointerArray<CCTKeyInfo> iKeys;
+
+ enum TDetailsBuilderState {
+ ENotInitialized,
+ EInitializingKeyStore,
+ ERetrievingCertificate,
+ EListingKeys,
+ EIdle,
+ EFailed
+ } iState;
+};
+
+#endif // ADVSECSETTINGSCERTDETAILSBUILDER_SYMBIAN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertificate.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* 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 the License "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: Certificate class in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTIFICATE_H
+#define ADVSECSETTINGSCERTIFICATE_H
+
+#include <QObject>
+
+
+/**
+ * Certificate class in advances security settings.
+ */
+class AdvSecSettingsCertificate : public QObject
+{
+ Q_OBJECT
+
+public: // new definitions
+ enum CertificateType {
+ NotDefined,
+ AuthorityCertificate,
+ TrustedSiteCertificate,
+ PersonalCertificate,
+ DeviceCertificate
+ };
+
+public: // constructor and destructor
+ explicit AdvSecSettingsCertificate(QObject *parent = 0);
+ virtual ~AdvSecSettingsCertificate();
+
+public: // new functions
+ CertificateType certType() const;
+ void setCertType(CertificateType type);
+
+ const QString &label() const;
+ void setLabel(const QString &label);
+
+ int modelIndex() const;
+ void setModelIndex(int index);
+
+private: // new functions
+ Q_DISABLE_COPY(AdvSecSettingsCertificate)
+
+private: // data
+ CertificateType mCertType;
+ QString mLabel;
+ int mModelIndex;
+};
+
+
+#endif // ADVSECSETTINGSCERTIFICATE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertificatedetailview.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* 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: Certificate detail view in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTIFICATEDETAILVIEW_H
+#define ADVSECSETTINGSCERTIFICATEDETAILVIEW_H
+
+#include "advsecsettingsviewbase.h"
+
+class AdvSecSettingsCertificate;
+class AdvSecSettingsCertificateModel;
+class HbGroupBox;
+class HbScrollArea;
+class HbLabel;
+
+
+/**
+ * Certificate detail view in advanced security settings. Certificate
+ * detail view shows certificate details (subject, issuer, validity
+ * dates, fingerprints, etc).
+ */
+class AdvSecSettingsCertificateDetailView : public AdvSecSettingsViewBase
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsCertificateDetailView(AdvSecSettingsCertificateModel &model,
+ QGraphicsItem *parent = 0);
+ virtual ~AdvSecSettingsCertificateDetailView();
+
+public: // new functions
+ void setCertificate(const AdvSecSettingsCertificate &cert);
+
+private slots:
+ void certificateDetailsCompleted();
+ void showTrustSettings();
+ void deleteCertificate();
+ void deleteConfirmationAccepted();
+
+private: // data
+ AdvSecSettingsCertificateModel &mModel;
+ const AdvSecSettingsCertificate *mCertificate; // not owned
+ QMap<int, QString> mDetails;
+ HbGroupBox *mViewLabel;
+ HbScrollArea *mScrollArea;
+ HbLabel *mDetailsText;
+};
+
+#endif // ADVSECSETTINGSCERTIFICATEDETAILVIEW_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertificatelistview.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* 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: Certificate list view in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTIFICATELISTVIEW_H
+#define ADVSECSETTINGSCERTIFICATELISTVIEW_H
+
+#include "advsecsettingsviewbase.h"
+#include "advsecsettingscertificate.h" // CertificateType
+
+class HbAbstractViewItem;
+class HbGroupBox;
+class HbListWidget;
+class HbLabel;
+class HbStackedWidget;
+class AdvSecSettingsCertificateModel;
+class AdvSecSettingsCertificateDetailView;
+class AdvSecSettingsCertTrustSettingsView;
+
+
+/**
+ * Certificate list view in advanced security settings. Certificate
+ * list view shows certificate list -- either authority certificates,
+ * list, trusted site certificates list, personal certificates list,
+ * or dervice certificates list.
+ */
+class AdvSecSettingsCertificateListView : public AdvSecSettingsViewBase
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsCertificateListView(QGraphicsItem *parent = 0);
+ virtual ~AdvSecSettingsCertificateListView();
+
+public: // new functions
+ void displayCertificates(AdvSecSettingsCertificate::CertificateType type);
+ void setCurrentIndex(const QModelIndex& index);
+
+private slots:
+ void indicateLongPress(HbAbstractViewItem *item, const QPointF &position);
+ void openCertificate(const QModelIndex& modelIndex);
+ void openCurrentCertificate();
+ void displayCurrentCertTrustSettings();
+ void deleteCurrentCertificate();
+ void deleteConfirmationAccepted();
+ void moveCurrentCertToDeviceCertificates();
+ void moveToDeviceCertsConfirmationAccepted();
+ void moveCurrentCertToPersonalCertificates();
+ void moveToPersonalCertsConfirmationAccepted();
+ void readAllCertificatesFromModel();
+ void displayAllCertificatesReadFromModel();
+ void refreshAfterCurrentCertRemoved();
+
+private: // new functions
+ void clearModelCertificates();
+ void refreshDisplayedCertificates();
+
+private: // data
+ AdvSecSettingsCertificate::CertificateType mCertType;
+ HbGroupBox *mViewLabel;
+ HbListWidget *mListWidget; // Displayed cert list, for example Authority certificates
+ HbLabel *mEmptyText;
+ HbLabel *mRetrievingText;
+ HbStackedWidget *mStackedWidget;
+ bool mIsRetrieving;
+ QList<AdvSecSettingsCertificate *> mModelCertificateList; // All certs read from model
+ QList<AdvSecSettingsCertificate *> mDisplayedCertificates; // Displayed (like Authority) certs
+ AdvSecSettingsCertificateModel *mModel;
+ AdvSecSettingsCertificateDetailView *mDetailView;
+ AdvSecSettingsCertTrustSettingsView *mTrustSettingsView;
+ AdvSecSettingsCertificate *mCurrentCertificate; // not owned
+};
+
+#endif // ADVSECSETTINGSCERTIFICATELISTVIEW_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertificatemodel.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* 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 the License "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: Certificate handling model in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTIFICATEMODEL_H
+#define ADVSECSETTINGSCERTIFICATEMODEL_H
+
+#include <QObject>
+#include <QList>
+#include <QMap>
+
+class AdvSecSettingsCertificateModelPrivate;
+class AdvSecSettingsCertificate;
+
+
+/**
+ * Certificate handling engine in advanced security settings control panel plugin.
+ */
+class AdvSecSettingsCertificateModel : public QObject
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsCertificateModel(QObject *parent = 0);
+ virtual ~AdvSecSettingsCertificateModel();
+
+public: // new definitions
+ enum AdvSecSettingsCertificateDetailsField {
+ Label,
+ Issuer,
+ Subject,
+ ValidFrom,
+ ValidTo,
+ Location,
+ Format,
+ KeyUsage,
+ KeyLocation,
+ Algorithm,
+ SerialNumber,
+ FingerprintSHA1,
+ FingerprintMD5,
+ PublicKey,
+ TrustedSites
+ };
+
+public: // new functions
+ void initialize(); // asynchronous
+ void getCertificates(QList<AdvSecSettingsCertificate*> &certList); // asynchronous
+ void getCertificateDetails(const AdvSecSettingsCertificate &cert,
+ QMap<int,QString> &details); // asynchronous
+ bool isDeletable(const AdvSecSettingsCertificate &cert) const;
+ void deleteCertificate(const AdvSecSettingsCertificate &cert); // asynchronous
+ void getTrustSettings(const AdvSecSettingsCertificate &cert,
+ QMap<int,bool> &usageIdAndTrust); // asynchronous
+ void setTrustSettings(const AdvSecSettingsCertificate &cert,
+ const QMap<int,bool> &usageIdAndTrust); // asynchronous
+ void getCertificateUsageNames(QMap<int,QString> &usageIdAndName);
+ void moveToPersonalCertificates(const AdvSecSettingsCertificate &cert); // asynchronous
+ void moveToDeviceCertificates(const AdvSecSettingsCertificate &cert); // asynchronous
+
+signals: // new signals
+ void initializeCompleted();
+ void getCertificatesCompleted();
+ void getCertificateDetailsCompleted();
+ void deleteCertificateCompleted();
+ void getTrustSettingsCompleted();
+ void setTrustSettingsCompleted();
+ void moveToPersonalCertificatesCompleted();
+ void moveToDeviceCertificatesCompleted();
+ void errorOccurred(int error);
+
+protected: // new functions
+ void handleInitializeCompleted();
+ void handleGetCertificatesCompleted();
+ void handleGetCertificateDetailsCompleted();
+ void handleDeleteCertificateCompleted();
+ void handleGetTrustSettingsCompleted();
+ void handleSetTrustSettingsCompleted();
+ void handleMoveToPersonalCertificateCompleted();
+ void handleMoveToDeviceCertificatesCompleted();
+ void handleError(int error);
+
+private: // data
+ Q_DISABLE_COPY(AdvSecSettingsCertificateModel)
+ friend class AdvSecSettingsCertificateModelPrivate;
+ AdvSecSettingsCertificateModelPrivate *d_ptr;
+};
+
+#endif // ADVSECSETTINGSCERTIFICATEMODEL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertificatemodel_stub_p.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* 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 the License "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: Generic stub for platform specific private certificate handling model
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTIFICATEMODELPRIVATE_STUB_H
+#define ADVSECSETTINGSCERTIFICATEMODELPRIVATE_STUB_H
+
+#include <QObject>
+#include <QMap>
+
+class AdvSecSettingsCertificateModel;
+class AdvSecSettingsCertificate;
+
+
+/**
+ * Generic stub for platform specific private certificate handling model.
+ * This is just a stub. Real functionality is provided in platform specific
+ * AdvSecSettingsCertificateModelPrivate implementations.
+ */
+class AdvSecSettingsCertificateModelPrivate : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit AdvSecSettingsCertificateModelPrivate(
+ AdvSecSettingsCertificateModel *q);
+ virtual ~AdvSecSettingsCertificateModelPrivate();
+
+ void initialize();
+ void getCertificates(QList<AdvSecSettingsCertificate *> &certList);
+ void getCertificateDetails(const AdvSecSettingsCertificate &cert,
+ QMap<int,QString> &details);
+ bool isDeletable(const AdvSecSettingsCertificate &cert) const;
+ void deleteCertificate(const AdvSecSettingsCertificate &cert);
+ void getTrustSettings(const AdvSecSettingsCertificate &cert,
+ QMap<int,bool> &usageIdAndTrust);
+ void setTrustSettings(const AdvSecSettingsCertificate &cert,
+ const QMap<int,bool> &usageIdAndTrust);
+ void getCertificateUsageNames(QMap<int,QString> &usageIdAndName);
+ void moveToPersonalCertificates(const AdvSecSettingsCertificate &cert);
+ void moveToDeviceCertificates(const AdvSecSettingsCertificate &cert);
+
+private:
+ Q_DISABLE_COPY(AdvSecSettingsCertificateModelPrivate)
+ AdvSecSettingsCertificateModel *q_ptr;
+};
+
+#endif // ADVSECSETTINGSCERTIFICATEMODELPRIVATE_STUB_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertificatemodel_symbian_p.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,134 @@
+/*
+* 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 the License "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: Symbian specific advanced security settings certificate model
+*
+*/
+
+#ifndef CPADVSECSETTINGSMODELPRIVATE_SYMBIAN_H
+#define CPADVSECSETTINGSMODELPRIVATE_SYMBIAN_H
+
+#include <e32base.h> // CActive
+#include <f32file.h> // RFs
+#include <unifiedcertstore.h> // CUnifiedCertStore related
+#include <QMap>
+
+class AdvSecSettingsCertificateModel;
+class AdvSecSettingsCertificate;
+class CAdvSecSettingsCertListBuilder;
+class CAdvSecSettingsCertDetailsBuilder;
+class CCertificateAppInfoManager;
+class CAdvSecSettingsCertMover;
+
+
+/**
+ * Symbian specific advanced security settings certificate model.
+ */
+class AdvSecSettingsCertificateModelPrivate : public CActive
+{
+public: // constructor and destructor
+ explicit AdvSecSettingsCertificateModelPrivate(
+ AdvSecSettingsCertificateModel *q = 0);
+ ~AdvSecSettingsCertificateModelPrivate();
+
+public: // new functions
+ void initialize();
+ void getCertificates(QList<AdvSecSettingsCertificate*> &certList);
+ void getCertificateDetails(const AdvSecSettingsCertificate &cert,
+ QMap<int,QString> &details);
+ bool isDeletable(const AdvSecSettingsCertificate &cert) const;
+ void deleteCertificate(const AdvSecSettingsCertificate &cert);
+ void getTrustSettings(const AdvSecSettingsCertificate &cert,
+ QMap<int,bool> &usageIdAndTrust);
+ void setTrustSettings(const AdvSecSettingsCertificate &cert,
+ const QMap<int,bool> &usageIdAndTrust);
+ void getCertificateUsageNames(QMap<int,QString> &usageIdAndName);
+ void moveToPersonalCertificates(const AdvSecSettingsCertificate &cert);
+ void moveToDeviceCertificates(const AdvSecSettingsCertificate &cert);
+
+protected: // from CActive
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+private: // new functions
+ Q_DISABLE_COPY(AdvSecSettingsCertificateModelPrivate)
+ void ConstructL();
+ TInt ResetCertAttributeFilter();
+ TInt ResetCertInfoArray();
+ void ReturnTrustSettingsDetails();
+ void DoGetCertificateUsageNamesL(QMap<int,QString> &usageIdAndName);
+ const CCTCertInfo *CertificateInfo(const AdvSecSettingsCertificate &cert) const;
+
+private: // data
+ AdvSecSettingsCertificateModel *q_ptr;
+
+ enum TState {
+ ENotInitialized,
+ EInitializing,
+ EIdle,
+ EGettingCertificatesList,
+ EGettingCertificatesRetrieve,
+ EBuildingCertificateDetails,
+ EDeletingCertificate,
+ EReadingApplications,
+ EWritingApplications,
+ EMovingCertificateToPersonalStore,
+ EMovingCertificateToDeviceStore
+ } iState;
+
+ RFs iFs;
+ CUnifiedCertStore *iCertStore;
+
+ /*
+ * Common to all certificate specific asynchronous methods. Member iCertInfo
+ * contains pointer to the current certificate being processed. Member
+ * iCertInfoArray contains all certificates read from certificate databases.
+ */
+ const CCTCertInfo *iCertInfo; // not owned
+ RMPointerArray<CCTCertInfo> iCertInfoArray;
+
+ /*
+ * for getCertificates method. Certificate list is constructed using
+ * iCertListBuilder member, which returns data directly to the client.
+ */
+ CAdvSecSettingsCertListBuilder *iCertListBuilder;
+
+ /*
+ * For getCertificateDetails method. Certificate details are constructed
+ * using iDetailsBuilder member, which returns data directly to the client.
+ */
+ CAdvSecSettingsCertDetailsBuilder *iDetailsBuilder;
+
+ /*
+ * For getTrustSettings method. Data is retrieved from certificate store into
+ * iApplications member, and then returned to client via iTrustedUids member.
+ */
+ QMap<int,bool> *iTrustedUids; // not owned
+ RArray<TUid> iApplications;
+
+ /*
+ * For getTrustSettings and getCertificateUsageNames methods to get possible
+ * certificate application (usage) ids and their names.
+ */
+ CCertificateAppInfoManager *iCertAppInfoManager;
+
+ /*
+ * For moveToPersonalCertificates and moveToDeviceCertificates methods.
+ * Takes care of moving certificate and it's key to given target store.
+ */
+ CAdvSecSettingsCertMover *iMover;
+};
+
+#endif // CPADVSECSETTINGSMODELPRIVATE_SYMBIAN_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertlistbuilder_symbian.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* 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: Helper class to construct certificate list
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTLISTBUILDER_SYMBIAN_H
+#define ADVSECSETTINGSCERTLISTBUILDER_SYMBIAN_H
+
+#include <e32base.h> // CActive
+#include "advsecsettingscertificate.h" // CertificateType
+#include <ct/rmpointerarray.h> // RMPointerArray
+#include <unifiedcertstore.h> // CUnifiedCertStore
+#include <QList>
+
+class RFs;
+class CCTCertInfo;
+class CCertAttributeFilter;
+class CAdvSecSettingsLabeledCertInfo;
+
+
+/**
+ * Certificate list builder helper class.
+ */
+class CAdvSecSettingsCertListBuilder : public CActive
+{
+public: // constructor and destructor
+ static CAdvSecSettingsCertListBuilder *NewL(RFs &aFs, CUnifiedCertStore &aCertStore);
+ ~CAdvSecSettingsCertListBuilder();
+
+public: // new functions
+ void GetCertificateList(QList<AdvSecSettingsCertificate*> &certList,
+ RMPointerArray<CCTCertInfo> &aCertInfoArray, TRequestStatus &aStatus);
+
+protected: // from CActive
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+private: // new functions
+ CAdvSecSettingsCertListBuilder(RFs &aFs, CUnifiedCertStore &aCertStore);
+ void ConstructL();
+ void ResetCertAttributeFilter();
+ void ProcessFirstCertificateL();
+ void ProcessNextCertificateL();
+ void StartProcessingCertificateL();
+ void CompleteProcessingCertificateL();
+ void ReturnCertificateListL();
+ AdvSecSettingsCertificate::CertificateType CertType(const CCTCertInfo &aCertInfo);
+
+private: // data
+ RFs &iFs;
+ CUnifiedCertStore &iCertStore;
+ TRequestStatus *iClientStatus; // not owned
+ QList<AdvSecSettingsCertificate*> *iCertList; // not owned
+ RMPointerArray<CCTCertInfo> *iClientInfoArray; // not owned
+ RMPointerArray<CCTCertInfo> iCertInfoArray;
+ CCertAttributeFilter *iCertAttributeFilter;
+ TInt iCertInfoIndex;
+ HBufC8 *iCertificate;
+ TPtr8 iCertPtr;
+ RPointerArray<CAdvSecSettingsLabeledCertInfo> iLabeledCertInfos;
+
+ enum TCertListBuilderState {
+ EIdle,
+ EListingCerts,
+ ERetrievingCert,
+ EProcessingCert
+ } iState;
+};
+
+#endif // ADVSECSETTINGSCERTLISTBUILDER_SYMBIAN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscertmover_symbian.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* 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: Helper class to move certificates
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTMOVER_SYMBIAN_H
+#define ADVSECSETTINGSCERTMOVER_SYMBIAN_H
+
+#include <e32base.h> // CActive
+#include <ct/rmpointerarray.h> // RMPointerArray
+#include <ct/tcttokenobjecthandle.h> // TCTTokenObjectHandle
+
+class RFs;
+class CUnifiedCertStore;
+class CUnifiedKeyStore;
+class CCTCertInfo;
+class CCTKeyInfo;
+class CCertAttributeFilter;
+class TCTKeyAttributeFilter;
+class MCTWritableCertStore;
+class MCTKeyStoreManager;
+
+
+/**
+ * Certificate mover helper class.
+ */
+class CAdvSecSettingsCertMover : public CActive
+{
+public: // constructor and destructor
+ static CAdvSecSettingsCertMover *NewL(RFs &aFs);
+ ~CAdvSecSettingsCertMover();
+
+public: // new functions
+ void Move(const CCTCertInfo &aCert, TInt aSourceStoreTokenId,
+ TInt aTargetStoreTokenId, TRequestStatus &aStatus);
+
+protected: // from CActive
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+private: // new functions
+ CAdvSecSettingsCertMover(RFs &aFs);
+ void ConstructL();
+ void StartMoveOperationL();
+ TInt CorrespondingKeyStoreTokenId(TInt aCertStoreTokenId);
+ void StartMovingKeysL();
+ void FindSourceAndTargetKeyStoresL();
+ void FindSourceAndTargetCertStoreL();
+ void ExportFirstKeyL();
+ void ExportOneKeyL();
+ void ExportNextKeyL();
+ void SaveExportedKeyL();
+ void DeleteOriginalKeyL();
+ void StartMovingCertificatesL();
+ void RetrieveFirstCertL();
+ void RetrieveOneCertL();
+ void RetrieveNextCertL();
+ void SaveRetrievedCertL();
+ void DeleteOriginalCertL();
+
+
+private: // data
+ RFs &iFs;
+ const CCTCertInfo *iCertInfo; // not owned
+ TInt iSourceCertStoreTokenId;
+ TInt iTargetCertStoreTokenId;
+ TRequestStatus *iClientStatus; // not owned
+ HBufC8 *iDataBuffer;
+
+ CUnifiedCertStore *iCertStore;
+ MCTWritableCertStore *iSourceCertStore; // not owned
+ MCTWritableCertStore *iTargetCertStore; // not owned
+ CCertAttributeFilter *iCertFilter;
+ RMPointerArray<CCTCertInfo> iCerts;
+ TInt iCertIndex;
+ TPtr8 iDataPtr;
+
+ CUnifiedKeyStore *iKeyStore;
+ MCTKeyStoreManager *iSourceKeyStore; // not owned
+ MCTKeyStoreManager *iTargetKeyStore; // not owned
+ TCTKeyAttributeFilter *iKeyFilter;
+ RMPointerArray<CCTKeyInfo> iKeys;
+ TInt iKeyIndex;
+ TCTTokenObjectHandle iSourceKeyHandle;
+ CCTKeyInfo *iSavedKeyInfo;
+
+ enum TMoverState {
+ ENotInitialized,
+ EInitializingCertStore,
+ EInitializingKeyStore,
+ EIdle,
+ EMovingKeyListingKeys,
+ EMovingKeyExportingKeys,
+ EMovingKeyImportingKeys,
+ EMovingKeyDeletingOriginal,
+ EMovingCertListingCerts,
+ EMovingCertRetrievingCerts,
+ EMovingCertAddingCerts,
+ EMovingCertDeletingOriginal,
+ EFailed
+ } iState;
+};
+
+#endif // ADVSECSETTINGSCERTMOVER_SYMBIAN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingscerttrustsettingsview.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* 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: Certificate trust settings view in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSCERTTRUSTSETTINGSVIEW_H
+#define ADVSECSETTINGSCERTTRUSTSETTINGSVIEW_H
+
+#include "advsecsettingsviewbase.h"
+
+class AdvSecSettingsCertificate;
+class AdvSecSettingsCertificateModel;
+class HbGroupBox;
+class HbDataForm;
+class HbDataFormModel;
+
+
+/**
+ * Certificate trust settings view in advanced security settings. Certificate
+ * detail view shows certificate details (subject, issuer, validity
+ * dates, fingerprints, etc).
+ */
+class AdvSecSettingsCertTrustSettingsView : public AdvSecSettingsViewBase
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsCertTrustSettingsView(
+ AdvSecSettingsCertificateModel &model, QGraphicsItem *parent = 0);
+ virtual ~AdvSecSettingsCertTrustSettingsView();
+
+public: // new functions
+ void setCertificate(const AdvSecSettingsCertificate &cert);
+
+private slots:
+ void refreshDisplay();
+ void toggleChange(const QModelIndex &itemIndex);
+ void saveTrustSettings();
+ void deleteCertificate();
+ void deleteConfirmationAccepted();
+
+private: // new functions
+ QString usageName(int usageId);
+
+private: // data
+ AdvSecSettingsCertificateModel &mModel;
+ const AdvSecSettingsCertificate *mCertificate; // not owned
+ bool mIsCertDeletable;
+ HbGroupBox *mViewLabel;
+ HbDataForm *mDataForm;
+ HbDataFormModel *mDataFormModel;
+ QMap<int,bool> mUsageIdAndTrust;
+ QMap<int,QString> mUsageIdAndName;
+};
+
+#endif // ADVSECSETTINGSCERTTRUSTSETTINGSVIEW_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingslabeledcertinfo_symbian.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* 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 the License "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: Helper class to contain a labeled CCTCertInfo object
+*
+*/
+
+#ifndef CPADVSECSETTINGSLABELEDCERTINFO_SYMBIAN_H
+#define CPADVSECSETTINGSLABELEDCERTINFO_SYMBIAN_H
+
+#include <e32base.h> // CBase
+
+class CCTCertInfo;
+
+
+/**
+ * Displayed certificate labels are constructed using CCTCertInfo
+ * label and subject name. CAdvSecSettingsLabeledCertInfo class
+ * is used as contained class for labeled CCTCertInfo objects.
+ */
+class CAdvSecSettingsLabeledCertInfo : public CBase
+{
+public: // constructor and destructor
+ CAdvSecSettingsLabeledCertInfo(const CCTCertInfo &aCertInfo);
+ ~CAdvSecSettingsLabeledCertInfo();
+
+public: // new functions
+ const CCTCertInfo &CertInfo() const;
+ const TDesC &Label() const;
+ void SetLabelL(const TDesC &aLabel);
+ void AppendLabelL(const TDesC &aSeparator, const TDesC &aAdditionalText);
+ static TInt Compare(const CAdvSecSettingsLabeledCertInfo& aLeft,
+ const CAdvSecSettingsLabeledCertInfo& aRight);
+
+private: // data
+ const CCTCertInfo& iCertInfo;
+ HBufC* iLabel;
+};
+
+#endif // CPADVSECSETTINGSLABELEDCERTINFO_SYMBIAN_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingsloader.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,46 @@
+/*
+ * 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: Advanced security settings plugin loader
+ *
+ */
+#ifndef ADVSECSETTINGSLOADER_H
+#define ADVSECSETTINGSLOADER_H
+
+#include <QObject>
+#include <cpplugininterface.h> // CpPluginInterface
+
+class HbTranslator;
+
+
+/**
+ * Control panel plugin loader for advanced security settings.
+ */
+class AdvSecSettingsLoader : public QObject, public CpPluginInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(CpPluginInterface)
+
+public: // constructor and destructor
+ AdvSecSettingsLoader();
+ ~AdvSecSettingsLoader();
+
+public: // new functions
+ QList<CpSettingFormItemData*> createSettingFormItemData(
+ CpItemDataHelper &itemDataHelper) const;
+
+private: // data
+ HbTranslator* mTranslator;
+};
+
+#endif // ADVSECSETTINGSLOADER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingsmainview.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* 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: Advanced security settings main view
+*
+*/
+
+#ifndef ADVSECSETTINGSMAINVIEW_H
+#define ADVSECSETTINGSMAINVIEW_H
+
+#include "advsecsettingsviewbase.h"
+
+class AdvSecSettingsSecurityModuleModel;
+class AdvSecSettingsCertificateListView;
+class AdvSecSettingsSecurityModuleView;
+class HbWidget;
+class HbGroupBox;
+class HbListWidget;
+
+
+/**
+ * Main view for the advanced security settings. The main advanced
+ * security settings view contains certificates, protected content,
+ * and security module group boxes.
+ */
+class AdvSecSettingsMainView : public AdvSecSettingsViewBase
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsMainView(QGraphicsItem *parent = 0);
+ virtual ~AdvSecSettingsMainView();
+
+public slots:
+ void displayCertListView(const QModelIndex& modelIndex);
+ void displaySecurityModuleView(const QModelIndex& modelIndex);
+ void securityModuleInitialized();
+
+private: // new functions
+ HbWidget *createCertificatesTopLevel();
+ HbWidget *createProtectedContentTopLevel();
+ HbWidget *createSecurityModuleTopLevel();
+ bool isSecurityModulesAvailable();
+
+private: // data
+ AdvSecSettingsSecurityModuleModel *mSecModModel;
+ AdvSecSettingsCertificateListView *mCertListView;
+ AdvSecSettingsSecurityModuleView *mSecModView;
+ HbGroupBox *mSecModGroupBox;
+ HbListWidget *mSecModList;
+ HbMenu *mContextMenu;
+};
+
+#endif // ADVSECSETTINGSMAINVIEW_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingssecuritymodule_symbian.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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: Symbian specific container class for a security module
+*
+*/
+
+#ifndef ADVSECSETTINGSSECURITYMODULE_SYMBIAN_H
+#define ADVSECSETTINGSSECURITYMODULE_SYMBIAN_H
+
+#include <e32base.h> // CBase
+#include <ct/rmpointerarray.h> // RMPointerArray
+
+class CCTKeyInfo;
+class MCTKeyStore;
+class MCTAuthenticationObject;
+
+
+/**
+ * Symbian specific container class for a security module.
+ */
+class CAdvSecSettingsSecurityModuleSymbian : public CBase
+{
+public: // constructor and destructor
+ CAdvSecSettingsSecurityModuleSymbian(MCTKeyStore &aProtectedKeyStore);
+ ~CAdvSecSettingsSecurityModuleSymbian();
+
+public: // new functions
+ const TDesC &Label() const;
+ TBool IsDeletable() const;
+ TBool IsSigningPinSupported() const;
+ RMPointerArray<CCTKeyInfo> &KeyInfoArray();
+
+private: // data
+ MCTKeyStore &iProtectedKeyStore;
+ RMPointerArray<CCTKeyInfo> iKeyInfoArray;
+ RMPointerArray<MCTAuthenticationObject> iAuthenticationObjects;
+};
+
+#endif // ADVSECSETTINGSSECURITYMODULE_SYMBIAN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingssecuritymoduledetailview.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* 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: Security module detail view in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSSECURITYMODULEDETAILVIEW_H
+#define ADVSECSETTINGSSECURITYMODULEDETAILVIEW_H
+
+#include "advsecsettingsviewbase.h"
+
+class AdvSecSettingsSecurityModuleModel;
+class HbGroupBox;
+class HbLabel;
+
+
+/**
+ * Shows security module detail view.
+ */
+class AdvSecSettingsSecurityModuleDetailView : public AdvSecSettingsViewBase
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsSecurityModuleDetailView(
+ AdvSecSettingsSecurityModuleModel &model, QGraphicsItem *parent = 0);
+ virtual ~AdvSecSettingsSecurityModuleDetailView();
+
+public: // new functions
+ void setSecurityModule(int index);
+
+private slots:
+ void detailsCompleted(QMap<int,QString> details);
+ void deleteSecurityModule();
+ void deleteConfirmationAccepted();
+
+private: // data
+ AdvSecSettingsSecurityModuleModel &mModel;
+ int mModuleIndex;
+ HbGroupBox *mViewLabel;
+ HbLabel *mDetailsText;
+};
+
+#endif // ADVSECSETTINGSSECURITYMODULEDETAILVIEW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingssecuritymoduleeraser_symbian.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* 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: Helper class to remove a security module
+*
+*/
+
+#ifndef ADVSECSETTINGSSECURITYMODULEERASER_SYMBIAN_H
+#define ADVSECSETTINGSSECURITYMODULEERASER_SYMBIAN_H
+
+#include <e32base.h> // CActive
+#include <ct/rmpointerarray.h> // RMPointerArray
+
+class CUnifiedKeyStore;
+class CCTKeyInfo;
+class TCTKeyAttributeFilter;
+class MCTKeyStore;
+
+
+/**
+ * Security module removing helper class. This class deletes the security
+ * module by deleting all the keys controlled by the module.
+ */
+class CAdvSecSettingsSecurityModuleEraser : public CActive
+{
+public: // constructor and destructor
+ static CAdvSecSettingsSecurityModuleEraser *NewL(CUnifiedKeyStore &aKeyStore);
+ ~CAdvSecSettingsSecurityModuleEraser();
+
+public: // new functions
+ void Erase(TInt aKeyStoreIndex, TRequestStatus &aStatus);
+
+protected: // from CActive
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+private: // new functions
+ CAdvSecSettingsSecurityModuleEraser(CUnifiedKeyStore &aKeyStore);
+ void ConstructL();
+ void DeleteFirstKeyL();
+ void DeleteOneKeyL();
+ void DeleteNextKeyL();
+
+private: // data
+ TRequestStatus *iClientStatus; // not owned
+ CUnifiedKeyStore &iKeyStore;
+ MCTKeyStore *iTargetKeyStore; // not owned
+ TCTKeyAttributeFilter *iKeyFilter;
+ RMPointerArray<CCTKeyInfo> iKeys;
+ TInt iKeyIndex;
+
+ enum TEraserState {
+ EIdle,
+ EListingKeys,
+ EDeletingKey
+ } iState;
+};
+
+#endif // ADVSECSETTINGSSECURITYMODULEERASER_SYMBIAN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingssecuritymodulemodel.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,100 @@
+/*
+* 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: Security module model in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSSECURITYMODULEMODEL_H
+#define ADVSECSETTINGSSECURITYMODULEMODEL_H
+
+#include <QObject>
+#include <QMap>
+
+class AdvSecSettingsSecurityModule;
+class AdvSecSettingsSecurityModuleModelPrivate;
+
+
+/**
+ * Security module model in advanced security settings.
+ */
+class AdvSecSettingsSecurityModuleModel : public QObject
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsSecurityModuleModel(QObject *parent = 0);
+ virtual ~AdvSecSettingsSecurityModuleModel();
+
+public: // new definitions
+ enum SecurityModuleDetailsField {
+ Label,
+ Version,
+ Location,
+ SerialNumber,
+ Manufacturer
+ };
+ enum AuthenticationStatus {
+ EPinEntered = 0x01, // Set if the module is open, PIN already entered
+ EPinRequested = 0x02, // Set if PIN code required to open the module
+ EPinChangeAllowed = 0x04, // Set if PIN code change is allowed
+ EPinBlocked = 0x10, // Set if PIN code is blocked, requires unblocking PIN
+ EBlockedPermanently = 0x20, // Set if PIN code blocked and cannot be unblocked
+ };
+
+public: // new functions
+ void initialize();
+ int moduleCount() const;
+ QMap<QString,QString> moduleLabelsAndLocations() const;
+ void getModuleDetails(int moduleIndex);
+ void getModuleStatus(int moduleIndex);
+ // Functions related to PIN-G (aka access PIN, login PIN)
+ void setPinCodeRequestState(int moduleIndex, bool isRequested);
+ void changePinCode(int moduleIndex); // unblocks PIN code if EPinBlocked
+ void closeModule(int moduleIndex);
+ // Functions related to PIN-NR (aka signature PIN, signing PIN)
+ bool isSigningPinSupported(int moduleIndex) const;
+ void changeSigningPinCode(int moduleIndex);
+ bool isDeletable(int moduleIndex) const;
+ void deleteModule(int moduleIndex);
+
+signals:
+ void initializeCompleted();
+ void detailsCompleted(QMap<int,QString> details);
+ void statusCompleted(int authenticationStatus);
+ void statusChanged(int moduleIndex, int authenticationStatus);
+ void pinCodeRequestStateCompleted();
+ void pinCodeChangeCompleted();
+ void closeCompleted();
+ void signingPinCodeChangeCompleted();
+ void deleteCompleted();
+ void errorOccurred(int error);
+
+private: // new functions
+ void handleInitializeCompleted();
+ void handleStatusCompleted(int authenticationStatus);
+ void handleStatusChanged(int moduleIndex, int authenticationStatus);
+ void handlePinCodeRequestSet();
+ void handlePinCodeChanged();
+ void handleModuleClosed();
+ void handleSigningPinCodeChanged();
+ void handleModuleDeleted();
+ void handleError(int error);
+
+private: // data
+ Q_DISABLE_COPY(AdvSecSettingsSecurityModuleModel)
+ friend class AdvSecSettingsSecurityModuleModelPrivate;
+ AdvSecSettingsSecurityModuleModelPrivate *d_ptr;
+};
+
+#endif // ADVSECSETTINGSSECURITYMODULEMODEL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingssecuritymodulemodel_stub_p.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* 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: Generic stub for platform specific private security module model
+*
+*/
+
+#ifndef ADVSECSETTINGSSECURITYMODULEMODELPRIVATE_STUB_H
+#define ADVSECSETTINGSSECURITYMODULEMODELPRIVATE_STUB_H
+
+#include <QObject>
+
+class AdvSecSettingsSecurityModuleModel;
+class AdvSecSettingsSecurityModule;
+
+
+/**
+ * Generic stub for platform specific private security module model.
+ * This is just a stub. Real functionality is provided in platform specific
+ * AdvSecSettingsSecurityModuleModelPrivate implementation.
+ */
+class AdvSecSettingsSecurityModuleModelPrivate : public QObject
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsSecurityModuleModelPrivate(AdvSecSettingsSecurityModuleModel *q);
+ virtual ~AdvSecSettingsSecurityModuleModelPrivate();
+
+public: // new functions
+ void initialize();
+ int moduleCount() const;
+ QMap<QString,QString> moduleLabelsAndLocations() const;
+ void getModuleStatus(int moduleIndex);
+ void setPinCodeRequestState(int moduleIndex, bool isRequested);
+ void changePinCode(int moduleIndex); // unblocks PIN code if EPinBlocked
+ void closeModule(int moduleIndex);
+ bool isSigningPinSupported(int moduleIndex) const;
+ void changeSigningPinCode(int moduleIndex);
+ bool isDeletable(int moduleIndex) const;
+ void deleteModule(int moduleIndex);
+
+private: // data
+ Q_DISABLE_COPY(AdvSecSettingsSecurityModuleModelPrivate)
+ AdvSecSettingsSecurityModuleModel *q_ptr;
+};
+
+#endif // ADVSECSETTINGSSECURITYMODULEMODELPRIVATE_STUB_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingssecuritymodulemodel_symbian_p.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* 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: Symbian specific private security module model
+*
+*/
+
+#ifndef ADVSECSETTINGSSECURITYMODULEMODELPRIVATE_SYMBIAN_H
+#define ADVSECSETTINGSSECURITYMODULEMODELPRIVATE_SYMBIAN_H
+
+#include <e32base.h> // CActive
+#include <f32file.h> // RFs
+#include <ct/rmpointerarray.h> // RMPointerArray
+#include <QMap>
+
+class AdvSecSettingsSecurityModuleModel;
+class CAdvSecSettingsSecurityModuleEraser;
+class CUnifiedKeyStore;
+class MCTKeyStore;
+class MCTAuthenticationObject;
+class CCTKeyInfo;
+class TCTKeyAttributeFilter;
+
+
+/**
+ * Symbian specific private security module model.
+ */
+class AdvSecSettingsSecurityModuleModelPrivate : public CActive
+{
+public: // constructor and destructor
+ explicit AdvSecSettingsSecurityModuleModelPrivate(AdvSecSettingsSecurityModuleModel *q);
+ ~AdvSecSettingsSecurityModuleModelPrivate();
+
+public: // new functions
+ void initialize();
+ int moduleCount() const;
+ QMap<QString,QString> moduleLabelsAndLocations() const;
+ void getModuleStatus(int moduleIndex);
+ void setPinCodeRequestState(int moduleIndex, bool isRequested);
+ void changePinCode(int moduleIndex); // unblocks PIN code if EPinBlocked
+ void closeModule(int moduleIndex);
+ bool isSigningPinSupported(int moduleIndex) const;
+ void changeSigningPinCode(int moduleIndex);
+ bool isDeletable(int moduleIndex) const;
+ void deleteModule(int moduleIndex);
+
+protected: // from CActive
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+private: // new functions
+ void ConstructL();
+ void ListKeysFromFirstKeyStoreL();
+ void ListKeysFromOneKeyStoreL();
+ void ListKeysFromNextKeyStoreL();
+ void AppendKeyStoresWithProtectedKeysL();
+ void ChangeCurrentAuthObjectPinCode();
+ TInt DoStartDeletingModule(TInt aModuleIndex);
+ void ReturnModuleStatusL();
+ void ReturnPinChanged();
+ void ReturnPinRequestStateChanged();
+ void ReturnModuleClosed();
+ void ReturnModuleDeleted();
+
+private: // data
+ AdvSecSettingsSecurityModuleModel *q_ptr; // not owned
+ RFs iFs;
+ CUnifiedKeyStore *iUnifiedKeyStore;
+ RMPointerArray<MCTKeyStore> iProtectedKeyStores; // items not owned
+ RMPointerArray<MCTAuthenticationObject> iAuthenticationObjects; // items not owned
+ TInt iKeyStoreIndex;
+ RMPointerArray<CCTKeyInfo> iKeys;
+ TCTKeyAttributeFilter *iAllKeysFilter;
+ MCTKeyStore *iCurrentKeyStore; // not owned
+ MCTAuthenticationObject *iCurrentAuthObject; // not owned
+ TInt iTimeRemaining;
+ CAdvSecSettingsSecurityModuleEraser *iModuleEraser;
+ enum TState {
+ ENotInitialized,
+ EInitializing,
+ EListingKeys,
+ EReadingTimeRemaining,
+ EChangingPinCode,
+ EUnblockingToChangePinCode,
+ EEnablingPinCodeRequest,
+ EDisablingPinCodeRequest,
+ EClosingAuthObject,
+ EDeletingModule,
+ EIdle
+ } iState;
+};
+
+#endif // ADVSECSETTINGSSECURITYMODULEMODELPRIVATE_SYMBIAN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingssecuritymoduleview.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* 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: Security module view in advanced security settings
+*
+*/
+
+#ifndef ADVSECSETTINGSSECURITYMODULEVIEW_H
+#define ADVSECSETTINGSSECURITYMODULEVIEW_H
+
+#include "advsecsettingsviewbase.h"
+
+class AdvSecSettingsSecurityModuleModel;
+class HbGroupBox;
+class HbDataFormModel;
+class HbDataFormModelItem;
+
+
+/**
+ * Shows info about one security module (such as WIM or personal
+ * key store). Provides also functionality to change access codes
+ * (like module PIN code, and signing PIN code).
+ */
+class AdvSecSettingsSecurityModuleView : public AdvSecSettingsViewBase
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsSecurityModuleView(AdvSecSettingsSecurityModuleModel &model,
+ QGraphicsItem *parent = 0);
+ virtual ~AdvSecSettingsSecurityModuleView();
+
+public: // new functions
+ void setSecurityModule(const QString &moduleTitle, int modelIndex);
+
+private slots:
+ void updateModuleStatus();
+ void moduleStatusChanged(int status);
+ void itemActivated(const QModelIndex &itemIndex);
+
+private: // data
+ AdvSecSettingsSecurityModuleModel &mModel;
+ HbGroupBox *mViewLabel;
+ HbDataFormModel *mDataFormModel;
+ HbDataFormModelItem *mModulePin;
+ HbDataFormModelItem *mModulePinRequested;
+ HbDataFormModelItem *mModuleStatus;
+ HbDataFormModelItem *mSigningPin;
+ int mModelIndex;
+};
+
+#endif // ADVSECSETTINGSSECURITYMODULEVIEW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingsstoreuids.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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: Certificate and key store identifiers
+*
+*/
+
+
+#ifndef ADVSECSETTINGSSTOREUIDS_H
+#define ADVSECSETTINGSSTOREUIDS_H
+
+
+// Certificate and key store UID values
+const TInt KAdvSecSettingsFileCertStore = 0x101F501A; // 270487578
+const TInt KAdvSecSettingsFileKeyStore = 0x101F7333; // 270496563
+const TInt KAdvSecSettingsTrustedServerCertStore = 0x101FB66F; // 270513775
+const TInt KAdvSecSettingsDeviceCertStore = 0x101FB668; // 270513768
+const TInt KAdvSecSettingsDeviceKeyStore = 0x101FB66A; // 270513770
+const TInt KAdvSecSettingsWIMCertAndKeyStore = 0x101F79D9; // 270498265
+const TInt KAdvSecSettingsMidpCertStore = 0x101F5B71; // 270490481
+const TInt KAdvSecSettingsSWICertStore = 0x102042BA; // 270549690
+
+
+#endif // ADVSECSETTINGSSTOREUIDS_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingstrustedcertusageuids.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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: Trusted certificate usage identifiers
+*
+*/
+
+#ifndef ADVSECSETTINGSTRUSTEDCERTUSAGEUIDS_H
+#define ADVSECSETTINGSTRUSTEDCERTUSAGEUIDS_H
+
+
+// Trusted certificate usage UID values
+const int KAdvSecSettingsTrustedUsageSwInstallNativeSis = 0x100042AB; // 268452523
+const int KAdvSecSettingsTrustedUsageSwInstallSisOcsp = 0x1000A8B6; // 268478646
+const int KAdvSecSettingsTrustedUsageSwInstallJava = 0x101F9B28; // 270506792
+const int KAdvSecSettingsTrustedUsageSwInstallWidget = 0x200267D2; // 537028562
+const int KAdvSecSettingsTrustedUsageInternet = 0x1000183D; // 268441661
+const int KAdvSecSettingsTrustedUsageWap = 0x1000AA53; // 268479059
+const int KAdvSecSettingsTrustedUsageVPN = 0x101F7993; // 270498195
+
+
+#endif // ADVSECSETTINGSTRUSTEDCERTUSAGEUIDS_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/advsecsettingsviewbase.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* 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: Base class for advanced security settings views
+*
+*/
+
+#ifndef ADVSECSETTINGSVIEWBASE_H
+#define ADVSECSETTINGSVIEWBASE_H
+
+#include <cpbasesettingview.h> // CpBaseSettingView
+
+class HbMenu;
+
+
+/**
+ * Base class for advanced security settings views.
+ */
+class AdvSecSettingsViewBase : public CpBaseSettingView
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ explicit AdvSecSettingsViewBase(QGraphicsWidget *widget = 0,
+ QGraphicsItem *parent = 0);
+ virtual ~AdvSecSettingsViewBase();
+
+public slots:
+ void displayPreviousView();
+
+protected slots:
+ virtual void displayError(int error);
+
+public: // new functions
+ void displayView(AdvSecSettingsViewBase *view);
+ bool hasPreviousView() const;
+ void setDeleteOnClose(bool deleteOnClose);
+
+protected: // new functions
+ void clearItemSpecificMenu();
+ void addItemSpecificMenuAction(const QString &text, const QObject *receiver,
+ const char *member);
+ void displayItemSpecificMenu(const QPointF &position);
+ void displayQuestionNote(const QString &text, const QObject *receiver,
+ const char *accepedMember);
+
+private: // data
+ HbView *mPreviousView; // not owned
+ HbMenu *mItemSpecificMenu;
+ bool mDeleteOnClose;
+};
+
+#endif // ADVSECSETTINGSVIEWBASE_H
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpcertdatacontainer.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +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: Declaration of the CCertManUIKeeper class
-*
-*/
-
-#ifndef CPCERTDATACONTAINER_H
-#define CPCERTDATACONTAINER_H
-
-// INCLUDES
-#include <unifiedcertstore.h>
-#include <mctwritablecertstore.h>
-#include <unifiedkeystore.h>
-
-// FORWARD DECLARATIONS
-class CpCertManUISyncWrapper;
-class CpCertManUICertData;
-
-// CONSTANTS
-const TUid KCMDeviceCertStoreTokenUid = { 0x101FB668 };
-const TUid KCMDeviceKeyStoreTokenUid = { 0x101FB66A };
-const TUid KCMTrustedServerTokenUid = { 0x101FB66F };
-const TUid KCMFileKeyStoreTokenUid = { 0x101F7333 };
-const TUid KCMFileCertStoreTokenUid = { 0x101F501A };
-
-
-// CLASS DECLARATION
-
-/**
-* CpCertDataContainer retrieves and holds certificates.
-*
-*/
-class CpCertDataContainer : public CBase
- {
- public: // functions
-
- /**
- * Default constructor
- */
- CpCertDataContainer();
-
- /**
- * Destructor.
- */
- ~CpCertDataContainer();
-
- /**
- * NewL
- */
- static class CpCertDataContainer* NewL();
-
- /**
- * NewLC
- */
- static class CpCertDataContainer* NewLC();
-
- CUnifiedCertStore*& CertManager();
-
- CUnifiedKeyStore*& KeyManager();
-
- /**
- * Checks that cacerts.dat file is not corrupt
- * and returns CA certificates from it.
- */
- void RefreshCAEntriesL();
-
- /**
- * Checks that cacerts.dat file is not corrupt
- * and returns user certificates from it.
- */
- void RefreshUserCertEntriesL();
-
- /**
- * Returns peer certificates.
- */
- void RefreshPeerCertEntriesL();
-
- /**
- * Returns peer certificates.
- */
- void RefreshDeviceCertEntriesL();
-
- /**
- * Shows error note
- */
- void ShowErrorNoteL(TInt aError);
-
- public: //data
-
- /**
- * To store CA certificate entries for Authority and Trust view
- * Includes label from x509certnameparser.
- */
- RMPointerArray<CpCertManUICertData> iCALabelEntries;
-
- /**
- * To store CA certificate entries for Authority and Trust view
- * Includes label from x509certnameparser.
- */
- RMPointerArray<CpCertManUICertData> iUserLabelEntries;
-
- /**
- * To store Peer certificate entries for Trusted Site view
- * Includes label from x509certnameparser.
- */
- RMPointerArray<CpCertManUICertData> iPeerLabelEntries;
-
- /**
- * To store Peer certificate entries for Device certificate view
- * Includes label from x509certnameparser.
- */
- RMPointerArray<CpCertManUICertData> iDeviceLabelEntries;
-
- /**
- * Used to wrap asynchronous calls
- */
- CpCertManUISyncWrapper* iWrapper;
-
- /**
- * File session handle.
- */
- RFs iRfs;
-
- private: // functions
-
- void ConstructL();
-
- private: //data
-
- /**
- * To list certificates with criteria.
- */
- CCertAttributeFilter* iFilter;
-
- /**
- * To list keys with criteria.
- */
-
- TCTKeyAttributeFilter* iKeyFilter;
-
- /**
- * UnifiedCertStore
- */
- CUnifiedCertStore* iStore;
-
- /**
- * UnifiedKeyStore
- */
- CUnifiedKeyStore* iKeyStore;
-
- /**
- * To store CA certificate entries.
- */
- RMPointerArray<CCTCertInfo> iCAEntries;
-
- /**
- * To store User certificate entries.
- */
- RMPointerArray<CCTCertInfo> iUserEntries;
-
- /**
- * To store Peer certificate entries.
- */
- RMPointerArray<CCTCertInfo> iPeerEntries;
-
- /**
- * To store Device certificate entries.
- */
- RMPointerArray<CCTCertInfo> iDeviceEntries;
-
- /**
- * To store Key entries
- */
- RMPointerArray<CCTKeyInfo> iKeyEntries;
-
- };
-
-/**
-* Small helper class to put label and certificate in same class.
-*
-*/
-class CpCertManUICertData : public CBase
- {
- public:
-
- CpCertManUICertData();
-
- void Release();
-
- HBufC* iCAEntryLabel;
- HBufC* iUserEntryLabel;
- HBufC* iPeerEntryLabel;
- HBufC* iDeviceEntryLabel;
- CCTCertInfo* iCAEntry;
- CCTCertInfo* iUserEntry;
- CCTCertInfo* iPeerEntry;
- CCTCertInfo* iDeviceEntry;
-
- private:
- ~CpCertManUICertData();
-
- };
-
-
-#endif // CPCERTDATACONTAINER_H
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpcertdetailview.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +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:
-*
-*/
-
-#ifndef CPCERTDETAILVIEW_H
-#define CPCERTDETAILVIEW_H
-
-#include <cpbasesettingview.h>
-#include <cpcertview.h>
-#include <pkixcertchain.h>
-#include <cctcertinfo.h>
-
-class CpCertDataContainer;
-class CX509Certificate;
-class CCertificate;
-class HbListWidget;
-class HbAbstractViewItem;
-class CCTCertInfo;
-
-class QString;
-class QSizeF;
-
-class CpCertDetailView : public CpBaseSettingView
-{
- Q_OBJECT
-public:
- explicit CpCertDetailView( CpCertView::TCertificateViews currentView, TInt pos,
- CpCertDataContainer& certDataContainer,
- QGraphicsItem *parent = 0 );
- virtual ~CpCertDetailView();
-
-private:
- void viewCertificateDetailsL( TInt index, CpCertView::TCertificateViews type );
- void validateCertificateL(TInt index, const CCertificate& certDetails, const CCTCertInfo& certInfo, CpCertView::TCertificateViews type );
- CArrayFixFlat<TValidationError>* validateX509CertificateL( const CX509Certificate& certDetails );
- TKeyUsagePKCS15 keyUsageAndLocationL( const CCTCertInfo& certEntry, TUid* keyLocation );
- void setLocationInfo( TBool certificate, TUid locUid, HbListWidget& certDisplayDetails );
- void divideIntoBlocks( const TDesC8& input, TPtr& output );
-
- void addToListWidget( HbListWidget& certDisplayDetails, const QString& data );
- void addToListWidget( HbListWidget& certDisplayDetails,
- const QString& displayString, const QString& displayDetails );
-
- const CCTCertInfo* certInfo( TInt index, CpCertView::TCertificateViews certView );
- void addTrustedSitesL( const CCertificate& certDetails, HbListWidget& certDisplayDetails);
- void addLabel( const CCTCertInfo& certInfo, HbListWidget& certDisplayDetails);
- void addIssuerL( const CCertificate& certDetails, HbListWidget& certDisplayDetails );
- void addSubjectL( const CCertificate& certDetails, HbListWidget& certDisplayDetails );
- void addCertUsage( TKeyUsagePKCS15 usage, HbListWidget& certDisplayDetails );
- void addValidityPeriod( const CCertificate& certDetails, HbListWidget& certDisplayDetails);
- void setURLLocation( HBufC8& urlDetails, HbListWidget& certDisplayDetails );
- void addCertFormat( TCertificateFormat certFormat, HbListWidget& certDisplayDetails );
- void addAlgoDetails( const CCertificate& certificate, HbListWidget& certDisplayDetails );
- void addSerialNo( const CCertificate& certificate, HbListWidget& certDisplayDetails );
- void addFingerprint( const CCertificate& certificate, HbListWidget& certDisplayDetails );
- void addPublicKeyDetailsL( const CCertificate& certificate, HbListWidget& certDisplayDetails );
- QString asymmetricAlgoId( const CCertificate& certificate );
-
-private:
- CpCertDataContainer& mCertDataContainer;
-
-};
-
-#endif // CPCERTDETAILVIEW_H
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpcertmanuisyncwrapper.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +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: Wrapper class for Symbian's Security Framework's calls
-*
-*/
-
-
-#ifndef CPCERTMANUISYNCWRAPPER_H
-#define CPCERTMANUISYNCWRAPPER_H
-
-
-// INCLUDES
-#include <e32base.h>
-
-// FORWARD DECLERATIONS
-class CCertificate;
-class CPKIXValidationResult;
-class CPKIXCertChain;
-class CUnifiedCertStore;
-
-// CLASS DECLARATION
-
-/**
-* Wrapper class for Symbian's Security Framework's calls.
-* Shows error notes if an error happenes.
-*
-* @lib certmanui.dll
-* @since S60 2.0
-*/
-class CpCertManUISyncWrapper : public CActive
- {
- public:
-
- /**
- * Two-phased constructor.
- */
- static CpCertManUISyncWrapper* NewLC();
-
- /**
- * Two-phased constructor.
- */
- static CpCertManUISyncWrapper* NewL();
-
- /**
- * Destructor.
- */
- ~CpCertManUISyncWrapper();
-
- public: // New functions
-
- /**
- * TInt ListL
- * @param aStore reference to store where operation is done.
- * @param aArray Keys are stored here.
- * @param aFilter Information on what kind keys are looked.
- */
-
- void ListL( CUnifiedKeyStore*& aStore,
- RMPointerArray<CCTKeyInfo>* aArray,
- const TCTKeyAttributeFilter& aFilter );
-
- /**
- * TInt ListL
- * @param aStore reference to store where operation is done.
- * @param aArray Keys are stored here.
- * @param aFilter Information on what kind keys are looked.
- * @param aTokenUid Token UID of key store
- */
-
- void ListL( CUnifiedKeyStore*& aStore,
- RMPointerArray<CCTKeyInfo>* aArray,
- const TCTKeyAttributeFilter& aFilter,
- const TUid aTokenUid );
-
- /**
- * TInt ListL
- * @param aStore reference to store where operation is done.
- * @param aArray certificates are stored here.
- * @param aFilter Information on what kind certificates are looked.
- */
- void ListL( CUnifiedCertStore*& aStore,
- RMPointerArray<CCTCertInfo>* aArray,
- const CCertAttributeFilter& aFilter );
-
- /**
- * TInt ListL
- * @param aStore reference to store where operation is done.
- * @param aArray certificates are stored here.
- * @param aFilter Information on what kind certificates are looked.
- * @param aTokenUid Token UID of certificate store
- */
- void ListL( CUnifiedCertStore*& aStore,
- RMPointerArray<CCTCertInfo>* aArray,
- const CCertAttributeFilter& aFilter,
- const TUid aTokenUid );
-
-
- /**
- * TInt GetCertificateL
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate that's detailed information is fetched.
- * @param aCert Fetched certificate.
- */
- void GetCertificateL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo, CCertificate*& aCert );
-
- /**
- * TInt GetCertificateL
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate that's detailed information is fetched.
- * @param aCert Fetched certificate.
- */
- void GetCertificateL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo, CCertificate*& aCert, TUid aTokenUid );
-
-
- /**
- * TInt GetUrlCertificateL
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate that's detailed information is fetched.
- * @param aUrl Fetched URL.
- */
- void GetUrlCertificateL(
- CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- TDes8& aUrl) ;
-
- /**
- * TInt GetApplicationsL
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate that applications are fetched.
- * @param Certificates applications are stoted here.
- */
- void GetApplicationsL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo, RArray<TUid>& aApps );
-
- /**
- * TInt ValidateX509RootCertificateL
- * @param aValidationResult Result of validation.
- * @param aValidationTime Time of validation.
- * @param aChain Chain to be validated.
- */
- void ValidateX509RootCertificateL(
- CPKIXValidationResult*& aValidationResult,
- const TTime& aValidationTime, CPKIXCertChain*& aChain );
-
- /**
- * TInt InitStoreL
- * @param aStore reference to store to be initialized.
- */
- void InitStoreL( CUnifiedCertStore*& aStore );
-
- /**
- * void InitStoreL
- * @param aStore reference to store to be initialized.
- */
- void InitStoreL( CUnifiedKeyStore*& aStore );
-
- /**
- * TInt DeleteCertL
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate to be deleted.
- */
- void DeleteCertL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo );
-
- /**
- * TInt DeleteCertL
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate to be deleted.
- */
- void DeleteCertL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- TUid aTokenUid );
-
- /**
- * TInt IsApplicableL
- * @since S60 2.0
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate thats applicability is queried.
- * @param aApplication Application that's status is queried.
- * @param aIsApplicable ETrue if applcable.
- * @return TInt Status Symbian's API's call.
- */
- TInt IsApplicableL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo, TUid aApplication,
- TBool& aIsApplicable );
-
- /**
- * TInt IsTrustedL
- * @since S60 2.0
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate that's trust status is queried.
- * @param aTrusted ETrue if trusted.
- * @return TInt Status Symbian's API's call.
- */
- TInt IsTrustedL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo, TBool& aTrusted );
-
- /**
- * TInt SetApplicabilityL
- * @param aStore reference to store where operation is done.
- * @param aCertInfo Certificate thats applicability is set.
- * @param aApplications New applicability settings.
- */
- void SetApplicabilityL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- RArray<TUid>& aApplications );
-
- /**
- * void MoveCertL
- * @since S60 3.2
- * @param aStore reference to store where operation is done
- * @param aCertInfo Certificate info
- * @param aSourceStore UID of source certificate store
- * @param aTargetStore UID of source certificate store
- * @return TInt Number of moved certificates
- */
- TInt MoveCertL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- const TUid aSourceTokenId,
- const TUid aTargetTokenId );
-
- /**
- * void MoveKeyL
- * @param aStore reference to store where operation is done
- * @param CCTKeyInfo Key info
- * @param aSourceStore UID of source key store
- * @param aTargetStore UID of source key store
- */
- void MoveKeyL( CUnifiedKeyStore*& aStore,
- const TCTKeyAttributeFilter& aFilter,
- const TUid aSourceTokenId,
- const TUid aTargetTokenId );
-
- /**
- * TInt GetInterface
- * @since S60 3.0
- * @param aToken reference to token
- * @param aTokenInterface Pointer to returned interface
- * @return TInt Status Symbian's API's call.
- */
- TInt GetInterface( TUid aRequiredInterface,
- MCTToken& aToken,
- MCTTokenInterface*& aReturnedInterface );
-
- protected:
-
- void DoCancel();
- void RunL();
-
- private:
-
- CpCertManUISyncWrapper();
- void ConstructL();
-
- void HandleErrorL();
-
- private: //Data
-
- // Internal operation states.
- enum TOperation
- {
- EOperationNone,
- EOperationInit,
- EOperationList,
- EGetCertificate,
- EAddCertificate,
- ERetriveURLCertificate,
- EOperationDelete,
- EOperationGetApps,
- EOperationIsApplicable,
- EOperationIsTrusted,
- EOperationSetApplicability,
- EOperationSetToTrusted,
- EOperationValidateX509Root,
- EShowErrorNote,
- EOperationInitKeyStore,
- EOperationKeyList,
- EOperationGetInterface,
- EOperationExportKey,
- EOperationImportKey,
- EOperationDeleteKey
- };
-
- // For wrapping asynchronous calls.
- CActiveSchedulerWait iWait;
-
- // Internal state of operation.
- TOperation iOperation;
-
- // Just for cancelling a operation. Does not own.
- CUnifiedCertStore* iStore;
-
- // Just for cancelling a operation. Does not own.
- CUnifiedKeyStore* iKeyStore;
-
- // Just for cancelling a operation. Does not own.
- CPKIXCertChain* iChain;
-
- // For retrieving a certificate.
- TPtr8 iCertPtr;
-
- };
-
-#endif // CPCERTMANUISYNCWRAPPER_H
-
-// End of File
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpcertpluginloader.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +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:
- *
- */
-#ifndef CPCERTPLUGINLOADER_H
-#define CPCERTPLUGINLOADER_H
-
-#include <qobject.h>
-#include <cpplugininterface.h>
-#include <QTranslator>
-class CpCertPluginLoader : public QObject, public CpPluginInterface
-{
- Q_OBJECT
- Q_INTERFACES(CpPluginInterface)
-public:
- CpCertPluginLoader();
- virtual ~CpCertPluginLoader();
- virtual QList<CpSettingFormItemData*>createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
-private:
- QTranslator* mTranslator;
-};
-
-#endif //CPCERTPLUGINLOADER_H
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpcerttrustview.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +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: Declaration of the CCertManUIContainerTrust class
-* 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.
-*
-*/
-
-
-#ifndef CPCERTTRUSTVIEW_H
-#define CPCERTTRUSTVIEW_H
-
-// INCLUDES
-#include <cpbasesettingview.h>
-#include <QList>
-
-// CONSTANTS
-const TInt KTrustSettingsResourceIndexWAP = 0;
-const TInt KTrustSettingsResourceIndexMailAndImageConn = 1;
-const TInt KTrustSettingsResourceIndexAppCtrl = 2;
-const TInt KTrustSettingsResourceIndexJavaInstall = 3;
-const TInt KTrustSettingsResourceIndexOCSPCheck = 4;
-const TInt KTrustSettingsResourceIndexVPN = 5;
-const TInt KTrustSettingsResourceIndexWidget = 6;
-const TInt KTrustSettingsResourceIndexValueYes = 0;
-const TInt KTrustSettingsResourceIndexValueNo = 1;
-
-// FORWARD DECLARATIONS
-class CCertificateAppInfoManager;
-class CpCertDataContainer;
-class TCertificateAppInfo;
-class CCTCertInfo;
-
-class QString;
-
-class HbDataFormModel;
-
-// CLASS DECLARATION
-class CpCertTrustView : public CpBaseSettingView
- {
- Q_OBJECT
-
- public:
- explicit CpCertTrustView( TInt certificateIndex,
- CpCertDataContainer& certDataContainer,
- QGraphicsItem *parent = 0 );
- virtual ~CpCertTrustView();
- void saveTrustSettings();
-
- private:
- void viewTrustSettings();
- void updateListBoxL();
- TInt trustIdIndex( TUid aTrusterUid ) const;
- TBool checkCertificateClientTrustL( const TUid clientUid, const CCTCertInfo& entry ) const;
- TUid trusterId(const QString& clientDescription) const;
-
- private:
- CpCertDataContainer& mCertDataContainer;
- /**
- * Application manager class, used to get applications in system.
- */
- CCertificateAppInfoManager* mAppInfoManager;
-
- /**
- * Client Uids of the certstore
- */
- RArray<TUid> mClientUids;
-
- /**
- * To get the names of the trusted clients from the resources
- */
- QList<QString> mTrustedClients;
-
- /**
- * To get the yes/no trust texts from the resources
- */
- QList<QString> mTrustValues;
-
- TInt mCertificateIndex;
-
- HbDataFormModel* mFormModel;
-
- };
-
-#endif // CPCERTTRUSTVIEW_H
-
-// End of File
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpcertview.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +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:
-*
-*/
-
-#ifndef CPCERTVIEW_H
-#define CPCERTVIEW_H
-
-#include <cpbasesettingview.h>
-
-class HbAbstractViewItem;
-class CpCertDataContainer;
-class CCTCertInfo;
-class HbListView;
-class HbAction;
-class HbDialog;
-class HbMessageBox;
-class HbAction;
-
-class CpCertView : public CpBaseSettingView
- {
- Q_OBJECT
-
- public:
- explicit CpCertView(const QModelIndex& index, QGraphicsItem *parent = 0);
- virtual ~CpCertView();
-
- public:
- enum TCertificateViews
- {
- EAuthorityView=0,
- ETrustedView,
- EPersonalView,
- EDeviceView
- };
-
- public slots:
- void displayPreviousView();
-
- private slots:
- void openCertificate();
- void openCertFromList(const QModelIndex& modelIndex);
- void showTrustSettings();
- void saveTrustSettings();
- void indicateLongPress(HbAbstractViewItem*, QPointF);
-
- void deleteCertificate();
- TInt refreshListL();
- void refreshView( TInt aCount );
-
- void moveSelectedCert();
- void deleteList();
- void selectAll();
- void moveCert();
- void viewDone();
- void handleMultipleDelete(HbAction* action);
- void handleMoveDialog(HbAction* action);
- void handleDeleteDialog(HbAction* action);
- void handleMoveCertDialog(HbAction* action);
- private:
- const CCTCertInfo* certAt(TInt index) const;
- QString certLabel(TInt index) const;
- void deleteCertsL( RArray<TInt>& indexList );
- void setDetails(CpCertView::TCertificateViews currentView);
- void moveCertList( RArray<TInt>& indexList );
-
- private:
- CpCertView::TCertificateViews mCertView;
- TInt mPos;
- CpCertDataContainer* mCertDataContainer;
- TBool mSelectAll;
- RArray<TInt> mSelectionIndex;
- RArray<TInt> mIndexList;
-
- HbDialog* mPopup;
- HbAction* mOkAction;
- HbView* mPrevView;
- HbView* mCurrentView;
- CpBaseSettingView* mRefreshedView;
- HbListView* mListView;
- HbListView* mSelectAllView;
- HbView* mOriginalView;
- HbMessageBox* mNote;
- HbMenu* mContextMenu;
- };
-
-#endif /* CPCERTVIEW_H */
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpmoduleview.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +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:
-*
-*/
-
-#ifndef CPMODULEVIEW_H
-#define CPMODULEVIEW_H
-
-#include <cpbasesettingview.h>
-#include "cpsecmodview.h"
-
-class HbAbstractViewItem;
-class CpItemDataHelper;
-class CSecModUIModel;
-class CpSecModView;
-
-class CpModuleView : public CpBaseSettingView
-{
- Q_OBJECT
-public:
- explicit CpModuleView( CpSecModView::TSecModViews currentView,
- CSecModUIModel& secModUIModel,
- QGraphicsItem *parent = 0 );
- virtual ~CpModuleView();
-
-private slots:
- void handleAccessView( const QModelIndex& modelIndex );
- void handleAccessView();
- void handleSigView();
- void handleSigViewCommand();
- void indicateLongPress(HbAbstractViewItem *item,QPointF coords);
-
-private:
- void showAccessView();
- void showSignatureView(TBool showBlockedNote);
-
-private:
- enum TSecModAccessCodeCommandIds
- {
- EIndexCodeLabel = 0,
- EIndexCodeRequest,
- EIndexCodeStatus
- };
-
- enum TSecModSignatureCommandIds
- {
- ESecModUICmdOpen = 0,
- ESecModUICmdModuleInfo,
- ESecModUICmdDelKeyStore,
- ESecModUICmdChange,
- ESecModUICmdUnblock,
- ESecModUICmdClose,
- ESecModUICmdAppTest
- };
-
-private:
- CpSecModView::TSecModViews mCurrentView;
- CSecModUIModel& mSecModUIModel;
- TInt mPos;
- HbMenu* mContextMenu;
-};
-
-#endif /* CPMODULEVIEW_H */
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpsecmodmodel.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,341 +0,0 @@
-/*
-* Copyright (c) 2002-2009 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: Declaration of the CSecModUIModel class
-*
-*/
-
-
-#ifndef CSECMODUIMODEL_H
-#define CSECMODUIMODEL_H
-
-// INCLUDES
-#include <e32base.h>
-#include <bamdesca.h>
-#include <ct/rmpointerarray.h>
-#include <f32file.h>
-
-#include <qlist.h>
-#include <qlabel.h>
-#include <qvector.h>
-#include <qpair.h>
-
-class QString;
-class HbListWidget;
-
-// CONSTANTS
-const TInt KMaxSettItemSize = 200;
-
-const TInt KPinGSettIndex = 0;
-const TInt KPinNrSettIndex = 1;
-
-const TUid KUidSecMod = { 0x101F8668 };
-
-// Panic strings
-_LIT(KPanicNullPointer, "SecModUI: invalid pointer");
-_LIT(KPanicIndexOutOfRange, "SecModUI: array indexed out of range");
-
-// FORWARD DECLARATIONS
-class CUnifiedKeyStore;
-class MCTAuthenticationObject;
-class MCTAuthenticationObjectList;
-class CSecModUISyncWrapper;
-class MCTKeyStore;
-class MCTToken;
-
-class QString;
-
-// FUNCTION PROTOTYPES
-GLREF_C void Panic( TInt aPanic );
-
-// CLASS DECLARATION
-
-/**
-* class CSecModUIModel
-* Model of the application
-*
-* @lib SecModUI.lib
-* @since Series 60 3.0
-*/
-class CSecModUIModel : public CBase
- {
- public: // Constructors and destructLoadTokenLabelsLor
-
- /**
- * Two-phased constructor.
- */
- static CSecModUIModel* NewL();
-
- /**
- * Destructor.
- */
- virtual ~CSecModUIModel();
-
- public: // New functions
- /**
- * Initializes unified keystore
- */
- void InitializeKeyStoreL();
-
- /**
- * Retrieves the description and location of all tokens.
- * @return Map containing the label and the appripriate location.
- */
- QMap<QString,QString> LoadTokenLabelsL();
-
- /**
- * Shows error note if needed.
- * @param aError
- * @return void
- */
- void ShowErrorNote(TInt aError) const;
-
- /**
- * Retrieves the appropriate token based on the index.
- * @param aTokenIndex Index of the token to be opened.
- * @return void
- */
- void OpenTokenL(TInt aTokenIndex);
-
- /**
- * Initialize the auth objects and return the total count.
- * @param aItemArray contains localised stings
- * @return void
- */
- TInt CheckCodeViewStringsL();
-
- /**
- * Retrieves description of the token based on UID of the current active keystore.
- * @return Description
- */
- QString TokenLabelForTitle() const;
-
- /**
- * Returns status of the selected auth object.
- * @param index
- * @return status
- */
- TUint32 AuthStatus(TInt aIndex) const;
-
- /**
- * Returns status of the auth object based on its persistent properties set
- * by security module implementation.
- * @param aIndex Index of the authentication object
- * @param aShowBlockedNote If ETrue, shows code blocked if code is blocked.
- * @return status of the pin.
- */
- QString PINStatus( TInt aIndex, TBool aShowBlockedNote ) const;
-
- /**
- * Checks whether the Pin is still available.
- * @param aIndex Index of the authentication object.
- * @return status
- */
- TBool PinOpen(TInt aIndex) const;
-
- /**
- * Based on the property of auth object the pin can be
- * changed or unblocked.
- * @param aIndex Index of the auth object
- * @return ?description
- */
- void ChangeOrUnblockPinL(TInt aIndex);
-
- /**
- * Changes the value of the PIN.
- * @param aIndex Index of the AO
- * @return void
- */
- void ChangePinL(TInt aIndex);
-
- /**
- * Toggles the value of auth object if possible.
- * @param ?arg1 ?description
- * @return ?description
- */
- TInt ChangeCodeRequest(TInt aIndex);
-
- /**
- * If the auth object is open then closes it.
- * @param aIndex Index of the AO to be closed.
- * @return void
- */
- void CloseAuthObjL(TInt aIndex);
-
- /**
- * Unblocks PIN
- * @param aIndex Index of the AO
- * @return void
- */
- void UnblockPinL(TInt aIndex);
-
- /**
- * Deletes key from the appropriate keystore.
- * @param aTokenIndex Index of the token to be deleted.
- * @return ETrue if keystore was deleted.
- */
- void DeleteKeysL(TInt aTokenIndex);
-
- /**
- * Returns ETrue if PIN is changeable.
- * @param aIndex Index of the AO
- * @return ETrue / EFalse
- */
- TBool PinChangeable(TInt aIndex) const;
-
- /**
- * Displays security module details dialog.
- * @param aTokenIndex Index of the token, which details are shown.
- * @return void
- */
- QVector< QPair<QString,QString> > SecModDetailsL(TInt aTokenIndex);
-
- /**
- * Displays details dialog of the active security module .
- * @return void
- */
- QVector< QPair<QString,QString> > GetSecModDetailsL();
-
- /**
- * Appends the location of the keystore.
- * @return void
- */
- void AppendLocation( QVector< QPair<QString,QString> >& aSecModDetails,
- TUid aLocUid,
- QString aCertDisplayDetails );
-
- /**
- * Appends the value of a label if present otherwise appends empty descriotion.
- * @return void
- */
- void AppendItem( QVector< QPair<QString,QString> >& aSecModDetails,
- QString aLabel,
- const TDesC& aValue,
- QString aNullDescription );
-
- /**
- * Generate details of signing security module.
- * @return void
- */
- void AppendPinNRs(QVector< QPair<QString,QString> >& aSecModDetails);
-
- QVector< QPair<QString, TUint32> > AuthDetails();
-
- /**
- * Changes PIN-NR
- * @param aIndex Index of the AO
- * @return void
- */
- void ChangePinNrL(TInt aIndex);
-
- /**
- * Unblocks PIN-NR
- * @param aIndex Index of the AO
- * @return void
- */
- void UnblockPinNrL(TInt aIndex);
-
- /**
- * Retrieves the UID of the current active keystore.
- * @return uid
- */
- TInt KeyStoreUID();
-
- /**
- * Retrieves the auth object at the speficied index.
- * @return auth object
- */
- const MCTAuthenticationObject& AuthObj(TInt aIndex);
-
- /**
- * Returns ETrue if PIN is unblockable.
- * @param aIndex Index of the AO
- * @return ETrue / EFalse
- */
- TBool PinUnblockable(TInt aIndex) const;
-
-
- /**
- * Returns ETrue if PIN request can be disabled / enabled.
- * @param aIndex Index of the AO
- * @return ETrue / EFalse
- */
- TBool PinRequestChangeable(TInt aIndex) const;
-
- /**
- * Returns ETrue if token is deletable.
- * @param aTokenIndex Index of the token to be deleted.
- * @return ETrue / EFalse
- */
- TBool IsTokenDeletable(TInt aTokenIndex);
-
-
- private:
-
- /**
- * C++ default constructor.
- */
- CSecModUIModel();
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
- void ResetAndDestroyCTObjects();
-
- void ResetAndDestroyAOs();
-
- void InitAuthObjectsL();
-
- void ListAuthObjectsL();
-
- void CreateSettingItem(const TDesC& aTitle,
- const TDesC& aValue,
- TDes& aItem) const;
-
- QString Location( TUid aUid ) const;
-
- void AppendPinNRsL( TDes& aMessage ) const;
-
- private:
- // DATA TYPES
- enum TSecModPanicCode
- {
- EPanicNullPointer,
- EPanicIndexOutOfRange
- };
-
- private: // Data
- // Resource file offsets
- TInt iResourceFileOffset;
- TInt iResourceFileOffset2;
- TInt iResourceFileOffset3;
-
- CSecModUISyncWrapper* iWrapper; // owned
- RFs iRfs;
-
- /**
- * Crypto Token objects
- */
- CUnifiedKeyStore* iUnifiedKeyStore; // owned
- MCTKeyStore* iKeyStore; // not owned
- MCTAuthenticationObjectList* iAOList; // owned, items not owned
- RMPointerArray<MCTAuthenticationObject> iAOArray; // items not owned
-
- RMPointerArray<MCTKeyStore> iAOKeyStores; // items not owned
- };
-
-#endif // CSECMODUIMODEL_H
-
-// End of File
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpsecmodsyncwrapper.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/*
-* Copyright (c) 2005-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: Wrapper class for Symbian's Security Framework's calls.
-*
-*/
-
-#ifndef CPSECMODUISYNCWRAPPER_H
-#define CPSECMODUISYNCWRAPPER_H
-
-#include <e32base.h>
-#include <f32file.h>
-#include <ct/rcpointerarray.h>
-#include <ct/rmpointerarray.h>
-#include <mctkeystore.h>
-
-class MCTToken;
-class MCTAuthenticationObject;
-class MCTAuthenticationObjectList;
-class CUnifiedKeyStore;
-class MCTTokenInterface;
-class TCTTokenObjectHandle;
-
-
-
-/**
-* class CSecModUISyncWrapper
-* Wrapper class for Symbian's Security Framework's calls.
-*
-* @lib wimmanui.dll
-* @since Series 60 2.0
-*/
-class CSecModUISyncWrapper : public CActive
- {
- public: // Constructors and destructor
-
- static CSecModUISyncWrapper* NewLC();
- static CSecModUISyncWrapper* NewL();
- virtual ~CSecModUISyncWrapper();
-
- public: // New functions
-
- TInt Initialize(CUnifiedKeyStore& aKeyStore );
-
- TInt OpenWIM();
-
- TInt GetAuthObjectInterface(
- MCTToken& aToken,
- MCTTokenInterface*& aTokenInterface);
-
- TInt ListAuthObjects(
- MCTAuthenticationObjectList& aAuthObjList,
- RMPointerArray<MCTAuthenticationObject>& aAuthObjects );
-
- TInt ListKeys(
- MCTKeyStore& aKeyStore,
- RMPointerArray<CCTKeyInfo>& aKeysInfos,
- const TCTKeyAttributeFilter& aFilter);
-
- TInt DeleteKey(
- CUnifiedKeyStore& aKeyStore,
- TCTTokenObjectHandle aHandle);
-
- TInt ChangeReferenceData( MCTAuthenticationObject& aAuthObject );
-
- TInt UnblockAuthObject( MCTAuthenticationObject& aAuthObject );
-
- TInt EnableAuthObject( MCTAuthenticationObject& aAuthObject );
-
- TInt DisableAuthObject( MCTAuthenticationObject& aAuthObject );
-
- TInt CloseAuthObject( MCTAuthenticationObject& aAuthObject );
-
- TInt TimeRemaining( MCTAuthenticationObject& aAuthObject, TInt& aStime );
-
- protected: // From CActive
-
- void DoCancel();
- void RunL();
-
- private: // New functions
-
- CSecModUISyncWrapper();
-
- private: // Data
-
- // Internal operation states.
- enum TOperation
- {
- EOperationInit,
- EOperationGetAOInterface,
- EOperationListAOs,
- EOperationListKeys,
- EOperationDelKey,
- EOperationChangeReferenceData,
- EOperationUnblockAO,
- EOperationEnableAO,
- EOperationDisableAO,
- EOperationCloseAO,
- EOperationTimeRemAO,
- EOperationNone
- };
-
- // For wrapping asynchronous calls.
- CActiveSchedulerWait iWait;
-
- // Internal state of operation.
- TOperation iOperation;
-
- // CT objects
- TAny* iObject;
- };
-
-
-#endif // CPSECMODUISYNCWRAPPER_H
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpsecmoduleinfoview.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +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:
-*
-*/
-
-#ifndef CPSECMODULEINFOIEW_H
-#define CPSECMODULEINFOIEW_H
-
-#include <cpbasesettingview.h>
-
-
-
-class CpSecmoduleInfoView : public CpBaseSettingView
-{
- Q_OBJECT
-public:
- explicit CpSecmoduleInfoView(const QVector< QPair<QString,QString> >& securityDetails,QGraphicsItem *parent = 0);
- virtual ~CpSecmoduleInfoView();
-
-public slots:
-
-
-private:
-
-
-};
-
-#endif // CPSECMODULEINFOIEW_H
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpsecmodview.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +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:
-*
-*/
-
-#ifndef CPSECMODVIEW_H
-#define CPSECMODVIEW_H
-
-#include <cpbasesettingview.h>
-
-class HbAbstractViewItem;
-class CpItemDataHelper;
-class CSecModUIModel;
-
-class CpSecModView : public CpBaseSettingView
-{
- Q_OBJECT
-public:
- explicit CpSecModView(TInt aCurrentPos, CSecModUIModel& aSecModUIModel, QGraphicsItem *parent = 0);
- virtual ~CpSecModView();
-
-private slots:
- void displayPrevious();
- void showNextView( const QModelIndex& modelIndex );
-
-public:
- enum TSecModViews
- {
- EAccessView=0,
- ESignatureView
- };
-
-
-private:
- CSecModUIModel& mSecModUIModel;
- TInt mPos;
- TSecModViews mCurrentView;
- HbView* mAccessView;
- HbView* mPrevView;
-
-};
-
-#endif /* CPPLACEHOLDERENTRYITEMDATA_H */
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpsecurityview.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +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:
-*
-*/
-
-#ifndef CPSECURITYVIEW_H
-#define CPSECURITYVIEW_H
-
-#include <cpbasesettingview.h>
-
-class HbAbstractViewItem;
-class CpItemDataHelper;
-class CpSecModView;
-class CpCertView;
-class CSecModUIModel;
-class QModelIndex;
-class CpSecmoduleInfoView;
-class HbMessageBox;
-class HbAction;
-
-class CpSecurityView : public CpBaseSettingView
-{
- Q_OBJECT
-public:
- explicit CpSecurityView(QGraphicsItem *parent = 0);
- virtual ~CpSecurityView();
-
-public slots:
- void viewDone();
- void showWIMview();
- void displayCert(const QModelIndex& modelIndex);
- void displayPrevious();
- void showCodeView();
- void showCodeView( const QModelIndex& modelIndex);
- void indicateLongPress(HbAbstractViewItem *item,QPointF coords);
- void deleteModule();
- void moduleDetails();
- void displayPreviousFromModInfo();
- void dialogClosed(HbAction* action);
-private:
- CSecModUIModel* mSecModUIModel;
- CpSecModView* mSecModView;
- HbView* mPreView;
- CpCertView* mCertView;
- CpSecmoduleInfoView* mModuleinfoView;
- HbView* mCurrentView;
- TInt mPos;
- HbMessageBox* mNote;
- HbAction* mOkAction;
- HbMenu* mContextMenu;
-
-};
-
-#endif // CPSECURITYVIEW_H
--- a/cpsecplugins/cpadvancedsecplugin/inc/cpuitrustids.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +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: Contains the TUids of supported clients for certificate's Trust Setting View
-*
-*/
-
-
-#ifndef CPUITRUSTIDS_H
-#define CPUITRUSTIDS_H
-
-// CONSTANTS
-const TUid KCertManUINullId = {0};
-const TUid KCertManUIViewTrustWapConnectionId = {268479059};
-const TUid KCertManUIViewTrustApplicationControllerId = {268452523};
-const TUid KCertManUIViewTrustMailAndImageConnId = {268441661};
-const TUid KCertManUIViewTrustJavaInstallingId = {270506792};
-const TUid KCertManUIViewOCSPCheckInstallingId = {268478646};
-const TUid KCertManUIViewTrustVPNId = {270498195};
-const TUid KCertManUIViewTrustWidgetInstallId = {537028562};
-
-#endif // CPUITRUSTIDS_H
-
-// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/inc/trace.h Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* 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: TRACE macros
+*
+*/
+
+#ifndef TRACE_H
+#define TRACE_H
+
+#include <e32debug.h> // RDebug
+
+
+// TODO: replace with OST tracing
+#ifdef _DEBUG
+#define TRACE( a, ARGS... ) DebugPrint( _L( a ), ##ARGS )
+#define TRACE_FUNC( ) RDebug::Printf( "%s %s (%u)", __FILE__, __PRETTY_FUNCTION__, __LINE__ )
+#else
+#define TRACE( a, ARGS... )
+#define TRACE_FUNC( )
+#endif
+
+
+// ---------------------------------------------------------------------------
+// DebugPrint()
+// ---------------------------------------------------------------------------
+//
+#ifdef _DEBUG
+const TInt KMaxPrintSize = 256;
+inline void DebugPrint( TRefByValue<const TDesC> aFmt, ... )
+ {
+ VA_LIST list;
+ VA_START( list, aFmt );
+ TBuf<KMaxPrintSize> buf;
+ buf.AppendFormatList( aFmt, list );
+ RDebug::Print( buf );
+ }
+#endif
+
+
+#endif // CPADVSECSETTINGSTRACE_H
+
--- a/cpsecplugins/cpadvancedsecplugin/rom/advancedsecurity_resources.iby Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +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: Advanced security settings resources
-*
-*/
-
-#ifndef ADVANCEDSECPLUGIN_RESOURCES_IBY
-#define ADVANCEDSECPLUGIN_RESOURCES_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-data=DATAZ_\QT_TRANSLATIONS_DIR\certificate_manager.qm QT_TRANSLATIONS_DIR\certificate_manager.qm
-
-#endif // ADVANCEDSECPLUGIN_RESOURCES_IBY
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/rom/cpadvancedsecplugin.iby Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* 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: Advanced security settings (control panel plugin)
+*
+*/
+
+#ifndef CPADVANCEDSECPLUGIN_IBY
+#define CPADVANCEDSECPLUGIN_IBY
+
+file=ABI_DIR\BUILD_DIR\cpadvancedsecplugin.dll SHARED_LIB_DIR\cpadvancedsecplugin.dll
+data=\epoc32\data\c\resource\qt\plugins\controlpanel\cpadvancedsecplugin.qtplugin resource\qt\plugins\controlpanel\cpadvancedsecplugin.qtplugin
+
+#endif // CPADVANCEDSECPLUGIN_IBY
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/rom/cpadvancedsecplugin_resources.iby Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* 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: Advanced security settings resources
+*
+*/
+
+#ifndef ADVANCEDSECPLUGIN_RESOURCES_IBY
+#define ADVANCEDSECPLUGIN_RESOURCES_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+data=DATAZ_\QT_TRANSLATIONS_DIR\certificate_manager.qm QT_TRANSLATIONS_DIR\certificate_manager.qm
+
+#endif // ADVANCEDSECPLUGIN_RESOURCES_IBY
--- a/cpsecplugins/cpadvancedsecplugin/rom/cpsecplugins.iby Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +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:
-*
-*/
-
-#ifndef CPSECPLUGINS_IBY
-#define CPSECPLUGINS_IBY
-
-file=ABI_DIR\BUILD_DIR\cpadvancedsecplugin.dll SHARED_LIB_DIR\cpadvancedsecplugin.dll
-
-data=\epoc32\data\c\resource\qt\plugins\controlpanel\cpadvancedsecplugin.qtplugin resource\qt\plugins\controlpanel\cpadvancedsecplugin.qtplugin
-
-#endif
--- a/cpsecplugins/cpadvancedsecplugin/rom/cpsecplugins_rom.pri Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +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:
-#
-
-
-symbian {
-BLD_INF_RULES.prj_exports += "../rom/cpsecplugins.iby CORE_APP_LAYER_IBY_EXPORT_PATH(cpsecplugins.iby)"
-BLD_INF_RULES.prj_exports += "../rom/advancedsecurity_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(advancedsecurity_resources.iby )"
-}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertdetailsbuilder_symbian.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,707 @@
+/*
+* 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: Helper class to construct certificate details
+*
+*/
+
+#include "advsecsettingscertdetailsbuilder_symbian.h"
+#include "advsecsettingscertificatemodel.h"
+#include "advsecsettingstrustedcertusageuids.h"
+#include "advsecsettingsstoreuids.h"
+#include <unifiedkeystore.h> // CUnifiedKeyStore
+#include <mctkeystore.h> // CCTKeyInfo
+#include <cctcertinfo.h> // CCTCertInfo
+#include <x509cert.h> // CX509Certificate
+#include <X509CertNameParser.h> // X509CertNameParser
+#include <hash.h> // MD5 fingerprint
+#include <QString>
+#include <QStringList>
+#include <QDateTime>
+#include <HbTextResolverSymbian>
+
+// TODO: fix this
+#include "../../../pkiutilities/DeviceToken/inc/TrustedSitesStore.h" // CTrustSitesStore
+
+_LIT(KLocAlgorithmRSA, "txt_certificate_list_rsa");
+_LIT(KLocAlgorithmDSA, "txt_certificate_list_dsa");
+_LIT(KLocAlgorithmDH, "txt_certificate_list_dh");
+_LIT(KLocAlgorithmMD2, "txt_certificate_list_md2");
+_LIT(KLocAlgorithmMD5, "txt_certificate_list_md5");
+_LIT(KLocAlgorithmSHA1, "txt_certificate_list_sha1");
+_LIT(KLocAlgorithmSHA2, "txt_certificate_list_sha2");
+_LIT(KLocAlgorithmUnknown, "txt_certificate_list_unknown");
+_LIT(KLocCertTypeX509, "txt_certificate_list_x509");
+_LIT(KLocCertTypeUnknown, "txt_certificate_list_unknown");
+
+const QString KFormatForAlgorithmNames = "%1%2";
+const QString KTrustedSitesSeparator = ", ";
+
+const int KCertManUiContinuousHexString = 0;
+const int KCertManUiTwoDigitsInBlock = 2;
+
+// implemented in advsecsettingssecuritymodulemodel_symbian_p.cpp
+QString CopyStringL(const TDesC16 &aDes16);
+QString CopyStringL(const TDesC8 &aDes8);
+
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CopyDateL()
+// ---------------------------------------------------------------------------
+//
+void CopyDateL(const TDateTime& aFromDateTime, QDateTime& aToDateTime)
+{
+ QT_TRYCATCH_LEAVING(
+ QDate date(aFromDateTime.Year(), aFromDateTime.Month()+1, aFromDateTime.Day()+1);
+ aToDateTime.setDate(date));
+}
+
+// ---------------------------------------------------------------------------
+// HexFormattedStringL()
+// ---------------------------------------------------------------------------
+//
+QString HexFormattedStringL(const TDesC8& aDes, int blockSize = KCertManUiContinuousHexString)
+{
+ QString string;
+ int blockIndex = 1;
+ for (TInt index = 0; index < aDes.Length(); ++index) {
+ QString number;
+ QT_TRYCATCH_LEAVING(
+ number.sprintf("%02X", aDes[ index ]);
+ string.append(number));
+ if (blockIndex == blockSize) {
+ string.append(" ");
+ blockIndex = 1;
+ } else {
+ ++blockIndex;
+ }
+ }
+ return string;
+}
+
+// ---------------------------------------------------------------------------
+// ResetAndDestroyCleanup()
+// ---------------------------------------------------------------------------
+//
+QString Location(const TUid &aTokenType)
+{
+ QString location;
+ switch (aTokenType.iUid) {
+ // TODO: localized UI strings needed
+ case KAdvSecSettingsFileCertStore:
+ case KAdvSecSettingsFileKeyStore:
+ case KAdvSecSettingsTrustedServerCertStore:
+ case KAdvSecSettingsDeviceCertStore:
+ case KAdvSecSettingsDeviceKeyStore:
+ case KAdvSecSettingsSWICertStore:
+ //: Certificate details location, phone memory
+ location = QObject::tr("Phone memory");
+ break;
+ case KAdvSecSettingsWIMCertAndKeyStore:
+ //: Certificate details location, SIM or WIM card
+ location = QObject::tr("Smart card");
+ break;
+ default:
+ break;
+ }
+ return location;
+}
+
+// ---------------------------------------------------------------------------
+// ResetAndDestroyCleanup()
+// ---------------------------------------------------------------------------
+//
+void ResetAndDestroyCleanup( TAny* aAny )
+ {
+ RPointerArray<HBufC>* array = reinterpret_cast<RPointerArray<HBufC> *>( aAny );
+ array->ResetAndDestroy();
+ }
+
+// ---------------------------------------------------------------------------
+// CleanupResetAndDestroyPushL()
+// ---------------------------------------------------------------------------
+//
+void CleanupResetAndDestroyPushL( RPointerArray<HBufC>& aArray )
+ {
+ TCleanupItem item( &ResetAndDestroyCleanup, &aArray );
+ CleanupStack::PushL( item );
+ }
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::NewL()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertDetailsBuilder *CAdvSecSettingsCertDetailsBuilder::NewL(
+ RFs &aFs, CUnifiedCertStore &aCertStore)
+{
+ CAdvSecSettingsCertDetailsBuilder *self = new(ELeave) CAdvSecSettingsCertDetailsBuilder(
+ aFs, aCertStore);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::~CAdvSecSettingsCertDetailsBuilder()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertDetailsBuilder::~CAdvSecSettingsCertDetailsBuilder()
+{
+ Cancel();
+ delete iCertificate;
+ delete iCertificateUrl;
+ iKeys.Close();
+ delete iKeyFilter;
+ delete iKeyStore;
+
+ // not owned
+ iDetails = NULL;
+ iClientStatus = NULL;
+ iCertInfo = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::GetDetailsL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::GetDetailsL(const CCTCertInfo &aCert,
+ QMap<int,QString> &aDetails, TRequestStatus &aStatus)
+{
+ if (!iClientStatus && (iState == ENotInitialized ||
+ iState == EInitializingKeyStore || iState == EIdle)) {
+ iCertInfo = &aCert;
+ iDetails = &aDetails;
+ iClientStatus = &aStatus;
+ aStatus = KRequestPending;
+
+ if (!iKeyStore) {
+ InitializeKeyStoreL(); // Retrieving starts after initialization is complete
+ } else {
+ RetrieveCertificateL();
+ }
+ } else {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status, KErrGeneral);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::DoCancel()
+{
+ switch (iState) {
+ case EInitializingKeyStore:
+ iKeyStore->CancelInitialize();
+ iState = ENotInitialized;
+ break;
+ case ERetrievingCertificate:
+ iCertStore.CancelRetrieve();
+ iState = EIdle;
+ break;
+ case EListingKeys:
+ iKeyStore->CancelList();
+ iState = EIdle;
+ break;
+ default:
+ break;
+ }
+ User::RequestComplete(iClientStatus, KErrCancel);
+ iClientStatus = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::RunL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::RunL()
+{
+ User::LeaveIfError(iStatus.Int());
+
+ switch (iState) {
+ case EInitializingKeyStore:
+ RetrieveCertificateL();
+ break;
+ case ERetrievingCertificate:
+ ListKeysL();
+ break;
+ case EListingKeys:
+ ReturnCertificateDetailsL();
+ break;
+ default:
+ ASSERT(EFalse);
+ break;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CAdvSecSettingsCertDetailsBuilder::RunError(TInt aError)
+{
+ User::RequestComplete(iClientStatus, aError);
+ if (iState != EInitializingKeyStore) {
+ iState = EIdle;
+ } else {
+ iState = EFailed;
+ }
+ return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertDetailsBuilder::CAdvSecSettingsCertDetailsBuilder(RFs &aFs,
+ CUnifiedCertStore &aCertStore) : CActive(CActive::EPriorityLow), iFs(aFs),
+ iCertStore(aCertStore), iCertUrlPtr(0, 0)
+{
+ CActiveScheduler::Add(this);
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::ConstructL()
+{
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::InitializeKeyStoreL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::InitializeKeyStoreL()
+{
+ ASSERT(!iKeyStore);
+ iKeyStore = CUnifiedKeyStore::NewL(iFs);
+ iKeyStore->Initialize(iStatus);
+ iState = EInitializingKeyStore;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::RetrieveCertificateL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::RetrieveCertificateL()
+{
+ ASSERT(iCertInfo);
+ if (iCertificate) {
+ delete iCertificate;
+ iCertificate = NULL;
+ }
+ if (iCertificateUrl) {
+ delete iCertificateUrl;
+ iCertificateUrl = NULL;
+ }
+
+ if (iCertInfo->CertificateFormat() == EX509Certificate) {
+ iCertStore.Retrieve(*iCertInfo, iCertificate, iStatus);
+ } else {
+ iCertificateUrl = HBufC8::NewL(iCertInfo->Size());
+ iCertUrlPtr.Set(iCertificateUrl->Des());
+ iCertStore.Retrieve(*iCertInfo, iCertUrlPtr, iStatus);
+ }
+ iState = ERetrievingCertificate;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::ListKeysL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::ListKeysL()
+{
+ ASSERT(iKeyStore);
+ if (!iKeyFilter) {
+ iKeyFilter = new TCTKeyAttributeFilter;
+ }
+ iKeyFilter->iKeyId = iCertInfo->SubjectKeyId();
+ iKeys.Close();
+ iKeyStore->List(iKeys, *iKeyFilter, iStatus);
+ iState = EListingKeys;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::ReturnCertificateDetailsL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::ReturnCertificateDetailsL()
+{
+ AppendLabelL();
+ AppendIssuerL();
+ AppendSubjectL();
+ AppendValidityPeriodL();
+ AppendLocationL();
+ AppendFormatL();
+ AppendKeyUsageL();
+ AppendAlgorithmL();
+ AppendSerialNumberL();
+ AppendFingerprintsL();
+ AppendPublicKeyL();
+ AppendTrustedSitesL();
+
+ User::RequestComplete(iClientStatus, KErrNone);
+ iClientStatus = NULL;
+ iState = EIdle;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::CertificateFormatStringL()
+// ---------------------------------------------------------------------------
+//
+QString CAdvSecSettingsCertDetailsBuilder::CertificateFormatStringL(
+ const TCertificateFormat aFormat) const
+{
+ HBufC* format = NULL;
+
+ switch (aFormat) {
+ case EX509Certificate:
+ format = HbTextResolverSymbian::LoadLC(KLocCertTypeX509);
+ break;
+ case EWTLSCertificate:
+ // TODO: localized UI strings needed
+ format = _L("WTLS").AllocLC();
+ break;
+ case EX968Certificate:
+ // TODO: localized UI strings needed
+ format = _L("X968").AllocLC();
+ break;
+ case EX509CertificateUrl:
+ // TODO: localized UI strings needed
+ format = _L("X509 URL").AllocLC();
+ break;
+ case EWTLSCertificateUrl:
+ // TODO: localized UI strings needed
+ format = _L("WTLS URL").AllocLC();
+ break;
+ case EX968CertificateUrl:
+ // TODO: localized UI strings needed
+ format = _L("X968 URL").AllocLC();
+ break;
+ case EUnknownCertificate:
+ default:
+ //: Unknown certificate format type
+ format = HbTextResolverSymbian::LoadLC(KLocCertTypeUnknown);
+ break;
+ }
+
+ QString formatString = CopyStringL(*format);
+ CleanupStack::PopAndDestroy(format);
+ return formatString;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AlgorithmNameStringL()
+// ---------------------------------------------------------------------------
+//
+QString CAdvSecSettingsCertDetailsBuilder::AlgorithmNameStringL(
+ TAlgorithmId aAlgorithmId) const
+{
+ HBufC* algorithm = NULL;
+
+ switch (aAlgorithmId) {
+ case ERSA:
+ algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmRSA);
+ break;
+ case EDSA:
+ algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmDSA);
+ break;
+ case EDH:
+ algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmDH);
+ break;
+ case EMD2:
+ algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmMD2);
+ break;
+ case EMD5:
+ algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmMD5);
+ break;
+ case ESHA1:
+ algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmSHA1);
+ break;
+ case ESHA224:
+ case ESHA256:
+ case ESHA384:
+ case ESHA512:
+ algorithm = HbTextResolverSymbian::LoadLC(KLocAlgorithmSHA2);
+ break;
+ default:
+ break;
+ }
+
+ QString algorithmName;
+ if (algorithm) {
+ algorithmName = CopyStringL(*algorithm);
+ CleanupStack::PopAndDestroy(algorithm);
+ }
+ return algorithmName;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendLabelL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendLabelL()
+{
+ ASSERT(iCertInfo);
+ HBufC *label = NULL;
+ if (iCertInfo->CertificateFormat() == EX509Certificate) {
+ CX509Certificate *cert = static_cast<CX509Certificate*>(iCertificate);
+ HBufC* secondaryName = NULL;
+ X509CertNameParser::PrimaryAndSecondaryNameL(*cert, label, secondaryName);
+ delete secondaryName;
+ } else {
+ label = iCertInfo->Label().AllocL();
+ }
+ CleanupStack::PushL(label);
+ iDetails->insert(AdvSecSettingsCertificateModel::Label, CopyStringL(*label));
+ CleanupStack::PopAndDestroy(label);
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendIssuerL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendIssuerL()
+{
+ if (iCertificate) {
+ HBufC *issuer = NULL;
+ ASSERT(iCertInfo);
+ if (iCertInfo->CertificateFormat() == EX509Certificate) {
+ CX509Certificate* cert = static_cast<CX509Certificate*>( iCertificate );
+ X509CertNameParser::IssuerFullNameL(*cert, issuer);
+ } else {
+ issuer = iCertificate->IssuerL();
+ }
+ CleanupStack::PushL(issuer);
+ iDetails->insert(AdvSecSettingsCertificateModel::Issuer, CopyStringL(*issuer));
+ CleanupStack::PopAndDestroy(issuer);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendSubjectL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendSubjectL()
+{
+ if (iCertificate) {
+ HBufC *subject = NULL;
+ ASSERT(iCertInfo);
+ if (iCertInfo->CertificateFormat() == EX509Certificate) {
+ CX509Certificate* cert = static_cast<CX509Certificate*>( iCertificate );
+ X509CertNameParser::SubjectFullNameL(*cert, subject);
+ } else {
+ subject = iCertificate->SubjectL();
+ }
+ CleanupStack::PushL(subject);
+ iDetails->insert(AdvSecSettingsCertificateModel::Subject, CopyStringL(*subject));
+ CleanupStack::PopAndDestroy(subject);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendValidityPeriodL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendValidityPeriodL()
+{
+ if (iCertificate) {
+ CValidityPeriod validityPeriod(iCertificate->ValidityPeriod());
+
+ TDateTime sValidFrom(validityPeriod.Start().DateTime());
+ QDateTime qValidFrom;
+ CopyDateL(sValidFrom, qValidFrom);
+ QString validFrom(qValidFrom.toString(Qt::DefaultLocaleShortDate));
+ iDetails->insert(AdvSecSettingsCertificateModel::ValidFrom, validFrom);
+
+ TDateTime sValidTo(validityPeriod.Finish().DateTime());
+ QDateTime qValidTo;
+ CopyDateL(sValidTo, qValidTo);
+ QString validTo(qValidTo.toString(Qt::DefaultLocaleShortDate));
+ iDetails->insert(AdvSecSettingsCertificateModel::ValidTo, validTo);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendLocationL()
+{
+ ASSERT(iCertInfo);
+ QString location;
+ if (iCertificateUrl) {
+ if (iCertInfo->CertificateFormat() == EX509CertificateUrl) {
+ location = CopyStringL(*iCertificateUrl);
+ }
+ } else {
+ location = Location(iCertInfo->Token().TokenType().Type());
+ }
+ if (!location.isEmpty()) {
+ iDetails->insert(AdvSecSettingsCertificateModel::Location, location);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendFormatL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendFormatL()
+{
+ ASSERT(iCertInfo);
+ QString certFormat = CertificateFormatStringL(iCertInfo->CertificateFormat());
+ iDetails->insert(AdvSecSettingsCertificateModel::Format, certFormat);
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendKeyUsageL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendKeyUsageL()
+{
+ // TODO: should be displayed only for user and device certicates
+ if (iKeys.Count()) {
+ const TInt KFirstKeyIndex = 0;
+ // TODO: localized UI strings needed
+
+ // Key Usage
+ QString keyUsage;
+ TKeyUsagePKCS15 usage = iKeys[KFirstKeyIndex]->Usage();
+ if ((usage & EPKCS15UsageSign) || (usage & EPKCS15UsageSignRecover)) {
+ keyUsage = QObject::tr("Client authentication");
+ }
+ if (usage & EPKCS15UsageNonRepudiation) {
+ keyUsage = QObject::tr("Digital signing");
+ }
+ if (!keyUsage.isEmpty()) {
+ iDetails->insert(AdvSecSettingsCertificateModel::KeyUsage, keyUsage);
+ }
+
+ // Key Location
+ QString keyLocation;
+ keyLocation = Location(iKeys[KFirstKeyIndex]->Token().TokenType().Type());
+ if (!keyLocation.isEmpty()) {
+ iDetails->insert(AdvSecSettingsCertificateModel::KeyLocation, keyLocation);
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendAlgorithmL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendAlgorithmL()
+{
+ if (iCertificate) {
+ QString digestAlg = AlgorithmNameStringL(
+ iCertificate->SigningAlgorithm().DigestAlgorithm().Algorithm());
+ QString asymmerticAlg = AlgorithmNameStringL(
+ iCertificate->SigningAlgorithm().AsymmetricAlgorithm().Algorithm());
+ if (digestAlg.isNull() || asymmerticAlg.isNull()) {
+ HBufC* unknownAlg = HbTextResolverSymbian::LoadLC(KLocAlgorithmUnknown);
+ iDetails->insert(AdvSecSettingsCertificateModel::Algorithm, CopyStringL(*unknownAlg));
+ CleanupStack::PopAndDestroy(unknownAlg);
+ } else {
+ QString algorithm(KFormatForAlgorithmNames.arg(digestAlg, asymmerticAlg));
+ iDetails->insert(AdvSecSettingsCertificateModel::Algorithm, algorithm);
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendSerialNumberL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendSerialNumberL()
+{
+ if (iCertificate) {
+ TPtrC8 serialNumber = iCertificate->SerialNumber();
+ iDetails->insert(AdvSecSettingsCertificateModel::SerialNumber,
+ HexFormattedStringL(serialNumber));
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendFingerprintsL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendFingerprintsL()
+{
+ if (iCertificate) {
+ // Fingerprint (SHA1)
+ TPtrC8 sha1Fingerprint = iCertificate->Fingerprint();
+ iDetails->insert(AdvSecSettingsCertificateModel::FingerprintSHA1,
+ HexFormattedStringL(sha1Fingerprint, KCertManUiTwoDigitsInBlock));
+
+ // Fingerprint (MD5)
+ CMD5* md5 = CMD5::NewL();
+ CleanupStack::PushL(md5);
+ const TInt KRsaFingerprintLength = 20;
+ TBuf8<KRsaFingerprintLength> rsaFingerprint = md5->Hash(iCertificate->Encoding());
+ iDetails->insert(AdvSecSettingsCertificateModel::FingerprintMD5,
+ HexFormattedStringL(rsaFingerprint, KCertManUiTwoDigitsInBlock));
+ CleanupStack::PopAndDestroy(md5);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendPublicKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendPublicKeyL()
+{
+ if (iCertificate) {
+ TPtrC8 publicKey = iCertificate->PublicKey().KeyData();
+ iDetails->insert(AdvSecSettingsCertificateModel::PublicKey,
+ HexFormattedStringL(publicKey, KCertManUiTwoDigitsInBlock));
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertDetailsBuilder::AppendTrustedSitesL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertDetailsBuilder::AppendTrustedSitesL()
+{
+ if (iCertificate) {
+ CTrustSitesStore* trustedSitesStore = CTrustSitesStore::NewL();
+ CleanupStack::PushL(trustedSitesStore);
+
+ QStringList trustedSitesList;
+ RPointerArray<HBufC> trustedSitesArray;
+ CleanupResetAndDestroyPushL(trustedSitesArray);
+ trustedSitesStore->GetTrustedSitesL(iCertificate->Encoding(), trustedSitesArray);
+ TInt count = trustedSitesArray.Count();
+ if (count) {
+ for (TInt index = 0; index < trustedSitesArray.Count(); index++) {
+ trustedSitesList.append(CopyStringL(*(trustedSitesArray[index])));
+ }
+ // TODO: might be better to return trusted sites as a QStringList (in QVariant)
+ iDetails->insert(AdvSecSettingsCertificateModel::TrustedSites,
+ trustedSitesList.join(KTrustedSitesSeparator));
+ }
+ CleanupStack::PopAndDestroy(2, trustedSitesStore); // trustedSitesArray, trustedSitesStore
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificate.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* 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 the License "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: Certificate class in advances security settings
+*
+*/
+
+#include "advsecsettingscertificate.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::CpAdvSecSettingsCertificate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificate::AdvSecSettingsCertificate(QObject *parent)
+ : QObject(parent), mCertType(NotDefined), mLabel(), mModelIndex(0)
+{
+}
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::~CpAdvSecSettingsCertificate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificate::~AdvSecSettingsCertificate()
+{
+}
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::label()
+// ---------------------------------------------------------------------------
+//
+const QString &AdvSecSettingsCertificate::label() const
+{
+ return mLabel;
+}
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::setLabel()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificate::setLabel(const QString &label)
+{
+ mLabel = label;
+}
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::certType()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificate::CertificateType
+ AdvSecSettingsCertificate::certType() const
+{
+ return mCertType;
+}
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::setCertType()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificate::setCertType(CertificateType type)
+{
+ mCertType = type;
+}
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::modelIndex()
+// ---------------------------------------------------------------------------
+//
+int AdvSecSettingsCertificate::modelIndex() const
+{
+ return mModelIndex;
+}
+
+// ---------------------------------------------------------------------------
+// CpAdvSecSettingsCertificate::setModelIndex()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificate::setModelIndex(int index)
+{
+ mModelIndex = index;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatedetailview.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,221 @@
+/*
+* 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: Certificate detail view in advanced security settings
+*
+*/
+
+#include "advsecsettingscertificatedetailview.h"
+#include "advsecsettingscertificatemodel.h"
+#include "advsecsettingscertificate.h"
+#include "advsecsettingscerttrustsettingsview.h"
+#include <QGraphicsLinearLayout>
+#include <QTextStream>
+#include <HbGroupBox>
+#include <HbScrollArea>
+#include <HbLabel>
+#include <HbMenu>
+#include <HbAction>
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::AdvSecSettingsCertificateDetailView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateDetailView::AdvSecSettingsCertificateDetailView(
+ AdvSecSettingsCertificateModel &model, QGraphicsItem *parent) :
+ AdvSecSettingsViewBase(0, parent), mModel(model), mCertificate(0),
+ mDetails(), mViewLabel(0), mScrollArea(0), mDetailsText(0)
+{
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ mViewLabel = new HbGroupBox;
+ layout->addItem(mViewLabel);
+
+ mScrollArea = new HbScrollArea;
+ mDetailsText = new HbLabel;
+ mDetailsText->setTextWrapping(Hb::TextWordWrap);
+ mScrollArea->setContentWidget(mDetailsText);
+ mScrollArea->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOn);
+ layout->addItem(mScrollArea);
+
+ setLayout(layout);
+
+ connect(&mModel, SIGNAL(getCertificateDetailsCompleted()),
+ this, SLOT(certificateDetailsCompleted()));
+ connect(&mModel, SIGNAL(deleteCertificateCompleted()),
+ this, SLOT(displayPreviousView()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::~AdvSecSettingsCertificateDetailView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateDetailView::~AdvSecSettingsCertificateDetailView()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::setCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::setCertificate(
+ const AdvSecSettingsCertificate &cert)
+{
+ mCertificate = &cert;
+
+ menu()->clearActions();
+ if (cert.certType() == AdvSecSettingsCertificate::AuthorityCertificate) {
+ HbAction *trustSettingsAction = 0;
+ trustSettingsAction = new HbAction(hbTrId("txt_certificate_manager_menu_trust_settings"));
+ connect(trustSettingsAction, SIGNAL(triggered()), this, SLOT(showTrustSettings()));
+ menu()->addAction(trustSettingsAction);
+ }
+ if (mModel.isDeletable(cert)) {
+ HbAction *deleteAction = new HbAction(hbTrId("txt_common_menu_delete"));
+ connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteCertificate()));
+ menu()->addAction(deleteAction);
+ }
+
+ mDetails.clear();
+ mModel.getCertificateDetails(cert, mDetails);
+
+ mDetailsText->clear();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::certificateDetailsCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::certificateDetailsCompleted()
+{
+ QString label;
+ QString details;
+ QTextStream stream(&details);
+
+ bool isFirst(true);
+ QMapIterator<int, QString> iter(mDetails);
+ while (iter.hasNext()) {
+ if (!isFirst) {
+ stream << endl;
+ }
+ isFirst = false;
+
+ int key = iter.next().key();
+ switch (key) {
+ case AdvSecSettingsCertificateModel::Label:
+ label = iter.value();
+ break;
+ case AdvSecSettingsCertificateModel::Issuer:
+ stream << hbTrId("txt_certificate_list_issuer") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::Subject:
+ stream << hbTrId("txt_certificate_list_subject") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::ValidFrom:
+ stream << hbTrId("txt_certificate_list_valid_from") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::ValidTo:
+ stream << hbTrId("txt_certificate_list_valid_until") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::Location:
+ // TODO: localized UI string needed
+ stream << tr("Location:") << endl << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::Format:
+ stream << hbTrId("txt_certificate_list_certificate_format") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::KeyUsage:
+ // TODO: localized UI string needed
+ stream << tr("Key usage:") << endl << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::KeyLocation:
+ // TODO: localized UI string needed
+ stream << tr("Key location:") << endl << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::Algorithm:
+ stream << hbTrId("txt_certificate_list_algorithm") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::SerialNumber:
+ stream << hbTrId("txt_certificate_list_serial_number") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::FingerprintSHA1:
+ stream << hbTrId("txt_certificate_list_fingerprint_sha1") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::FingerprintMD5:
+ stream << hbTrId("txt_certificate_list_fingerprint_md5") << endl
+ << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::PublicKey:
+ // TODO: localized UI string needed
+ stream << tr("Public key:") << endl << iter.value() << endl;
+ break;
+ case AdvSecSettingsCertificateModel::TrustedSites:
+ // TODO: localized UI string needed
+ stream << tr("Trusted sites:") << endl << iter.value() << endl;
+ break;
+ default:
+ break;
+ }
+ }
+
+ mViewLabel->setHeading(label);
+ mDetailsText->setPlainText(details);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::showTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::showTrustSettings()
+{
+ Q_ASSERT(mCertificate != 0);
+ AdvSecSettingsCertTrustSettingsView *trustSettingsView =
+ new AdvSecSettingsCertTrustSettingsView(mModel);
+ trustSettingsView->setDeleteOnClose(true);
+ trustSettingsView->setCertificate(*mCertificate);
+ displayView(trustSettingsView);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::deleteCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::deleteCertificate()
+{
+ Q_ASSERT(mCertificate != 0);
+ // TODO: localized UI string needed
+ QString confirmText(tr("Delete %1?").arg(mCertificate->label()));
+ displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::deleteConfirmationAccepted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::deleteConfirmationAccepted()
+{
+ Q_ASSERT(mCertificate != 0);
+ mModel.deleteCertificate(*mCertificate);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatelistview.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,380 @@
+/*
+* 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: Certificate list view in advanced security settings
+*
+*/
+
+#include "advsecsettingscertificatelistview.h"
+#include "advsecsettingscertificatemodel.h"
+#include "advsecsettingscertificatedetailview.h"
+#include "advsecsettingscerttrustsettingsview.h"
+#include <QGraphicsLinearLayout>
+#include <HbAbstractViewItem>
+#include <HbGroupBox>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <HbLabel>
+#include <HbStackedWidget>
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::AdvSecSettingsCertificateListView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateListView::AdvSecSettingsCertificateListView(
+ QGraphicsItem *parent) : AdvSecSettingsViewBase(0, parent),
+ mCertType(AdvSecSettingsCertificate::NotDefined),
+ mListWidget(0), mEmptyText(0), mRetrievingText(0), mStackedWidget(0),
+ mIsRetrieving(true), mModelCertificateList(), mDisplayedCertificates(),
+ mModel(0), mDetailView(), mTrustSettingsView(0), mCurrentCertificate(0)
+{
+ mModel = new AdvSecSettingsCertificateModel(this);
+ mModel->initialize();
+ connect(mModel, SIGNAL(initializeCompleted()),
+ this, SLOT(readAllCertificatesFromModel()));
+ connect(mModel, SIGNAL(getCertificatesCompleted()),
+ this, SLOT(displayAllCertificatesReadFromModel()));
+ connect(mModel, SIGNAL(deleteCertificateCompleted()),
+ this, SLOT(refreshAfterCurrentCertRemoved()));
+ connect(mModel, SIGNAL(moveToPersonalCertificatesCompleted()),
+ this, SLOT(refreshAfterCurrentCertRemoved()));
+ connect(mModel, SIGNAL(moveToDeviceCertificatesCompleted()),
+ this, SLOT(refreshAfterCurrentCertRemoved()));
+ connect(mModel, SIGNAL(errorOccurred(int)),
+ this, SLOT(displayError(int)));
+
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ // View title
+ mViewLabel = new HbGroupBox;
+ layout->addItem(mViewLabel);
+
+ // Certificate list or empty text
+ mStackedWidget = new HbStackedWidget;
+
+ mListWidget = new HbListWidget;
+ connect(mListWidget, SIGNAL(activated(QModelIndex)),
+ this, SLOT(openCertificate(QModelIndex)));
+ connect(mListWidget, SIGNAL(longPressed(HbAbstractViewItem*, QPointF)),
+ this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF)));
+ mStackedWidget->addWidget(mListWidget);
+
+ // TODO: localized UI string needed
+ mEmptyText = new HbLabel(tr("No certificates"));
+ mEmptyText->setAlignment(Qt::AlignCenter);
+ mStackedWidget->addWidget(mEmptyText);
+
+ mRetrievingText = new HbLabel(tr("Retrieving..."));
+ mRetrievingText->setAlignment(Qt::AlignCenter);
+ mStackedWidget->addWidget(mRetrievingText);
+
+ mStackedWidget->setCurrentWidget(mRetrievingText);
+ layout->addItem(mStackedWidget);
+
+ setLayout(layout);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::~AdvSecSettingsCertificateListView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateListView::~AdvSecSettingsCertificateListView()
+{
+ clearModelCertificates();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::displayCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::displayCertificates(
+ AdvSecSettingsCertificate::CertificateType type)
+{
+ if (type != mCertType) {
+ mCertType = type;
+ switch (mCertType) {
+ case AdvSecSettingsCertificate::AuthorityCertificate:
+ mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_authority_certific"));
+ break;
+ case AdvSecSettingsCertificate::TrustedSiteCertificate:
+ mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_trusted_site_certi"));
+ break;
+ case AdvSecSettingsCertificate::PersonalCertificate:
+ mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_personal_certifica"));
+ break;
+ case AdvSecSettingsCertificate::DeviceCertificate:
+ mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_device_certificate"));
+ break;
+ default:
+ break;
+ }
+ }
+ refreshDisplayedCertificates();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::setCurrentIndex()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::setCurrentIndex(const QModelIndex& index)
+{
+ mListWidget->setCurrentIndex(index, QItemSelectionModel::SelectCurrent);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::indicateLongPress()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::indicateLongPress(
+ HbAbstractViewItem *item, const QPointF &position)
+{
+ Q_ASSERT(item != 0);
+ mCurrentCertificate = mDisplayedCertificates.at(item->modelIndex().row());
+
+ clearItemSpecificMenu();
+ addItemSpecificMenuAction(hbTrId("txt_common_menu_open"),
+ this, SLOT(openCurrentCertificate()));
+
+ switch (mCertType) {
+ case AdvSecSettingsCertificate::AuthorityCertificate:
+ addItemSpecificMenuAction(hbTrId("txt_certificate_manager_menu_trust_settings"),
+ this, SLOT(displayCurrentCertTrustSettings()));
+ break;
+ case AdvSecSettingsCertificate::TrustedSiteCertificate:
+ break;
+ case AdvSecSettingsCertificate::PersonalCertificate:
+ addItemSpecificMenuAction(hbTrId("txt_certificate_manager_menu_move_to_device_certif"),
+ this, SLOT(moveCurrentCertToDeviceCertificates()));
+ break;
+ case AdvSecSettingsCertificate::DeviceCertificate:
+ addItemSpecificMenuAction(hbTrId("txt_certificate_manager_menu_move_to_personal_cert"),
+ this, SLOT(moveCurrentCertToPersonalCertificates()));
+ break;
+ default:
+ break;
+ }
+
+ Q_ASSERT(mCurrentCertificate != 0);
+ if (mModel->isDeletable(*mCurrentCertificate)) {
+ addItemSpecificMenuAction(hbTrId("txt_common_menu_delete"),
+ this, SLOT(deleteCurrentCertificate()));
+ }
+
+ displayItemSpecificMenu(position);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::openCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::openCertificate(const QModelIndex& modelIndex)
+{
+ mCurrentCertificate = mDisplayedCertificates.at(modelIndex.row());
+ openCurrentCertificate();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::openCurrentCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::openCurrentCertificate()
+{
+ if (!mDetailView) {
+ mDetailView = new AdvSecSettingsCertificateDetailView(*mModel, this);
+ }
+ Q_ASSERT(mCurrentCertificate != 0);
+ mDetailView->setCertificate(*mCurrentCertificate);
+ displayView(mDetailView);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::displayCurrentCertTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::displayCurrentCertTrustSettings()
+{
+ if (!mTrustSettingsView) {
+ mTrustSettingsView = new AdvSecSettingsCertTrustSettingsView(*mModel, this);
+ }
+ Q_ASSERT(mCurrentCertificate != 0);
+ mTrustSettingsView->setCertificate(*mCurrentCertificate);
+ displayView(mTrustSettingsView);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::deleteCurrentCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::deleteCurrentCertificate()
+{
+ Q_ASSERT(mCurrentCertificate != 0);
+ // TODO: localized UI string needed
+ QString confirmText(tr("Delete %1?").arg(mCurrentCertificate->label()));
+ displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::deleteConfirmationAccepted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::deleteConfirmationAccepted()
+{
+ Q_ASSERT(mCurrentCertificate != 0);
+ mModel->deleteCertificate(*mCurrentCertificate);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::moveCurrentCertToDeviceCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::moveCurrentCertToDeviceCertificates()
+{
+ Q_ASSERT(mCurrentCertificate != 0);
+ QString confirmText(hbTrId("txt_certificate_info_device_certificates_can_be_us"));
+ displayQuestionNote(confirmText, this, SLOT(moveToDeviceCertsConfirmationAccepted()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::moveToDeviceCertsConfirmationAccepted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::moveToDeviceCertsConfirmationAccepted()
+{
+ Q_ASSERT(mCurrentCertificate != 0);
+ mModel->moveToDeviceCertificates(*mCurrentCertificate);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::moveCurrentCertToPersonalCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::moveCurrentCertToPersonalCertificates()
+{
+ Q_ASSERT(mCurrentCertificate != 0);
+ // TODO: localized UI string needed
+ QString confirmText(tr("Using personal certificates may require user confirmation. Continue?"));
+ displayQuestionNote(confirmText, this, SLOT(moveToPersonalCertsConfirmationAccepted()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::moveToPersonalCertsConfirmationAccepted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::moveToPersonalCertsConfirmationAccepted()
+{
+ Q_ASSERT(mCurrentCertificate != 0);
+ mModel->moveToPersonalCertificates(*mCurrentCertificate);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::readAllCertificatesFromModel()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::readAllCertificatesFromModel()
+{
+ clearModelCertificates();
+ mModel->getCertificates(mModelCertificateList);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::displayAllCertificatesReadFromModel()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::displayAllCertificatesReadFromModel()
+{
+ if (mCertType != AdvSecSettingsCertificate::NotDefined) {
+ mIsRetrieving = false;
+ refreshDisplayedCertificates();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::clearModelCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::clearModelCertificates()
+{
+ if (!mModelCertificateList.isEmpty()) {
+ QMutableListIterator<AdvSecSettingsCertificate *> iter(mModelCertificateList);
+ while (iter.hasNext()) {
+ delete iter.next();
+ }
+ mModelCertificateList.clear();
+ }
+ mCurrentCertificate = 0;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::refreshDisplayedCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::refreshDisplayedCertificates()
+{
+ int currentRow = mListWidget->currentRow();
+ mListWidget->clear();
+ mDisplayedCertificates.clear();
+ QListIterator<AdvSecSettingsCertificate *> iter(mModelCertificateList);
+ while (iter.hasNext()) {
+ AdvSecSettingsCertificate *cert = iter.next();
+ if (cert->certType() == mCertType) {
+ mDisplayedCertificates.append(cert);
+ HbListWidgetItem *item = new HbListWidgetItem;
+ item->setText(cert->label());
+ mListWidget->addItem(item);
+ }
+ }
+ if (mListWidget->count()) {
+ if (currentRow < mListWidget->count()) {
+ mListWidget->setCurrentRow(currentRow);
+ }
+ mStackedWidget->setCurrentWidget(mListWidget);
+ } else {
+ if (mIsRetrieving) {
+ mStackedWidget->setCurrentWidget(mRetrievingText);
+ } else {
+ mStackedWidget->setCurrentWidget(mEmptyText);
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateListView::refreshAfterCurrentCertRemoved()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateListView::refreshAfterCurrentCertRemoved()
+{
+ Q_ASSERT(mCurrentCertificate != 0);
+
+ QString currentCertLabel = mCurrentCertificate->label();
+ for (TInt row = 0; row < mListWidget->count(); row++) {
+ HbListWidgetItem *item = mListWidget->item(row);
+ if (item->text() == currentCertLabel) {
+ item = mListWidget->takeItem(row);
+ delete item;
+ }
+ }
+ if (mListWidget->count()) {
+ mStackedWidget->setCurrentWidget(mListWidget);
+ } else {
+ mStackedWidget->setCurrentWidget(mEmptyText);
+ }
+
+ mDisplayedCertificates.removeAll(mCurrentCertificate);
+ mCurrentCertificate = 0;
+
+ readAllCertificatesFromModel();
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatemodel.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,251 @@
+/*
+* 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 the License "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: Advanced security settings certificate model
+*
+*/
+
+#include "advsecsettingscertificatemodel.h"
+#include <QStandardItemModel>
+
+#if defined(Q_OS_SYMBIAN)
+#include "advsecsettingscertificatemodel_symbian_p.h"
+#else
+#include "advsecsettingscertificatemodel_stub_p.h"
+#endif
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::AdvSecSettingsCertificateModel()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateModel::AdvSecSettingsCertificateModel(QObject *parent) :
+ QObject(parent), d_ptr(0)
+{
+ d_ptr = new AdvSecSettingsCertificateModelPrivate(this);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::~AdvSecSettingsCertificateModel()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateModel::~AdvSecSettingsCertificateModel()
+{
+ delete d_ptr;
+ d_ptr = 0;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::initialize()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::initialize()
+{
+ if (d_ptr) {
+ d_ptr->initialize();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::getCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::getCertificates(
+ QList<AdvSecSettingsCertificate*> &certList)
+{
+ if (d_ptr) {
+ d_ptr->getCertificates(certList);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::getCertificateDetails()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::getCertificateDetails(
+ const AdvSecSettingsCertificate &cert, QMap<int,QString> &details)
+{
+ if (d_ptr) {
+ d_ptr->getCertificateDetails(cert, details);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::isDeletable()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsCertificateModel::isDeletable(
+ const AdvSecSettingsCertificate &cert) const
+{
+ if (d_ptr) {
+ return d_ptr->isDeletable(cert);
+ }
+ return false;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::deleteCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::deleteCertificate(
+ const AdvSecSettingsCertificate &cert)
+{
+ if (d_ptr) {
+ d_ptr->deleteCertificate(cert);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::getTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::getTrustSettings(
+ const AdvSecSettingsCertificate &cert, QMap<int,bool> &usageIdAndTrust)
+{
+ if (d_ptr) {
+ d_ptr->getTrustSettings(cert, usageIdAndTrust);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::setTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::setTrustSettings(
+ const AdvSecSettingsCertificate &cert,
+ const QMap<int,bool> &usageIdAndTrust)
+{
+ if (d_ptr) {
+ d_ptr->setTrustSettings(cert, usageIdAndTrust);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::getCertificateUsageNames()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::getCertificateUsageNames(
+ QMap<int,QString> &usageIdAndName)
+{
+ if (d_ptr) {
+ d_ptr->getCertificateUsageNames(usageIdAndName);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::moveToPersonalCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::moveToPersonalCertificates(
+ const AdvSecSettingsCertificate &cert)
+{
+ if (d_ptr) {
+ d_ptr->moveToPersonalCertificates(cert);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::moveToDeviceCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::moveToDeviceCertificates(
+ const AdvSecSettingsCertificate &cert)
+{
+ if (d_ptr) {
+ d_ptr->moveToDeviceCertificates(cert);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleInitializeCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleInitializeCompleted()
+{
+ emit initializeCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleGetCertificatesCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleGetCertificatesCompleted()
+{
+ emit getCertificatesCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleGetCertificateDetailsCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleGetCertificateDetailsCompleted()
+{
+ emit getCertificateDetailsCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleDeleteCertificateCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleDeleteCertificateCompleted()
+{
+ emit deleteCertificateCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleGetTrustSettingsCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleGetTrustSettingsCompleted()
+{
+ emit getTrustSettingsCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleSetTrustSettingsCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleSetTrustSettingsCompleted()
+{
+ emit setTrustSettingsCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleMoveToPersonalCertificateCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleMoveToPersonalCertificateCompleted()
+{
+ emit moveToPersonalCertificatesCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleMoveToDeviceCertificatesCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleMoveToDeviceCertificatesCompleted()
+{
+ emit moveToDeviceCertificatesCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModel::handleError()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModel::handleError(int error)
+{
+ emit errorOccurred(error);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatemodel_stub_p.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,134 @@
+/*
+* 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 the License "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: Platform specific private certificate handling model
+*
+*/
+
+
+#include "advsecsettingscertificatemodel_stub_p.h"
+#include "advsecsettingscertificate.h"
+#include <QStandardItemModel>
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::AdvSecSettingsCertificateModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateModelPrivate::AdvSecSettingsCertificateModelPrivate(
+ AdvSecSettingsCertificateModel *q) : QObject(0), q_ptr(q)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::~AdvSecSettingsCertificateModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateModelPrivate::~AdvSecSettingsCertificateModelPrivate()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::initialize()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::initialize()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getCertificates(
+ QList<AdvSecSettingsCertificate*> &/*certList*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getCertificateDetails()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getCertificateDetails(
+ const AdvSecSettingsCertificate &/*cert*/,
+ QMap<int,QString>& /*details*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::isDeletable()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsCertificateModelPrivate::isDeletable(
+ const AdvSecSettingsCertificate &/*cert*/) const
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::deleteCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::deleteCertificate(
+ const AdvSecSettingsCertificate &/*cert*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getTrustSettings(
+ const AdvSecSettingsCertificate &/*cert*/,
+ QMap<int,bool> &/*usageIdAndTrust*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::setTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::setTrustSettings(
+ const AdvSecSettingsCertificate &/*cert*/,
+ const QMap<int,bool> &/*usageIdAndTrust*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getCertificateUsageNames()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getCertificateUsageNames(
+ QMap<int,QString> &/*usageIdAndName*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::moveToPersonalCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::moveToPersonalCertificates(
+ const AdvSecSettingsCertificate &/*cert*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::moveToDeviceCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::moveToDeviceCertificates(
+ const AdvSecSettingsCertificate &/*cert*/)
+{
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatemodel_symbian_p.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,539 @@
+/*
+* 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 the License "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: Symbian specific advanced security settings certificate model
+*
+*/
+
+#include "advsecsettingscertificatemodel_symbian_p.h"
+#include "advsecsettingscertificatemodel.h"
+#include "advsecsettingscertificate.h"
+#include "advsecsettingstrustedcertusageuids.h"
+#include "advsecsettingsstoreuids.h"
+#include "advsecsettingscertlistbuilder_symbian.h"
+#include "advsecsettingscertdetailsbuilder_symbian.h"
+#include "advsecsettingscertmover_symbian.h"
+#include <cctcertinfo.h> // CCTCertInfo
+#include <certificateapps.h> // CCertificateAppInfoManager
+#include <HbTextResolverSymbian>
+
+_LIT(KTranslationFile, "z:\\resource\\qt\\translations");
+_LIT(KTranslationPath, "certificate_manager_");
+
+_LIT(KLocNativeInstallationUsage, "txt_certificate_manager_formlabel_symbian_instal");
+_LIT(KLocJavaInstallationUsage, "txt_certificate_manager_formlabel_java_installing");
+_LIT(KLocWidgetInstallationUsage, "txt_certificate_manager_formlabel_widget_installat");
+_LIT(KLocInternetUsage, "txt_certificate_manager_formlabel_internet");
+_LIT(KLocOcspUsage, "txt_certificate_manager_formlabel_online_certifica");
+_LIT(KLocVPNUsage, "txt_certificate_manager_formlabel_vpn");
+
+#define TRAP_HANDLE_AND_RETURN_IF_ERROR(_f) \
+{ \
+ TInt __thr_error = KErrNone; \
+ TRAP(__thr_error, _f); \
+ if (__thr_error) { \
+ q_ptr->handleError(__thr_error); \
+ return; \
+ } \
+}
+
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CopyStringL()
+// ---------------------------------------------------------------------------
+//
+QString CopyStringL(const TDesC16 &aDes16)
+{
+ QString string;
+ QT_TRYCATCH_LEAVING(string = QString::fromUtf16(aDes16.Ptr(), aDes16.Length()));
+ return string;
+}
+
+// ---------------------------------------------------------------------------
+// CopyStringL()
+// ---------------------------------------------------------------------------
+//
+QString CopyStringL(const TDesC8 &aDes8)
+{
+ QString string;
+ QT_TRYCATCH_LEAVING(string = QString::fromUtf8(
+ reinterpret_cast<const char*>(aDes8.Ptr()), aDes8.Length()));
+ return string;
+}
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::AdvSecSettingsCertificateModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateModelPrivate::AdvSecSettingsCertificateModelPrivate(
+ AdvSecSettingsCertificateModel *q) : CActive(CActive::EPriorityLow), q_ptr(q),
+ iState(ENotInitialized)
+{
+ CActiveScheduler::Add(this);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::~AdvSecSettingsCertificateModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateModelPrivate::~AdvSecSettingsCertificateModelPrivate()
+{
+ Cancel();
+
+ delete iMover;
+ delete iCertAppInfoManager;
+ delete iCertStore;
+ iFs.Close();
+
+ iCertInfo = NULL;
+ iCertInfoArray.Close();
+ delete iCertListBuilder;
+ delete iDetailsBuilder;
+
+ iTrustedUids = NULL;
+ iApplications.Reset();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::initialize()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::initialize()
+{
+ if (!IsActive() && (iState == ENotInitialized)) {
+ TRAP_HANDLE_AND_RETURN_IF_ERROR(ConstructL());
+ iCertStore->Initialize(iStatus);
+ iState = EInitializing;
+ SetActive();
+ } else {
+ q_ptr->handleError(KErrAlreadyExists);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getCertificates(
+ QList<AdvSecSettingsCertificate*> &certList)
+{
+ if (!IsActive() && (iState == EIdle)) {
+ if (!iCertListBuilder) {
+ TRAP_HANDLE_AND_RETURN_IF_ERROR(iCertListBuilder =
+ CAdvSecSettingsCertListBuilder::NewL(iFs, *iCertStore));
+ }
+ iCertListBuilder->GetCertificateList(certList, iCertInfoArray, iStatus);
+ iState = EGettingCertificatesList;
+ SetActive();
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getCertificateDetails()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getCertificateDetails(
+ const AdvSecSettingsCertificate &cert, QMap<int,QString> &details)
+{
+ if (!IsActive() && (iState == EIdle)) {
+ iCertInfo = CertificateInfo(cert);
+ if (iCertInfo) {
+ if (!iDetailsBuilder) {
+ TRAP_HANDLE_AND_RETURN_IF_ERROR(iDetailsBuilder =
+ CAdvSecSettingsCertDetailsBuilder::NewL(iFs, *iCertStore));
+ }
+ TRAP_HANDLE_AND_RETURN_IF_ERROR(
+ iDetailsBuilder->GetDetailsL(*iCertInfo, details, iStatus));
+ iState = EBuildingCertificateDetails;
+ SetActive();
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::isDeletable()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsCertificateModelPrivate::isDeletable(
+ const AdvSecSettingsCertificate &cert) const
+{
+ const CCTCertInfo* certInfo = CertificateInfo(cert);
+ if (certInfo) {
+ return certInfo->IsDeletable();
+ }
+ return false;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::deleteCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::deleteCertificate(
+ const AdvSecSettingsCertificate &cert)
+{
+ if (!IsActive() && (iState == EIdle)) {
+ iCertInfo = CertificateInfo(cert);
+ if (iCertInfo) {
+ iCertStore->Remove(*iCertInfo, iStatus);
+ iState = EDeletingCertificate;
+ SetActive();
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getTrustSettings(
+ const AdvSecSettingsCertificate &cert, QMap<int,bool> &usageIdAndTrust)
+{
+ if (!IsActive() && (iState == EIdle)) {
+ iCertInfo = CertificateInfo(cert);
+ if (iCertInfo) {
+ iTrustedUids = &usageIdAndTrust;
+ iApplications.Reset();
+ iCertStore->Applications(*iCertInfo, iApplications, iStatus);
+ iState = EReadingApplications;
+ SetActive();
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::setTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::setTrustSettings(
+ const AdvSecSettingsCertificate &cert, const QMap<int,bool> &usageIdAndTrust)
+{
+ if (!IsActive() && (iState == EIdle)) {
+ iCertInfo = CertificateInfo(cert);
+ if (iCertInfo) {
+ iApplications.Reset();
+ QMapIterator<int,bool> usageIter(usageIdAndTrust);
+ while (usageIter.hasNext()) {
+ usageIter.next();
+ if (usageIter.value()) {
+ iApplications.Append(TUid::Uid(usageIter.key()));
+ }
+ }
+
+ iCertStore->SetApplicability(*iCertInfo, iApplications, iStatus);
+ iState = EWritingApplications;
+ SetActive();
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::getCertificateUsageNames()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::getCertificateUsageNames(
+ QMap<int,QString> &usageIdAndName)
+{
+ usageIdAndName.clear();
+ QT_TRAP_THROWING(DoGetCertificateUsageNamesL(usageIdAndName));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::moveToPersonalCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::moveToPersonalCertificates(
+ const AdvSecSettingsCertificate &cert)
+{
+ if (!IsActive() && (iState == EIdle)) {
+ iCertInfo = CertificateInfo(cert);
+ if (iCertInfo) {
+ if (!iMover) {
+ TRAP_HANDLE_AND_RETURN_IF_ERROR(iMover =
+ CAdvSecSettingsCertMover::NewL(iFs));
+ }
+ // personal certificate store == file certificate store
+ iMover->Move(*iCertInfo, KAdvSecSettingsDeviceCertStore,
+ KAdvSecSettingsFileCertStore, iStatus);
+ iState = EMovingCertificateToPersonalStore;
+ SetActive();
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::moveToDeviceCertificates()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::moveToDeviceCertificates(
+ const AdvSecSettingsCertificate &cert)
+{
+ if (!IsActive() && (iState == EIdle)) {
+ iCertInfo = CertificateInfo(cert);
+ if (iCertInfo) {
+ if (!iMover) {
+ TRAP_HANDLE_AND_RETURN_IF_ERROR(iMover =
+ CAdvSecSettingsCertMover::NewL(iFs));
+ }
+ iMover->Move(*iCertInfo, KAdvSecSettingsFileCertStore,
+ KAdvSecSettingsDeviceCertStore, iStatus);
+ iState = EMovingCertificateToDeviceStore;
+ SetActive();
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::DoCancel()
+{
+ switch (iState) {
+ case EInitializing:
+ iCertStore->CancelInitialize();
+ break;
+ case EGettingCertificatesList:
+ delete iCertListBuilder;
+ iCertListBuilder = NULL;
+ break;
+ case EBuildingCertificateDetails:
+ delete iDetailsBuilder;
+ iDetailsBuilder = NULL;
+ break;
+ case EDeletingCertificate:
+ iCertStore->CancelRemove();
+ break;
+ case EReadingApplications:
+ iCertStore->CancelApplications();
+ break;
+ case EWritingApplications:
+ iCertStore->CancelSetApplicability();
+ break;
+ case EMovingCertificateToPersonalStore:
+ case EMovingCertificateToDeviceStore:
+ delete iMover;
+ iMover = NULL;
+ break;
+ default:
+ break;
+ }
+ if (iState == EInitializing) {
+ iState = ENotInitialized;
+ } else {
+ iState = EIdle;
+ }
+ q_ptr->handleError(KErrCancel);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::RunL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::RunL()
+{
+ User::LeaveIfError(iStatus.Int());
+
+ switch (iState) {
+ case EInitializing:
+ iState = EIdle;
+ q_ptr->handleInitializeCompleted();
+ break;
+ case EGettingCertificatesList:
+ iState = EIdle;
+ q_ptr->handleGetCertificatesCompleted();
+ break;
+ case EBuildingCertificateDetails:
+ iState = EIdle;
+ q_ptr->handleGetCertificateDetailsCompleted();
+ break;
+ case EDeletingCertificate:
+ iState = EIdle;
+ q_ptr->handleDeleteCertificateCompleted();
+ break;
+ case EReadingApplications:
+ ReturnTrustSettingsDetails();
+ iState = EIdle;
+ q_ptr->handleGetTrustSettingsCompleted();
+ break;
+ case EWritingApplications:
+ iState = EIdle;
+ q_ptr->handleSetTrustSettingsCompleted();
+ break;
+ case EMovingCertificateToPersonalStore:
+ iState = EIdle;
+ q_ptr->handleMoveToPersonalCertificateCompleted();
+ break;
+ case EMovingCertificateToDeviceStore:
+ iState = EIdle;
+ q_ptr->handleMoveToDeviceCertificatesCompleted();
+ break;
+ default:
+ ASSERT(EFalse);
+ break;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt AdvSecSettingsCertificateModelPrivate::RunError(TInt aError)
+{
+ if (iState == EInitializing) {
+ iState = ENotInitialized;
+ } else {
+ iState = EIdle;
+ }
+ q_ptr->handleError(aError);
+ return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::ConstructL()
+{
+ User::LeaveIfError(iFs.Connect());
+ const TBool KWriteMode = ETrue;
+ iCertStore = CUnifiedCertStore::NewL(iFs, KWriteMode);
+ iCertAppInfoManager = CCertificateAppInfoManager::NewL();
+ if (!HbTextResolverSymbian::Init(KTranslationFile, KTranslationPath)) {
+ // TODO: text resolver initialisation failed
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::ReturnTrustSettingsDetails()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::ReturnTrustSettingsDetails()
+{
+ if (iTrustedUids && iCertInfo) {
+ iTrustedUids->clear();
+
+ // Set applicable trusted usages for different kinds of certs.
+ TUid tokenType(iCertInfo->Token().TokenType().Type());
+ if (tokenType.iUid == KAdvSecSettingsSWICertStore) {
+ iTrustedUids->insert(KAdvSecSettingsTrustedUsageSwInstallNativeSis, false);
+ iTrustedUids->insert(KAdvSecSettingsTrustedUsageSwInstallSisOcsp, false);
+ } else if (tokenType.iUid == KAdvSecSettingsMidpCertStore) {
+ iTrustedUids->insert(KAdvSecSettingsTrustedUsageSwInstallJava, false);
+ } else {
+ const RArray<TCertificateAppInfo> &apps(iCertAppInfoManager->Applications());
+ for (TInt index = 0; index < apps.Count(); ++index) {
+ const TCertificateAppInfo &appInfo = apps[index];
+ int usageId = appInfo.Id().iUid;
+ iTrustedUids->insert(usageId, false);
+ }
+ }
+
+ // Set trusted usages, usually this just replaces some of the values set above.
+ TInt count = iApplications.Count();
+ for (TInt index = 0; index < count; ++index ) {
+ iTrustedUids->insert(iApplications[index].iUid, true);
+ }
+
+ // Native and Java installation use certs only from SWI and MIDP cert stores.
+ // Hence, native and Java install usages are not displayed for certs in file
+ // cert store.
+ if (tokenType.iUid == KAdvSecSettingsFileCertStore) {
+ iTrustedUids->remove(KAdvSecSettingsTrustedUsageSwInstallNativeSis);
+ iTrustedUids->remove(KAdvSecSettingsTrustedUsageSwInstallJava);
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::DoGetCertificateUsageNamesL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateModelPrivate::DoGetCertificateUsageNamesL(
+ QMap<int,QString> &usageIdAndName)
+{
+ // Pre-defined localized usage names
+ HBufC* usageName = HbTextResolverSymbian::LoadLC(KLocNativeInstallationUsage);
+ usageIdAndName[KAdvSecSettingsTrustedUsageSwInstallNativeSis] = CopyStringL(*usageName);
+ CleanupStack::PopAndDestroy(usageName);
+
+ usageName = HbTextResolverSymbian::LoadLC(KLocJavaInstallationUsage);
+ usageIdAndName[KAdvSecSettingsTrustedUsageSwInstallJava] = CopyStringL(*usageName);
+ CleanupStack::PopAndDestroy(usageName);
+
+ usageName = HbTextResolverSymbian::LoadLC(KLocWidgetInstallationUsage);
+ usageIdAndName[KAdvSecSettingsTrustedUsageSwInstallWidget] = CopyStringL(*usageName);
+ CleanupStack::PopAndDestroy(usageName);
+
+ usageName = HbTextResolverSymbian::LoadLC(KLocInternetUsage);
+ usageIdAndName[KAdvSecSettingsTrustedUsageInternet] = CopyStringL(*usageName);
+ CleanupStack::PopAndDestroy(usageName);
+
+ usageName = HbTextResolverSymbian::LoadLC(KLocOcspUsage);
+ usageIdAndName[KAdvSecSettingsTrustedUsageSwInstallSisOcsp] = CopyStringL(*usageName);
+ CleanupStack::PopAndDestroy(usageName);
+
+ usageName = HbTextResolverSymbian::LoadLC(KLocVPNUsage);
+ usageIdAndName[KAdvSecSettingsTrustedUsageVPN] = CopyStringL(*usageName);
+ CleanupStack::PopAndDestroy(usageName);
+
+ // TODO: localized UI string needed
+ usageIdAndName[KAdvSecSettingsTrustedUsageWap] = QString("Wap");
+
+ // Possible additional usage names defined in system databases
+ if (iCertAppInfoManager) {
+ const RArray<TCertificateAppInfo> &apps(iCertAppInfoManager->Applications());
+ for(TInt index = 0; index < apps.Count(); ++index) {
+ const TCertificateAppInfo &appInfo = apps[index];
+
+ int usageId = appInfo.Id().iUid;
+ if (!usageIdAndName.contains(usageId)) {
+ QString usageName = CopyStringL(appInfo.Name());
+ usageIdAndName.insert(usageId, usageName);
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateModelPrivate::CertificateInfo()
+// ---------------------------------------------------------------------------
+//
+const CCTCertInfo *AdvSecSettingsCertificateModelPrivate::CertificateInfo(
+ const AdvSecSettingsCertificate &cert) const
+{
+ TInt index = cert.modelIndex();
+ if (index >= 0 && index < iCertInfoArray.Count()) {
+ return iCertInfoArray[index];
+ }
+ return NULL;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertlistbuilder_symbian.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,344 @@
+/*
+* 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: Helper class to construct certificate list
+*
+*/
+
+#include "advsecsettingscertlistbuilder_symbian.h"
+#include "advsecsettingslabeledcertinfo_symbian.h"
+#include "advsecsettingsstoreuids.h" // KAdvSecSettingsDeviceCertStore
+#include <x509cert.h> // CX509Certificate
+#include <ccertattributefilter.h> // CCertAttributeFilter
+#include <X509CertNameParser.h> // X509CertNameParser::PrimaryAndSecondaryNameL
+#include <stl/_auto_ptr.h> // std::auto_ptr
+
+_LIT(KNameSeparator, " ");
+
+// implemented in advsecsettingssecuritymodulemodel_symbian_p.cpp
+QString CopyStringL(const TDesC16 &aDes16);
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::NewL()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertListBuilder *CAdvSecSettingsCertListBuilder::NewL(
+ RFs &aFs, CUnifiedCertStore &aCertStore)
+{
+ CAdvSecSettingsCertListBuilder *self = new(ELeave) CAdvSecSettingsCertListBuilder(
+ aFs, aCertStore);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::~CAdvSecSettingsCertListBuilder()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertListBuilder::~CAdvSecSettingsCertListBuilder()
+{
+ Cancel();
+ iLabeledCertInfos.ResetAndDestroy();
+ delete iCertificate;
+ delete iCertAttributeFilter;
+ iCertInfoArray.Close();
+ iCertList = NULL;
+ iClientInfoArray = NULL;
+ iClientStatus = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::GetCertificateList()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::GetCertificateList(
+ QList<AdvSecSettingsCertificate*> &certList,
+ RMPointerArray<CCTCertInfo> &aCertInfoArray,
+ TRequestStatus &aStatus)
+{
+ aStatus = KRequestPending;
+ if (!IsActive() && (iState == EIdle)) {
+ iClientStatus = &aStatus;
+ iCertList = &certList;
+ iClientInfoArray = &aCertInfoArray;
+
+ iCertInfoArray.Close();
+ ResetCertAttributeFilter();
+ iCertStore.List(iCertInfoArray, *iCertAttributeFilter, iStatus);
+ iState = EListingCerts;
+ SetActive();
+ } else {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status, KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::DoCancel()
+{
+ switch (iState) {
+ case EListingCerts:
+ iCertStore.CancelList();
+ break;
+ case ERetrievingCert:
+ iCertStore.CancelRetrieve();
+ break;
+ case EProcessingCert:
+ // nothing to do
+ break;
+ default:
+ break;
+ }
+ User::RequestComplete(iClientStatus, KErrCancel);
+ iClientStatus = NULL;
+ iState = EIdle;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::RunL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::RunL()
+{
+ User::LeaveIfError(iStatus.Int());
+ switch (iState) {
+ case EListingCerts:
+ ProcessFirstCertificateL();
+ break;
+ case ERetrievingCert:
+ ProcessNextCertificateL();
+ break;
+ case EProcessingCert:
+ ProcessNextCertificateL();
+ break;
+ default:
+ ASSERT(EFalse);
+ break;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CAdvSecSettingsCertListBuilder::RunError(TInt aError)
+{
+ User::RequestComplete(iClientStatus, aError);
+ iClientStatus = NULL;
+ iState = EIdle;
+ return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::CAdvSecSettingsCertListBuilder()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertListBuilder::CAdvSecSettingsCertListBuilder(RFs &aFs,
+ CUnifiedCertStore &aCertStore) : CActive(CActive::EPriorityLow),
+ iFs(aFs), iCertStore(aCertStore), iCertPtr(0,0)
+{
+ CActiveScheduler::Add(this);
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::ConstructL()
+{
+ iCertAttributeFilter = CCertAttributeFilter::NewL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::ResetCertAttributeFilter()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::ResetCertAttributeFilter()
+{
+ ASSERT(iCertAttributeFilter);
+ iCertAttributeFilter->iLabelIsSet = EFalse;
+ iCertAttributeFilter->iUidIsSet = EFalse;
+ iCertAttributeFilter->iFormatIsSet = EFalse;
+ iCertAttributeFilter->iKeyUsage = EX509UsageAll;
+ iCertAttributeFilter->iOwnerTypeIsSet = EFalse;
+ iCertAttributeFilter->iSubjectKeyIdIsSet = EFalse;
+ iCertAttributeFilter->iIssuerKeyIdIsSet = EFalse;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::ProcessFirstCertificateL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::ProcessFirstCertificateL()
+{
+ iCertInfoIndex = 0;
+ StartProcessingCertificateL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::ProcessNextCertificateL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::ProcessNextCertificateL()
+{
+ CompleteProcessingCertificateL();
+ ++iCertInfoIndex;
+ StartProcessingCertificateL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::StartProcessingCertificateL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::StartProcessingCertificateL()
+{
+ if (iCertInfoIndex < iCertInfoArray.Count()) {
+ CCTCertInfo *certInfo = iCertInfoArray[iCertInfoIndex];
+
+ if ((certInfo->CertificateOwnerType() == ECACertificate) &&
+ (certInfo->CertificateFormat() == EX509Certificate)) {
+ // Have to retrieve the cert to add parts of subject
+ // to certificate label. For example, all Java certs
+ // have the same label by default.
+ if (iCertificate) {
+ delete iCertificate;
+ iCertificate = NULL;
+ }
+ iCertificate = HBufC8::NewL(certInfo->Size());
+ iCertPtr.Set(iCertificate->Des());
+ iCertStore.Retrieve(*certInfo, iCertPtr, iStatus);
+ iState = ERetrievingCert;
+ SetActive();
+ } else {
+ // Certificate label can be used as such.
+ TRequestStatus *status = &iStatus;
+ User::RequestComplete(status, KErrNone);
+ iState = EProcessingCert;
+ SetActive();
+ }
+
+ } else {
+ ReturnCertificateListL();
+
+ User::RequestComplete(iClientStatus, KErrNone);
+ iClientStatus = NULL;
+ iState = EIdle;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::CompleteProcessingCertificateL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::CompleteProcessingCertificateL()
+{
+ ASSERT(iCertInfoIndex < iCertInfoArray.Count());
+ CCTCertInfo *certInfo = iCertInfoArray[iCertInfoIndex];
+
+ CAdvSecSettingsLabeledCertInfo *labeledCertInfo =
+ new(ELeave) CAdvSecSettingsLabeledCertInfo(*certInfo);
+ CleanupStack::PushL(labeledCertInfo);
+ labeledCertInfo->SetLabelL(certInfo->Label());
+
+ if (iCertificate) {
+ CX509Certificate *cert = CX509Certificate::NewL(*iCertificate);
+ CleanupStack::PushL(cert);
+
+ HBufC *primaryName = NULL;
+ HBufC *secondaryName = NULL;
+ TInt err = X509CertNameParser::PrimaryAndSecondaryNameL(*cert,
+ primaryName, secondaryName, certInfo->Label());
+ if (!err) {
+ if (primaryName && primaryName->Length()) {
+ labeledCertInfo->AppendLabelL(KNameSeparator, *primaryName);
+ } else {
+ if (secondaryName && secondaryName->Length()) {
+ labeledCertInfo->AppendLabelL(KNameSeparator, *secondaryName);
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy(cert);
+ delete iCertificate;
+ iCertificate = NULL;
+ }
+
+ iLabeledCertInfos.AppendL(labeledCertInfo);
+ CleanupStack::Pop(labeledCertInfo);
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::ReturnCertificateListL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertListBuilder::ReturnCertificateListL()
+{
+ TLinearOrder<CAdvSecSettingsLabeledCertInfo> order( CAdvSecSettingsLabeledCertInfo::Compare );
+ iLabeledCertInfos.Sort( order );
+
+ iCertList->clear();
+ iClientInfoArray->Reset();
+ TInt count = iLabeledCertInfos.Count();
+ for (TInt index = 0; index < count; index++) {
+ const CCTCertInfo &certInfo = iLabeledCertInfos[index]->CertInfo();
+ iClientInfoArray->AppendL(&certInfo);
+
+ std::auto_ptr<AdvSecSettingsCertificate> cert(new(ELeave) AdvSecSettingsCertificate);
+ cert->setModelIndex(index);
+ cert->setCertType(CertType(certInfo));
+ cert->setLabel(CopyStringL(iLabeledCertInfos[index]->Label()));
+ iCertList->append(cert.release());
+ }
+ iLabeledCertInfos.ResetAndDestroy();
+ iCertInfoArray.Reset();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertListBuilder::CertType()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificate::CertificateType CAdvSecSettingsCertListBuilder::CertType(
+ const CCTCertInfo &aCertInfo)
+{
+ AdvSecSettingsCertificate::CertificateType type =
+ AdvSecSettingsCertificate::NotDefined;
+ TUid storeType;
+ switch (aCertInfo.CertificateOwnerType()) {
+ case ECACertificate:
+ type = AdvSecSettingsCertificate::AuthorityCertificate;
+ break;
+ case EUserCertificate:
+ storeType = aCertInfo.Handle().iTokenHandle.iTokenTypeUid;
+ if (storeType.iUid == KAdvSecSettingsDeviceCertStore) {
+ type = AdvSecSettingsCertificate::DeviceCertificate;
+ } else {
+ type = AdvSecSettingsCertificate::PersonalCertificate;
+ }
+ break;
+ case EPeerCertificate:
+ type = AdvSecSettingsCertificate::TrustedSiteCertificate;
+ break;
+ default:
+ break;
+ }
+ return type;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertmover_symbian.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,578 @@
+/*
+* 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: Helper class to move certificates
+*
+*/
+
+#include "advsecsettingscertmover_symbian.h"
+#include "advsecsettingsstoreuids.h"
+#include <unifiedcertstore.h> // CUnifiedCertStore
+#include <unifiedkeystore.h> // CUnifiedKeyStore
+#include <cctcertinfo.h> // CCTCertInfo
+#include <mctwritablecertstore.h> // MCTWritableCertStore
+#include <mctkeystoremanager.h> // MCTKeyStoreManager
+
+const TInt KMaxBufferLength = 0x3000; // 12kB, for keys and certificates
+_LIT_SECURITY_POLICY_C1( KKeyStoreUsePolicy, ECapabilityReadUserData );
+
+// TODO: replace with proper logging
+#ifdef _DEBUG
+#define TRACE(x) RDebug::Printf(x)
+#define TRACE1(x, y) RDebug::Printf((x), (y))
+#define TRACE2(x, y, z) RDebug::Printf((x), (y), (z))
+#else
+#define TRACE(x)
+#define TRACE1(x, y)
+#define TRACE2(x, y, z)
+#endif
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::NewL()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertMover *CAdvSecSettingsCertMover::NewL(RFs &aFs)
+{
+ TRACE("CAdvSecSettingsCertMover::NewL()");
+ CAdvSecSettingsCertMover* self = new( ELeave ) CAdvSecSettingsCertMover(aFs);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::~CAdvSecSettingsCertMover()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertMover::~CAdvSecSettingsCertMover()
+{
+ TRACE("CAdvSecSettingsCertMover::~CAdvSecSettingsCertMover()");
+ Cancel();
+ delete iCertStore;
+ iTargetCertStore = NULL;
+ delete iCertFilter;
+ iCerts.Close();
+
+ delete iKeyStore;
+ iSourceKeyStore = NULL;
+ iTargetKeyStore = NULL;
+ delete iKeyFilter;
+ iKeys.Close();
+ if (iSavedKeyInfo) {
+ iSavedKeyInfo->Release();
+ }
+
+ delete iDataBuffer;
+ iClientStatus = NULL;
+ iCertInfo = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::Move()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::Move(const CCTCertInfo &aCert,
+ TInt aSourceCertStoreTokenId, TInt aTargetCertStoreTokenId,
+ TRequestStatus &aStatus)
+{
+ TRACE("CAdvSecSettingsCertMover::Move()");
+ aStatus = KRequestPending;
+ if (!iClientStatus) {
+ iClientStatus = &aStatus;
+
+ iCertInfo = &aCert;
+ iSourceCertStoreTokenId = aSourceCertStoreTokenId;
+ iTargetCertStoreTokenId = aTargetCertStoreTokenId;
+
+ if (iState <= EIdle) {
+ // Start move operation if initializations are complete.
+ if (iState == EIdle) {
+ TRAPD(err, StartMoveOperationL());
+ if (err) {
+ TRACE1("CAdvSecSettingsCertMover::Move(), error %d", err);
+ User::RequestComplete(iClientStatus, err);
+ iClientStatus = NULL;
+ }
+ }
+ // If initializations are not complete yet, then moving
+ // starts in RunL() after initializations are completed.
+ } else {
+ // Possibly initializations have failed.
+ TRACE("CAdvSecSettingsCertMover::Move(), RequestComplete KErrGeneral");
+ User::RequestComplete(iClientStatus, KErrGeneral);
+ iClientStatus = NULL;
+ }
+ } else {
+ TRACE("CAdvSecSettingsCertMover::Move(), RequestComplete KErrInUse");
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::DoCancel()
+{
+ TRACE("CAdvSecSettingsCertMover::DoCancel()");
+ switch (iState) {
+ case EInitializingCertStore:
+ iCertStore->CancelInitialize();
+ iState = ENotInitialized;
+ break;
+ case EInitializingKeyStore:
+ iKeyStore->CancelInitialize();
+ iState = ENotInitialized;
+ break;
+ case EMovingKeyListingKeys:
+ iKeyStore->CancelList();
+ iState = EIdle;
+ break;
+ case EMovingKeyExportingKeys:
+ iSourceKeyStore->CancelExportKey();
+ iState = EIdle;
+ break;
+ case EMovingKeyImportingKeys:
+ iTargetKeyStore->CancelImportKey();
+ iState = EIdle;
+ break;
+ case EMovingKeyDeletingOriginal:
+ iSourceKeyStore->CancelDeleteKey();
+ iState = EIdle;
+ break;
+ case EMovingCertListingCerts:
+ iCertStore->CancelList();
+ iState = EIdle;
+ break;
+ case EMovingCertRetrievingCerts:
+ iSourceCertStore->CancelRetrieve();
+ iState = EIdle;
+ break;
+ case EMovingCertAddingCerts:
+ iTargetCertStore->CancelAdd();
+ iState = EIdle;
+ break;
+ case EMovingCertDeletingOriginal:
+ iSourceCertStore->CancelRemove();
+ iState = EIdle;
+ break;
+ default:
+ break;
+ }
+
+ if (iClientStatus) {
+ TRACE("CAdvSecSettingsCertMover::DoCancel(), RequestComplete KErrCancel");
+ User::RequestComplete(iClientStatus, KErrCancel);
+ iClientStatus = NULL;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::RunL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::RunL()
+{
+ TRACE2("CAdvSecSettingsCertMover::RunL(), iState=%d, iStatus.Int()=%d", iState, iStatus.Int());
+ User::LeaveIfError(iStatus.Int());
+
+ switch (iState) {
+ case EInitializingCertStore:
+ iKeyStore->Initialize(iStatus);
+ iState = EInitializingKeyStore;
+ SetActive();
+ break;
+ case EInitializingKeyStore:
+ iState = EIdle;
+ if (iClientStatus) {
+ StartMoveOperationL();
+ }
+ break;
+ case EMovingKeyListingKeys:
+ ExportFirstKeyL();
+ break;
+ case EMovingKeyExportingKeys:
+ SaveExportedKeyL();
+ break;
+ case EMovingKeyImportingKeys:
+ DeleteOriginalKeyL();
+ break;
+ case EMovingKeyDeletingOriginal:
+ ExportNextKeyL();
+ break;
+ case EMovingCertListingCerts:
+ RetrieveFirstCertL();
+ break;
+ case EMovingCertRetrievingCerts:
+ SaveRetrievedCertL();
+ break;
+ case EMovingCertAddingCerts:
+ DeleteOriginalCertL();
+ break;
+ case EMovingCertDeletingOriginal:
+ RetrieveNextCertL();
+ break;
+ default:
+ ASSERT(EFalse);
+ break;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CAdvSecSettingsCertMover::RunError(TInt aError)
+{
+ TRACE1("CAdvSecSettingsCertMover::RunError(), aError=%d", aError);
+ if (iClientStatus) {
+ TRACE1("CAdvSecSettingsCertMover::RunError(), RequestComplete %d", aError);
+ User::RequestComplete(iClientStatus, aError);
+ iClientStatus = NULL;
+ }
+ if (iState < EIdle) {
+ iState = EFailed;
+ } else {
+ iState = EIdle;
+ }
+ return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::CAdvSecSettingsCertMover()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsCertMover::CAdvSecSettingsCertMover(RFs &aFs) :
+ CActive(CActive::EPriorityLow), iFs(aFs), iDataPtr(0,0)
+{
+ CActiveScheduler::Add(this);
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::ConstructL()
+{
+ TRACE("CAdvSecSettingsCertMover::ConstructL()");
+ const TBool KWriteMode = ETrue;
+ iCertStore = CUnifiedCertStore::NewL(iFs, KWriteMode);
+ iKeyStore = CUnifiedKeyStore::NewL(iFs);
+
+ iDataBuffer = HBufC8::New(KMaxBufferLength);
+ iDataPtr.Set(iDataBuffer->Des());
+
+ iCertStore->Initialize(iStatus);
+ iState = EInitializingCertStore;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::StartMoveOperationL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::StartMoveOperationL()
+{
+ TRACE("CAdvSecSettingsCertMover::StartMoveOperationL()");
+ FindSourceAndTargetKeyStoresL();
+ FindSourceAndTargetCertStoreL();
+ StartMovingKeysL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::FindSourceAndTargetKeyStoresL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::FindSourceAndTargetKeyStoresL()
+{
+ TRACE("CAdvSecSettingsCertMover::FindSourceAndTargetKeyStoresL()");
+ TInt keyStoreSourceTokenId = CorrespondingKeyStoreTokenId(iSourceCertStoreTokenId);
+ TInt keyStoreTargetTokenId = CorrespondingKeyStoreTokenId(iTargetCertStoreTokenId);
+ TInt keyStoreSourceIndex = KErrNotFound;
+ TInt keyStoreTargetIndex = KErrNotFound;
+
+ TInt count = iKeyStore->KeyStoreManagerCount();
+ for (TInt index = 0; index < count; index++) {
+ MCTKeyStoreManager& keystoremanager = iKeyStore->KeyStoreManager(index);
+ MCTToken& token = keystoremanager.Token();
+ TUid tokenTypeUid = token.Handle().iTokenTypeUid;
+ if (tokenTypeUid.iUid == keyStoreSourceTokenId) {
+ keyStoreSourceIndex = index;
+ }
+ if (tokenTypeUid.iUid == keyStoreTargetTokenId) {
+ keyStoreTargetIndex = index;
+ }
+ }
+
+ if (keyStoreSourceIndex == KErrNotFound || keyStoreTargetIndex == KErrNotFound) {
+ User::Leave(KErrNotFound);
+ }
+
+ iSourceKeyStore = &( iKeyStore->KeyStoreManager(keyStoreSourceIndex) );
+ iTargetKeyStore = &( iKeyStore->KeyStoreManager(keyStoreTargetIndex) );
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::FindSourceAndTargetCertStoreL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::FindSourceAndTargetCertStoreL()
+{
+ TRACE("CAdvSecSettingsCertMover::FindSourceAndTargetCertStoreL()");
+ TInt certStoreSourceIndex = KErrNotFound;
+ TInt certStoreTargetIndex = KErrNotFound;
+
+ TInt count = iCertStore->WritableCertStoreCount();
+ for (TInt index = 0; index < count; index++) {
+ MCTWritableCertStore& writablestore = iCertStore->WritableCertStore(index);
+ MCTToken& token = writablestore.Token();
+ TUid tokenTypeUid = token.Handle().iTokenTypeUid;
+ if (tokenTypeUid.iUid == iSourceCertStoreTokenId) {
+ certStoreSourceIndex = index;
+ }
+ if (tokenTypeUid.iUid == iTargetCertStoreTokenId) {
+ certStoreTargetIndex = index;
+ }
+ }
+
+ if (certStoreSourceIndex == KErrNotFound || certStoreTargetIndex == KErrNotFound) {
+ User::Leave(KErrNotFound);
+ }
+
+ iSourceCertStore = &( iCertStore->WritableCertStore(certStoreSourceIndex) );
+ iTargetCertStore = &( iCertStore->WritableCertStore(certStoreTargetIndex) );
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::CorrespondingKeyStoreTokenId()
+// ---------------------------------------------------------------------------
+//
+TInt CAdvSecSettingsCertMover::CorrespondingKeyStoreTokenId(TInt aCertStoreTokenId)
+{
+ TInt keyStoreTokenId = KErrNotFound;
+ switch (aCertStoreTokenId) {
+ case KAdvSecSettingsFileCertStore:
+ keyStoreTokenId = KAdvSecSettingsFileKeyStore;
+ break;
+ case KAdvSecSettingsDeviceCertStore:
+ keyStoreTokenId = KAdvSecSettingsDeviceKeyStore;
+ break;
+ default:
+ ASSERT(EFalse); // Unsupported cert store token id used
+ break;
+ }
+ return keyStoreTokenId;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::StartMovingKeysL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::StartMovingKeysL()
+{
+ TRACE("CAdvSecSettingsCertMover::StartMovingKeysL()");
+ if (iKeyFilter) {
+ delete iKeyFilter;
+ iKeyFilter = NULL;
+ }
+ iKeyFilter = new( ELeave ) TCTKeyAttributeFilter;
+ iKeyFilter->iKeyId = iCertInfo->SubjectKeyId();
+ iKeyFilter->iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
+ iKeyStore->List(iKeys, *iKeyFilter, iStatus);
+ iState = EMovingKeyListingKeys;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::ExportFirstKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::ExportFirstKeyL()
+{
+ TRACE1("CAdvSecSettingsCertMover::ExportFirstKeyL(), iKeys.Count()=%d", iKeys.Count());
+ iKeyIndex = 0;
+ ExportOneKeyL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::ExportOneKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::ExportOneKeyL()
+{
+ TRACE("CAdvSecSettingsCertMover::ExportOneKeyL()");
+ if (iKeyIndex < iKeys.Count()) {
+ const CCTKeyInfo& keyInfo = *(iKeys[iKeyIndex]);
+ iSourceKeyStore->ExportKey(keyInfo.Handle(), iDataBuffer, iStatus);
+ iState = EMovingKeyExportingKeys;
+ SetActive();
+ } else {
+ TRACE("CAdvSecSettingsCertMover::ExportOneKeyL(), all done");
+ StartMovingCertificatesL();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::ExportNextKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::ExportNextKeyL()
+{
+ TRACE("CAdvSecSettingsCertMover::ExportNextKeyL()");
+ ++iKeyIndex;
+ ExportOneKeyL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::SaveExportedKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::SaveExportedKeyL()
+{
+ TRACE("CAdvSecSettingsCertMover::SaveExportedKeyL()");
+ const CCTKeyInfo& keyInfo = *(iKeys[iKeyIndex]);
+ iSourceKeyHandle = keyInfo.Handle();
+
+ // TODO: is this needed? should iSavedKeyInfo be always used?
+ // Keys having CCTKeyInfo::ELocal access type cannot be imported.
+ // Workaround is to create almost identical copy of CCTKeyInfo without
+ // ELocal access type flag. UsePolicy is also updated.
+ TInt accessType = keyInfo.AccessType();
+ if (accessType & CCTKeyInfo::ELocal) {
+ accessType ^= CCTKeyInfo::ELocal;
+
+ HBufC* label = keyInfo.Label().AllocLC();
+ if (iSavedKeyInfo) {
+ iSavedKeyInfo->Release();
+ iSavedKeyInfo = NULL;
+ }
+ iSavedKeyInfo = CCTKeyInfo::NewL( keyInfo.ID(), keyInfo.Usage(),
+ keyInfo.Size(), NULL, label, keyInfo.Token(), keyInfo.HandleID(),
+ KKeyStoreUsePolicy, keyInfo.ManagementPolicy(),keyInfo.Algorithm(),
+ keyInfo.AccessType(), keyInfo.Native(), keyInfo.StartDate(),
+ keyInfo.EndDate() );
+ CleanupStack::Pop(label);
+
+ iTargetKeyStore->ImportKey(*iDataBuffer, iSavedKeyInfo, iStatus);
+ } else {
+ iTargetKeyStore->ImportKey(*iDataBuffer, iKeys[iKeyIndex], iStatus);
+ }
+ iState = EMovingKeyImportingKeys;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::DeleteOriginalKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::DeleteOriginalKeyL()
+{
+ TRACE("CAdvSecSettingsCertMover::DeleteOriginalKeyL()");
+ iSourceKeyStore->DeleteKey(iSourceKeyHandle, iStatus);
+ iState = EMovingKeyDeletingOriginal;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::StartMovingCertificatesL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::StartMovingCertificatesL()
+{
+ TRACE("CAdvSecSettingsCertMover::StartMovingCertificatesL()");
+ if (iCertFilter) {
+ delete iCertFilter;
+ iCertFilter = NULL;
+ }
+ iCertFilter = CCertAttributeFilter::NewL();
+ iCertFilter->SetOwnerType(EUserCertificate);
+ iCertFilter->SetSubjectKeyId(iCertInfo->SubjectKeyId());
+ iCertStore->List(iCerts, *iCertFilter, iStatus);
+ iState = EMovingCertListingCerts;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::RetrieveFirstCertL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::RetrieveFirstCertL()
+{
+ TRACE1("CAdvSecSettingsCertMover::RetrieveFirstCertL(), iCerts.Count()=%d", iCerts.Count());
+ iCertIndex = 0;
+ RetrieveOneCertL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::RetrieveOneCertL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::RetrieveOneCertL()
+{
+ TRACE("CAdvSecSettingsCertMover::RetrieveOneCertL()");
+ if (iCertIndex < iCerts.Count()) {
+ const CCTCertInfo& certInfo = *(iCerts[iCertIndex]);
+ iSourceCertStore->Retrieve(certInfo, iDataPtr, iStatus);
+ iState = EMovingCertRetrievingCerts;
+ SetActive();
+ } else {
+ TRACE("CAdvSecSettingsCertMover::RetrieveOneCertL(), all done");
+ iState = EIdle;
+ User::RequestComplete(iClientStatus, KErrNone);
+ iClientStatus = NULL;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::RetrieveNextCertL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::RetrieveNextCertL()
+{
+ TRACE("CAdvSecSettingsCertMover::RetrieveNextCertL()");
+ ++iCertIndex;
+ RetrieveOneCertL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::SaveRetrievedCertL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::SaveRetrievedCertL()
+{
+ TRACE("CAdvSecSettingsCertMover::SaveRetrievedCertL()");
+ const CCTCertInfo& certInfo = *(iCerts[iCertIndex]);
+ iTargetCertStore->Add(certInfo.Label(), EX509Certificate, EUserCertificate,
+ &(certInfo.SubjectKeyId()), &(certInfo.IssuerKeyId()), *iDataBuffer, iStatus);
+ iState = EMovingCertAddingCerts;
+ SetActive();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsCertMover::DeleteOriginalCertL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsCertMover::DeleteOriginalCertL()
+{
+ TRACE("CAdvSecSettingsCertMover::DeleteOriginalCertL()");
+ const CCTCertInfo& certInfo = *(iCerts[iCertIndex]);
+ iSourceCertStore->Remove(certInfo, iStatus);
+ iState = EMovingCertDeletingOriginal;
+ SetActive();
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscerttrustsettingsview.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,212 @@
+/*
+* 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: Certificate trust settings view in advanced security settings
+*
+*/
+
+#include "advsecsettingscerttrustsettingsview.h"
+#include "advsecsettingstrustedcertusageuids.h"
+#include "advsecsettingscertificatemodel.h"
+#include "advsecsettingscertificate.h"
+#include <QGraphicsLinearLayout>
+#include <HbGroupBox>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbMenu>
+#include <HbAction>
+
+const QString KText("text");
+const QString KAdditionalText("additionalText");
+const QString KHexUsageIdFormat("0x%1");
+const int KHexFieldWidth = 8;
+const int KHexBase = 16;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::AdvSecSettingsCertTrustSettingsView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertTrustSettingsView::AdvSecSettingsCertTrustSettingsView(
+ AdvSecSettingsCertificateModel &model, QGraphicsItem *parent) :
+ AdvSecSettingsViewBase(0, parent), mModel(model), mCertificate(0),
+ mIsCertDeletable(false), mViewLabel(0), mDataForm(0), mDataFormModel(0)
+{
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ mViewLabel = new HbGroupBox;
+ layout->addItem(mViewLabel);
+
+ HbScrollArea *scrollArea = new HbScrollArea;
+ mDataForm = new HbDataForm;
+ scrollArea->setContentWidget(mDataForm);
+ layout->addItem(scrollArea);
+
+ setLayout(layout);
+
+ connect(&mModel, SIGNAL(getTrustSettingsCompleted()), this, SLOT(refreshDisplay()));
+ connect(&mModel, SIGNAL(deleteCertificateCompleted()), this, SLOT(close()));
+ connect(this, SIGNAL(aboutToClose()), this, SLOT(saveTrustSettings()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::~AdvSecSettingsCertTrustSettingsView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertTrustSettingsView::~AdvSecSettingsCertTrustSettingsView()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::setCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertTrustSettingsView::setCertificate(const AdvSecSettingsCertificate &cert)
+{
+ mCertificate = &cert;
+ mIsCertDeletable = mModel.isDeletable(cert);
+
+ menu()->clearActions();
+ if (mIsCertDeletable) {
+ HbAction *deleteAction = new HbAction(hbTrId("txt_common_menu_delete"));
+ connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteCertificate()));
+ menu()->addAction(deleteAction);
+ }
+
+ mUsageIdAndTrust.clear();
+ mModel.getTrustSettings(cert, mUsageIdAndTrust);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::refreshDisplay()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertTrustSettingsView::refreshDisplay()
+{
+ if (mDataFormModel) {
+ mDataForm->setModel(0);
+ delete mDataFormModel;
+ mDataFormModel = 0;
+ }
+ mDataFormModel = new HbDataFormModel(this);
+
+ QMapIterator<int,bool> iter(mUsageIdAndTrust);
+ while (iter.hasNext()) {
+ iter.next();
+ HbDataFormModelItem *item = mDataFormModel->appendDataFormItem(
+ HbDataFormModelItem::ToggleValueItem, usageName(iter.key()));
+ if (iter.value()) {
+ // TODO: localized UI string needed
+ item->setContentWidgetData(KText, tr("On"));
+ item->setContentWidgetData(KAdditionalText, tr("Off"));
+ } else {
+ // TODO: localized UI string needed
+ item->setContentWidgetData(KText, tr("Off"));
+ item->setContentWidgetData(KAdditionalText, tr("On"));
+ }
+ if (!mIsCertDeletable) {
+ item->setEnabled(false);
+ }
+ }
+ connect(mDataFormModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)),
+ this, SLOT(toggleChange(QModelIndex)));
+
+ mViewLabel->setHeading(mCertificate->label());
+ mDataForm->setModel(mDataFormModel);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::toggleChange()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertTrustSettingsView::toggleChange(const QModelIndex &itemIndex)
+{
+ if (mIsCertDeletable) {
+ HbDataFormModelItem *item = mDataFormModel->itemFromIndex(itemIndex);
+
+ int usageId = 0;
+ QString label = item->label();
+ QMapIterator<int,QString> iter(mUsageIdAndName);
+ while (iter.hasNext() && !usageId) {
+ iter.next();
+ if (label == iter.value()) {
+ usageId = iter.key();
+ }
+ }
+
+ if (usageId) {
+ QVariant data = item->contentWidgetData(KText);
+ if (data.toString() == tr("On")) { // TODO: use localized UI string
+ mUsageIdAndTrust[usageId] = true;
+ } else {
+ mUsageIdAndTrust[usageId] = false;
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::saveTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertTrustSettingsView::saveTrustSettings()
+{
+ if (mIsCertDeletable) {
+ Q_ASSERT(mCertificate != 0);
+ mModel.setTrustSettings(*mCertificate, mUsageIdAndTrust);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::deleteCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertTrustSettingsView::deleteCertificate()
+{
+ Q_ASSERT(mCertificate != 0);
+ // TODO: localized UI string needed
+ QString confirmText(tr("Delete %1?").arg(mCertificate->label()));
+ displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::deleteConfirmationAccepted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertTrustSettingsView::deleteConfirmationAccepted()
+{
+ Q_ASSERT(mCertificate != 0);
+ mModel.deleteCertificate(*mCertificate);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertTrustSettingsView::usageName()
+// ---------------------------------------------------------------------------
+//
+QString AdvSecSettingsCertTrustSettingsView::usageName(int usageId)
+{
+ if (mUsageIdAndName.isEmpty()) {
+ mModel.getCertificateUsageNames(mUsageIdAndName);
+ }
+
+ QString name;
+ if (mUsageIdAndName.contains(usageId)) {
+ name = mUsageIdAndName.value(usageId);
+ } else {
+ name = QString(KHexUsageIdFormat).arg(usageId, KHexFieldWidth, KHexBase);
+ }
+ return name;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingslabeledcertinfo_symbian.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* 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 the License "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: Helper class to contain a labeled CCTCertInfo object
+*
+*/
+
+#include "advsecsettingslabeledcertinfo_symbian.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsLabeledCertInfo::CAdvSecSettingsLabeledCertInfo()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsLabeledCertInfo::CAdvSecSettingsLabeledCertInfo(
+ const CCTCertInfo &aCertInfo) : iCertInfo(aCertInfo)
+{
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsLabeledCertInfo::~CAdvSecSettingsLabeledCertInfo()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsLabeledCertInfo::~CAdvSecSettingsLabeledCertInfo()
+{
+ delete iLabel;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsLabeledCertInfo::CertInfo()
+// ---------------------------------------------------------------------------
+//
+const CCTCertInfo &CAdvSecSettingsLabeledCertInfo::CertInfo() const
+{
+ return iCertInfo;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsLabeledCertInfo::Label()
+// ---------------------------------------------------------------------------
+//
+const TDesC &CAdvSecSettingsLabeledCertInfo::Label() const
+{
+ if (iLabel) {
+ return *iLabel;
+ }
+ return KNullDesC;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsLabeledCertInfo::SetLabelL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsLabeledCertInfo::SetLabelL(const TDesC &aLabel)
+{
+ if (iLabel) {
+ delete iLabel;
+ iLabel = NULL;
+ }
+ iLabel = aLabel.AllocL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsLabeledCertInfo::AppendLabelL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsLabeledCertInfo::AppendLabelL(const TDesC &aSeparator,
+ const TDesC &aAdditionalText)
+{
+ if (iLabel && iLabel->Length()) {
+ TInt length = iLabel->Length() + aSeparator.Length() + aAdditionalText.Length();
+ iLabel = iLabel->ReAllocL(length);
+ TPtr labelPtr = iLabel->Des();
+ labelPtr.Append(aSeparator);
+ labelPtr.Append(aAdditionalText);
+ } else {
+ SetLabelL(aAdditionalText);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsLabeledCertInfo::Compare()
+// ---------------------------------------------------------------------------
+//
+TInt CAdvSecSettingsLabeledCertInfo::Compare(const CAdvSecSettingsLabeledCertInfo& aLeft,
+ const CAdvSecSettingsLabeledCertInfo& aRight)
+{
+ return (aLeft.Label().CompareF(aRight.Label()));
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingsloader.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,69 @@
+/*
+ * 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: Advanced security settings loader
+ *
+ */
+
+#include "advsecsettingsloader.h" // AdvSecSettingsLoader
+#include "advsecsettingsmainview.h" // AdvSecSettingsMainView
+#include <cpsettingformentryitemdataimpl.h> // CpSettingFormEntryItemDataImpl
+#include <HbApplication> // qApp
+#include <HbTranslator>
+
+const QString KTranslationsPath = "/resource/qt/translations/";
+const QString KTranslationsFile = "certificate_manager";
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsLoader::AdvSecSettingsLoader()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsLoader::AdvSecSettingsLoader()
+{
+ mTranslator = new HbTranslator(KTranslationsPath, KTranslationsFile);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsLoader::~AdvSecSettingsLoader()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsLoader::~AdvSecSettingsLoader()
+{
+ delete mTranslator;
+ mTranslator = 0;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsLoader::createSettingFormItemData()
+// ---------------------------------------------------------------------------
+//
+QList<CpSettingFormItemData*> AdvSecSettingsLoader::createSettingFormItemData(
+ CpItemDataHelper &itemDataHelper) const
+{
+ CpSettingFormEntryItemData *advancedSecuritySettingsItem =
+ new CpSettingFormEntryItemDataImpl<AdvSecSettingsMainView>(
+ CpSettingFormEntryItemData::ButtonEntryItem,
+ itemDataHelper, hbTrId("txt_certificate_manager_setlabel_advanced_security"));
+ advancedSecuritySettingsItem->setContentWidgetData("textAlignment",
+ QVariant( Qt::AlignHCenter | Qt::AlignVCenter) );
+ advancedSecuritySettingsItem->setContentWidgetData("objectName",
+ "advancedSecuritySettingsButton" );
+ return QList<CpSettingFormItemData *>() << advancedSecuritySettingsItem;
+}
+
+
+Q_EXPORT_PLUGIN2(cpadvancedsecplugin, AdvSecSettingsLoader);
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingsmainview.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,236 @@
+/*
+* 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: Advanced security settings main view
+*
+*/
+
+#include "advsecsettingsmainview.h"
+#include "advsecsettingscertificatelistview.h"
+#include "advsecsettingssecuritymodulemodel.h"
+#include "advsecsettingssecuritymoduleview.h"
+#include <QGraphicsLinearLayout>
+#include <HbGroupBox>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <QDebug>
+
+const int KAuthorityCertsRow = 0;
+const int KTrustedSiteCertsRow = 1;
+const int KPersonalCertsRow = 2;
+const int KDeviceCertsRow = 3;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::AdvSecSettingsMainView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsMainView::AdvSecSettingsMainView(
+ QGraphicsItem *parent) : AdvSecSettingsViewBase(0, parent),
+ mSecModModel(0), mCertListView(0), mSecModView(0),
+ mSecModGroupBox(0), mSecModList(0), mContextMenu(0)
+{
+ Q_ASSERT(mSecModModel == 0);
+ mSecModModel = new AdvSecSettingsSecurityModuleModel(this);
+ connect(mSecModModel, SIGNAL(initializeCompleted()), this, SLOT(securityModuleInitialized()));
+ connect(mSecModModel, SIGNAL(errorOccurred(int)), this, SLOT(displayError(int)));
+ mSecModModel->initialize();
+
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+ HbGroupBox *groupBox = 0;
+
+ // View title
+ groupBox = new HbGroupBox;
+ groupBox->setHeading(hbTrId("txt_certificate_manager_setlabel_advanced_security"));
+ layout->addItem(groupBox);
+
+ // Certificates group
+ groupBox = new HbGroupBox;
+ groupBox->setHeading(hbTrId("txt_certificate_manager_setlabel_certificates"));
+ groupBox->setContentWidget(createCertificatesTopLevel());
+ groupBox->setCollapsed(true);
+ layout->addItem(groupBox);
+
+ // Protected content group
+ groupBox = new HbGroupBox;
+ // TODO: localized UI string needed
+ groupBox->setHeading("Protected Content");
+ groupBox->setContentWidget(createProtectedContentTopLevel());
+ groupBox->setCollapsed(true);
+ layout->addItem(groupBox);
+
+ // Security module group
+ Q_ASSERT(mSecModGroupBox == 0);
+ mSecModGroupBox = new HbGroupBox;
+ // TODO: localized UI string needed
+ mSecModGroupBox->setHeading("Security Module");
+ mSecModGroupBox->setVisible(false); // set in securityModuleInitialized()
+ layout->addItem(mSecModGroupBox);
+
+ setLayout(layout);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::~AdvSecSettingsMainView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsMainView::~AdvSecSettingsMainView()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::displayCertListView()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsMainView::displayCertListView(const QModelIndex& modelIndex)
+{
+ if (!mCertListView) {
+ mCertListView = new AdvSecSettingsCertificateListView(this);
+ }
+
+ AdvSecSettingsCertificate::CertificateType type =
+ AdvSecSettingsCertificate::AuthorityCertificate;
+ switch (modelIndex.row()) {
+ case KAuthorityCertsRow:
+ type = AdvSecSettingsCertificate::AuthorityCertificate;
+ break;
+ case KTrustedSiteCertsRow:
+ type = AdvSecSettingsCertificate::TrustedSiteCertificate;
+ break;
+ case KPersonalCertsRow:
+ type = AdvSecSettingsCertificate::PersonalCertificate;
+ break;
+ case KDeviceCertsRow:
+ type = AdvSecSettingsCertificate::DeviceCertificate;
+ break;
+ default:
+ break;
+ }
+
+ mCertListView->displayCertificates(type);
+ displayView(mCertListView);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::displaySecurityModuleView()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsMainView::displaySecurityModuleView(const QModelIndex& modelIndex)
+{
+ if (!mSecModView) {
+ mSecModView = new AdvSecSettingsSecurityModuleView(*mSecModModel, this);
+ }
+
+ int row = modelIndex.row();
+ mSecModView->setSecurityModule(mSecModList->item(row)->text(), row);
+ displayView(mSecModView);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::securityModuleInitialized()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsMainView::securityModuleInitialized()
+{
+ if (isSecurityModulesAvailable()) {
+ mSecModGroupBox->setContentWidget(createSecurityModuleTopLevel());
+ mSecModGroupBox->setCollapsed(true);
+ mSecModGroupBox->setVisible(true);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::
+// ---------------------------------------------------------------------------
+//
+HbWidget *AdvSecSettingsMainView::createCertificatesTopLevel()
+{
+ HbListWidget *list = new HbListWidget;
+ HbListWidgetItem *item = 0;
+
+ // KAuthorityCertsRow
+ item = new HbListWidgetItem;
+ item->setText(hbTrId("txt_certificate_manager_list_authority_certificate"));
+ list->addItem(item);
+
+ // KTrustedSiteCertsRow
+ item = new HbListWidgetItem;
+ item->setText(hbTrId("txt_certificate_manager_list_trusted_site_certific"));
+ list->addItem(item);
+
+ // KPersonalCertsRow
+ item = new HbListWidgetItem;
+ item->setText(hbTrId("txt_certificate_manager_list_personal_certificates"));
+ list->addItem(item);
+
+ // KDeviceCertsRow
+ item = new HbListWidgetItem;
+ item->setText(hbTrId("txt_certificate_manager_list_device_certificates"));
+ list->addItem(item);
+
+ connect(list, SIGNAL(released(QModelIndex)), this, SLOT(displayCertListView(QModelIndex)));
+
+ return list;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::
+// ---------------------------------------------------------------------------
+//
+HbWidget *AdvSecSettingsMainView::createProtectedContentTopLevel()
+{
+ HbListWidget* list = new HbListWidget;
+
+ // TODO: implement
+
+ return list;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::
+// ---------------------------------------------------------------------------
+//
+HbWidget *AdvSecSettingsMainView::createSecurityModuleTopLevel()
+{
+ Q_ASSERT(mSecModList == 0);
+ mSecModList = new HbListWidget;
+
+ QMap<QString, QString> labelAndLocation = mSecModModel->moduleLabelsAndLocations();
+ QMapIterator<QString, QString> iter(labelAndLocation);
+ while (iter.hasNext()) {
+ iter.next();
+ HbListWidgetItem *item = new HbListWidgetItem;
+ item->setText(iter.key());
+ item->setSecondaryText(iter.value());
+ mSecModList->addItem(item);
+ }
+
+ connect(mSecModList, SIGNAL(activated(QModelIndex)),
+ this, SLOT(displaySecurityModuleView(QModelIndex)));
+ connect(mSecModList, SIGNAL(longPressed(HbAbstractViewItem*, QPointF)),
+ this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF))); // TODO: implement
+
+ return mSecModList;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsMainView::isSecurityModulesAvailable()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsMainView::isSecurityModulesAvailable()
+{
+ return (mSecModModel && mSecModModel->moduleCount());
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymodule_symbian.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* 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: Symbian specific container class for a security module
+*
+*/
+
+#include "advsecsettingssecuritymodule_symbian.h"
+#include <cctcertinfo.h> // CCTCertInfo
+#include <mctkeystore.h> // CCTKeyInfo
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleSymbian::CAdvSecSettingsSecurityModuleSymbian()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsSecurityModuleSymbian::CAdvSecSettingsSecurityModuleSymbian(
+ MCTKeyStore &aProtectedKeyStore) : CBase(), iProtectedKeyStore(aProtectedKeyStore)
+{
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleSymbian::~CAdvSecSettingsSecurityModuleSymbian()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsSecurityModuleSymbian::~CAdvSecSettingsSecurityModuleSymbian()
+{
+ iKeyInfoArray.Close();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleSymbian::Label()
+// ---------------------------------------------------------------------------
+//
+const TDesC &CAdvSecSettingsSecurityModuleSymbian::Label() const
+{
+ return KNullDesC;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleSymbian::IsDeletable()
+// ---------------------------------------------------------------------------
+//
+TBool CAdvSecSettingsSecurityModuleSymbian::IsDeletable() const
+{
+ return EFalse;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleSymbian::IsSigningPinSupported()
+// ---------------------------------------------------------------------------
+//
+TBool CAdvSecSettingsSecurityModuleSymbian::IsSigningPinSupported() const
+{
+ return EFalse;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleSymbian::KeyInfoArray()
+// ---------------------------------------------------------------------------
+//
+RMPointerArray<CCTKeyInfo> &CAdvSecSettingsSecurityModuleSymbian::KeyInfoArray()
+{
+ return iKeyInfoArray;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymoduledetailview.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* 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: Security module detail view in advanced security settings
+*
+*/
+
+#include "advsecsettingssecuritymoduledetailview.h"
+#include "advsecsettingssecuritymodulemodel.h"
+#include <QGraphicsLinearLayout>
+#include <HbGroupBox>
+#include <HbScrollArea>
+#include <HbMenu>
+#include <HbAction>
+#include <HbLabel>
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleDetailView::AdvSecSettingsSecurityModuleDetailView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleDetailView::AdvSecSettingsSecurityModuleDetailView(
+ AdvSecSettingsSecurityModuleModel &model, QGraphicsItem *parent) :
+ AdvSecSettingsViewBase(0, parent), mModel(model), mModuleIndex(0),
+ mViewLabel(0), mDetailsText(0)
+{
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ mViewLabel = new HbGroupBox;
+ layout->addItem(mViewLabel);
+
+ HbScrollArea *scrollArea = new HbScrollArea;
+ mDetailsText = new HbLabel;
+ mDetailsText->setTextWrapping(Hb::TextWordWrap);
+ scrollArea->setContentWidget(mDetailsText);
+ scrollArea->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOn);
+ layout->addItem(scrollArea);
+
+ setLayout(layout);
+
+ connect(&mModel, SIGNAL(detailsCompleted(QMap<int,QString>)),
+ this, SLOT(detailsCompleted(QMap<int,QString>)));
+ connect(&mModel, SIGNAL(deleteCompleted()),
+ this, SLOT(displayPreviousView()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleDetailView::~AdvSecSettingsSecurityModuleDetailView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleDetailView::~AdvSecSettingsSecurityModuleDetailView()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleDetailView::setSecurityModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleDetailView::setSecurityModule(int index)
+{
+ mModuleIndex = index;
+ // TODO: remove
+ mDetailsText->setPlainText(tr("TODO: Add info for module %1").arg(index));
+
+ menu()->clearActions();
+ if (mModel.isDeletable(index)) {
+ HbAction *deleteAction = new HbAction(hbTrId("txt_common_menu_delete"));
+ connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteSecurityModule()));
+ menu()->addAction(deleteAction);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleDetailView::detailsCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleDetailView::detailsCompleted(QMap<int,QString> /*details*/)
+{
+ // TODO: implement
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleDetailView::deleteSecurityModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleDetailView::deleteSecurityModule()
+{
+ Q_ASSERT(mViewLabel != 0);
+ // TODO: localized UI string needed
+ QString confirmText(tr("Delete %1?").arg(mViewLabel->heading()));
+ displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleDetailView::deleteConfirmationAccepted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleDetailView::deleteConfirmationAccepted()
+{
+ mModel.deleteModule(mModuleIndex);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymoduleeraser_symbian.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,189 @@
+/*
+* 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: Helper class to remove a security module
+*
+*/
+
+
+#include "advsecsettingssecuritymoduleeraser_symbian.h"
+#include <unifiedkeystore.h> // CUnifiedKeyStore
+#include <ct/tcttokenobjecthandle.h> // TCTTokenObjectHandle
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::NewL()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsSecurityModuleEraser *CAdvSecSettingsSecurityModuleEraser::NewL(
+ CUnifiedKeyStore &aKeyStore)
+{
+ CAdvSecSettingsSecurityModuleEraser *self = new(ELeave) CAdvSecSettingsSecurityModuleEraser(
+ aKeyStore);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::~CAdvSecSettingsSecurityModuleEraser()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsSecurityModuleEraser::~CAdvSecSettingsSecurityModuleEraser()
+{
+ iKeys.Close();
+ delete iKeyFilter;
+ iTargetKeyStore = NULL;
+ iClientStatus = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::Erase()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsSecurityModuleEraser::Erase(TInt aKeyStoreIndex, TRequestStatus &aStatus)
+{
+ aStatus = KRequestPending;
+ if (!IsActive() && (iState == EIdle)) {
+ if (aKeyStoreIndex >= 0 && aKeyStoreIndex < iKeyStore.KeyStoreCount()) {
+ iTargetKeyStore = &(iKeyStore.KeyStore(aKeyStoreIndex));
+ iClientStatus = &aStatus;
+
+ iKeys.Reset();
+ iTargetKeyStore->List(iKeys, *iKeyFilter, iStatus);
+ iState = EListingKeys;
+ SetActive();
+ } else {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status, KErrArgument);
+ }
+ } else {
+ TRequestStatus *status = &aStatus;
+ User::RequestComplete(status, KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsSecurityModuleEraser::DoCancel()
+{
+ switch (iState) {
+ case EListingKeys:
+ iTargetKeyStore->CancelList();
+ break;
+ case EDeletingKey:
+ iKeyStore.CancelDeleteKey();
+ break;
+ default:
+ break;
+ }
+ iState = EIdle;
+
+ User::RequestComplete(iClientStatus, KErrCancel);
+ iClientStatus = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::RunL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsSecurityModuleEraser::RunL()
+{
+ switch (iState) {
+ case EListingKeys:
+ DeleteFirstKeyL();
+ break;
+ case EDeletingKey:
+ DeleteNextKeyL();
+ break;
+ default:
+ ASSERT(EFalse);
+ break;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CAdvSecSettingsSecurityModuleEraser::RunError(TInt aError)
+{
+ User::RequestComplete(iClientStatus, aError);
+ iClientStatus = NULL;
+ iState = EIdle;
+ return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::CAdvSecSettingsSecurityModuleEraser()
+// ---------------------------------------------------------------------------
+//
+CAdvSecSettingsSecurityModuleEraser::CAdvSecSettingsSecurityModuleEraser(
+ CUnifiedKeyStore &aKeyStore) : CActive(CActive::EPriorityStandard),
+ iKeyStore(aKeyStore)
+{
+ CActiveScheduler::Add(this);
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsSecurityModuleEraser::ConstructL()
+{
+ iKeyFilter = new(ELeave) TCTKeyAttributeFilter;
+ iKeyFilter->iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::DeleteFirstKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsSecurityModuleEraser::DeleteFirstKeyL()
+{
+ iKeyIndex = 0;
+ DeleteOneKeyL();
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::DeleteOneKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsSecurityModuleEraser::DeleteOneKeyL()
+{
+ if (iKeyIndex < iKeys.Count()) {
+ iKeyStore.DeleteKey(iKeys[iKeyIndex]->Handle(), iStatus);
+ iState = EDeletingKey;
+ SetActive();
+ } else {
+ User::RequestComplete(iClientStatus, KErrNone);
+ iClientStatus = NULL;
+ iState = EIdle;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// CAdvSecSettingsSecurityModuleEraser::DeleteNextKeyL()
+// ---------------------------------------------------------------------------
+//
+void CAdvSecSettingsSecurityModuleEraser::DeleteNextKeyL()
+{
+ ++iKeyIndex;
+ DeleteOneKeyL();
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymodulemodel.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,258 @@
+/*
+* 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: Security module model in advanced security settings
+*
+*/
+
+#include "advsecsettingssecuritymodulemodel.h"
+
+#if defined(Q_OS_SYMBIAN)
+#include "advsecsettingssecuritymodulemodel_symbian_p.h"
+#else
+#include "advsecsettingssecuritymodulemodel_stub_p.h"
+#endif
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::AdvSecSettingsSecurityModuleModel()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleModel::AdvSecSettingsSecurityModuleModel(
+ QObject *parent) : QObject(parent)
+{
+ d_ptr = new AdvSecSettingsSecurityModuleModelPrivate(this);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::~AdvSecSettingsSecurityModuleModel()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleModel::~AdvSecSettingsSecurityModuleModel()
+{
+ delete d_ptr;
+ d_ptr = 0;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::initialize()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::initialize()
+{
+ if (d_ptr) {
+ d_ptr->initialize();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::moduleCount()
+// ---------------------------------------------------------------------------
+//
+int AdvSecSettingsSecurityModuleModel::moduleCount() const
+{
+ if (d_ptr) {
+ return d_ptr->moduleCount();
+ }
+ return 0;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::moduleLabelsAndLocations()
+// ---------------------------------------------------------------------------
+//
+QMap<QString,QString> AdvSecSettingsSecurityModuleModel::moduleLabelsAndLocations() const
+{
+ if (d_ptr) {
+ return d_ptr->moduleLabelsAndLocations();
+ }
+ QMap<QString,QString> emptyMap;
+ return emptyMap;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::getModuleStatus()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::getModuleStatus(int moduleIndex)
+{
+ if (d_ptr) {
+ d_ptr->getModuleStatus(moduleIndex);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::setPinCodeRequestState()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::setPinCodeRequestState(int moduleIndex,
+ bool isRequested)
+{
+ if (d_ptr) {
+ d_ptr->setPinCodeRequestState(moduleIndex, isRequested);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::changePinCode()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::changePinCode(int moduleIndex)
+{
+ if (d_ptr) {
+ d_ptr->changePinCode(moduleIndex);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::closeModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::closeModule(int moduleIndex)
+{
+ if (d_ptr) {
+ d_ptr->closeModule(moduleIndex);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::isSigningPinSupported()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsSecurityModuleModel::isSigningPinSupported(int moduleIndex) const
+{
+ if (d_ptr) {
+ return d_ptr->isSigningPinSupported(moduleIndex);
+ }
+ return false;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::changeSigningPinCode()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::changeSigningPinCode(int moduleIndex)
+{
+ if (d_ptr) {
+ d_ptr->changeSigningPinCode(moduleIndex);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::isDeletable()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsSecurityModuleModel::isDeletable(int moduleIndex) const
+{
+ if (d_ptr) {
+ return d_ptr->isDeletable(moduleIndex);
+ }
+ return false;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::deleteModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::deleteModule(int moduleIndex)
+{
+ if (d_ptr) {
+ d_ptr->deleteModule(moduleIndex);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handleInitializeCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handleInitializeCompleted()
+{
+ emit initializeCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handleStatusCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handleStatusCompleted(
+ int authenticationStatus)
+{
+ emit statusCompleted(authenticationStatus);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handleStatusChanged()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handleStatusChanged(int moduleIndex,
+ int authenticationStatus)
+{
+ emit statusChanged(moduleIndex, authenticationStatus);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handlePinCodeRequestSet()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handlePinCodeRequestSet()
+{
+ emit pinCodeRequestStateCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handlePinCodeChanged()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handlePinCodeChanged()
+{
+ emit pinCodeChangeCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handleModuleClosed()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handleModuleClosed()
+{
+ emit closeCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handleSigningPinCodeChanged()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handleSigningPinCodeChanged()
+{
+ emit signingPinCodeChangeCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handleModuleDeleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handleModuleDeleted()
+{
+ emit deleteCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModel::handleError()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModel::handleError(int error)
+{
+ emit errorOccurred(error);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymodulemodel_stub_p.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* 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: Generic stub for platform specific private security module model
+*
+*/
+
+#include "advsecsettingssecuritymodulemodel_stub_p.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate(
+ AdvSecSettingsSecurityModuleModel *q) : QObject(0), q_ptr(q)
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::initialize()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::initialize()
+{
+ q_ptr->handleInitializeCompleted();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::moduleCount()
+// ---------------------------------------------------------------------------
+//
+int AdvSecSettingsSecurityModuleModelPrivate::moduleCount() const
+{
+ return 0;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations()
+// ---------------------------------------------------------------------------
+//
+QMap<QString,QString> AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations() const
+{
+ QMap<QString,QString> emptyMap;
+ return emptyMap;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus(int /*moduleIndex*/)
+{
+ q_ptr->handleStatusCompleted(0, false, false);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState(
+ int /*moduleIndex*/, bool /*isRequested*/)
+{
+ q_ptr->handlePinCodeRequestSet();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::changePinCode()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::changePinCode(int /*moduleIndex*/)
+{
+ q_ptr->handlePinCodeChanged();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::closeModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::closeModule(int /*moduleIndex*/)
+{
+ q_ptr->handleModuleClosed();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported(int /*moduleIndex*/) const
+{
+ return false;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode(int /*moduleIndex*/)
+{
+ q_ptr->handleSigningPinCodeChanged();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::isDeletable()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsSecurityModuleModelPrivate::isDeletable(int /*moduleIndex*/) const
+{
+ return false;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::deleteModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::deleteModule(int /*moduleIndex*/)
+{
+ q_ptr->handleModuleDeleted();
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymodulemodel_symbian_p.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,618 @@
+/*
+* 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: Symbian specific private security module model
+*
+*/
+
+#include "advsecsettingssecuritymodulemodel_symbian_p.h"
+#include "advsecsettingssecuritymodulemodel.h"
+#include "advsecsettingsstoreuids.h"
+#include "advsecsettingssecuritymoduleeraser_symbian.h"
+#include <unifiedkeystore.h> // CUnifiedKeyStore
+#include <mctauthobject.h> // MCTAuthenticationObject
+#include <QDebug>
+
+// TODO: split implementation into smaller parts, use CAdvSecSettingsSecurityModuleSymbian
+
+// Local functions in other cpp-files within this project
+QString CopyStringL(const TDesC16 &aDes16);
+QString Location(const TUid &aTokenType);
+
+// TODO: replace with proper logging
+#ifdef _DEBUG
+#define TRACE(x) RDebug::Printf(x)
+#define TRACE1(x,y) RDebug::Printf((x),(y))
+#define TRACE2(x,y,z) RDebug::Printf((x),(y),(z))
+#else
+#define TRACE(x)
+#define TRACE1(x,y)
+#define TRACE2(x,y,z)
+#endif
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate(
+ AdvSecSettingsSecurityModuleModel *q) : CActive(CActive::EPriorityLow), q_ptr(q),
+ iState(ENotInitialized)
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::AdvSecSettingsSecurityModuleModelPrivate");
+ CActiveScheduler::Add(this);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::~AdvSecSettingsSecurityModuleModelPrivate");
+ Cancel();
+ delete iModuleEraser;
+ iCurrentKeyStore = NULL;
+ iCurrentAuthObject = NULL;
+ iProtectedKeyStores.Reset();
+ iAuthenticationObjects.Reset();
+ iKeys.Close();
+ delete iAllKeysFilter;
+ delete iUnifiedKeyStore;
+ iFs.Close();
+ q_ptr = NULL;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::initialize()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::initialize()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::initialize");
+ if ((iState == ENotInitialized) && !IsActive()) {
+ TRAPD(err, ConstructL());
+ if (err == KErrNone) {
+ iUnifiedKeyStore->Initialize(iStatus);
+ iState = EInitializing;
+ SetActive();
+ } else {
+ q_ptr->handleError(err);
+ }
+ } else {
+ q_ptr->handleError(KErrAlreadyExists);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::moduleCount()
+// ---------------------------------------------------------------------------
+//
+int AdvSecSettingsSecurityModuleModelPrivate::moduleCount() const
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::moduleCount");
+ return iProtectedKeyStores.Count();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations()
+// ---------------------------------------------------------------------------
+//
+QMap<QString,QString> AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations() const
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::moduleLabelsAndLocations");
+ QMap<QString,QString> map;
+
+ for (TInt index = 0; index < iProtectedKeyStores.Count(); index++) {
+ MCTToken &keyStoreToken = iProtectedKeyStores[index]->Token();
+
+ QString label;
+ if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
+ // TODO: localized UI string needed
+ label = CopyStringL(_L("Phone key store"));
+ } else {
+ label = CopyStringL(keyStoreToken.Label());
+ }
+
+ map[label] = Location(keyStoreToken.TokenType().Type());
+ }
+
+ return map;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus(int moduleIndex)
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::getModuleStatus, moduleIndex=%d", moduleIndex);
+ if ((iState == EIdle) && !IsActive()) {
+ if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
+ // TODO: this does not work yet
+#if 0
+ iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
+ iTimeRemaining = 0;
+ iCurrentAuthObject->TimeRemaining(iTimeRemaining, iStatus);
+ iState = EReadingTimeRemaining;
+ SetActive();
+#else
+ TInt tempStatus = AdvSecSettingsSecurityModuleModel::EPinRequested;
+ q_ptr->handleStatusCompleted(tempStatus);
+#endif
+ } else {
+ q_ptr->handleError(KErrArgument);
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState(int moduleIndex,
+ bool isRequested)
+{
+ TRACE2("AdvSecSettingsSecurityModuleModelPrivate::setPinCodeRequestState, moduleIndex=%d isRequested=%d",
+ moduleIndex, isRequested);
+ if ((iState == EIdle) && !IsActive()) {
+ if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
+ iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
+ if (isRequested) {
+ iCurrentAuthObject->Enable(iStatus);
+ iState = EEnablingPinCodeRequest;
+ } else {
+ iCurrentAuthObject->Disable(iStatus);
+ iState = EDisablingPinCodeRequest;
+ }
+ SetActive();
+ } else {
+ q_ptr->handleError(KErrArgument);
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::changePinCode()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::changePinCode(int moduleIndex)
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::changePinCode, moduleIndex=%d", moduleIndex);
+ if ((iState == EIdle) && !IsActive()) {
+ if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
+ iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
+ ChangeCurrentAuthObjectPinCode();
+ } else {
+ q_ptr->handleError(KErrArgument);
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::closeModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::closeModule(int moduleIndex)
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::closeModule, moduleIndex=%d", moduleIndex);
+ if ((iState == EIdle) && !IsActive()) {
+ if (moduleIndex >= 0 && moduleIndex < iAuthenticationObjects.Count()) {
+ iCurrentAuthObject = iAuthenticationObjects[moduleIndex];
+ iCurrentAuthObject->Close(iStatus);
+ iState = EClosingAuthObject;
+ SetActive();
+ } else {
+ q_ptr->handleError(KErrArgument);
+ }
+ } else {
+ q_ptr->handleError(KErrInUse);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported(int moduleIndex) const
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::isSigningPinSupported, moduleIndex=%d",
+ moduleIndex);
+ if (moduleIndex >= 0 && moduleIndex < iProtectedKeyStores.Count()) {
+ MCTToken &keyStoreToken = iProtectedKeyStores[moduleIndex]->Token();
+ if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
+ return false;
+ } else {
+ return true;
+ }
+ } else {
+ return false;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode(int /*moduleIndex*/)
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::changeSigningPinCode" );
+
+ // TODO: implement
+ q_ptr->handleError(KErrNotSupported);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::isDeletable()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsSecurityModuleModelPrivate::isDeletable(int moduleIndex) const
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::isDeletable, moduleIndex=%d",
+ moduleIndex);
+ if (moduleIndex >= 0 && moduleIndex < iProtectedKeyStores.Count()) {
+ MCTToken &keyStoreToken = iProtectedKeyStores[moduleIndex]->Token();
+ if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::isDeletable, true");
+ return true;
+ }
+ }
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::isDeletable, false");
+ return false;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::deleteModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::deleteModule(int moduleIndex)
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::deleteModule, moduleIndex=%d",
+ moduleIndex);
+ if (moduleIndex >= 0 && moduleIndex < iProtectedKeyStores.Count()) {
+ MCTToken &keyStoreToken = iProtectedKeyStores[moduleIndex]->Token();
+ if (keyStoreToken.TokenType().Type().iUid == KAdvSecSettingsFileKeyStore) {
+ TInt err = DoStartDeletingModule(moduleIndex);
+ if (err) {
+ q_ptr->handleError(err);
+ }
+ }
+ } else {
+ q_ptr->handleError(KErrArgument);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::DoCancel()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::DoCancel");
+ switch (iState) {
+ case EInitializing:
+ iUnifiedKeyStore->CancelInitialize();
+ iState = ENotInitialized;
+ break;
+ case EListingKeys:
+ iCurrentKeyStore->CancelList();
+ iState = ENotInitialized;
+ break;
+ case EReadingTimeRemaining:
+ iCurrentAuthObject->CancelTimeRemaining();
+ iState = EIdle;
+ break;
+ case EChangingPinCode:
+ iCurrentAuthObject->CancelChangeReferenceData();
+ iState = EIdle;
+ break;
+ case EUnblockingToChangePinCode:
+ iCurrentAuthObject->CancelUnblock();
+ iState = EIdle;
+ break;
+ case EEnablingPinCodeRequest:
+ iCurrentAuthObject->CancelEnable();
+ iState = EIdle;
+ break;
+ case EDisablingPinCodeRequest:
+ iCurrentAuthObject->CancelDisable();
+ iState = EIdle;
+ break;
+ case EClosingAuthObject:
+ iCurrentAuthObject->CancelClose();
+ iState = EIdle;
+ break;
+ case EDeletingModule:
+ delete iModuleEraser;
+ iModuleEraser = NULL;
+ break;
+ default:
+ break;
+ }
+ q_ptr->handleError(KErrCancel);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::RunL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::RunL()
+{
+ TRACE2("AdvSecSettingsSecurityModuleModelPrivate::RunL, status=%d state=%d", iStatus.Int(), iState);
+ User::LeaveIfError(iStatus.Int());
+ switch (iState) {
+ case EInitializing:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EInitializing");
+ iAuthenticationObjects.Reset();
+ iProtectedKeyStores.Reset();
+ ListKeysFromFirstKeyStoreL();
+ break;
+ case EListingKeys:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EListingKeys");
+ AppendKeyStoresWithProtectedKeysL();
+ ListKeysFromNextKeyStoreL();
+ break;
+ case EReadingTimeRemaining:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EReadingTimeRemaining");
+ ReturnModuleStatusL();
+ break;
+ case EChangingPinCode:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EChangingPinCode");
+ ReturnPinChanged();
+ break;
+ case EUnblockingToChangePinCode:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EUnblockingToChangePinCode");
+ ChangeCurrentAuthObjectPinCode();
+ break;
+ case EEnablingPinCodeRequest:
+ case EDisablingPinCodeRequest:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EEnabling/DisablingPinCodeRequest");
+ ReturnPinRequestStateChanged();
+ break;
+ case EClosingAuthObject:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EClosingAuthObject");
+ ReturnModuleClosed();
+ break;
+ case EDeletingModule:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, EDeletingModule");
+ ReturnModuleDeleted();
+ break;
+ default:
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::RunL, default");
+ ASSERT(EFalse);
+ break;
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt AdvSecSettingsSecurityModuleModelPrivate::RunError(TInt aError)
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::RunError, aError=%d", aError);
+ q_ptr->handleError(aError);
+ return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ConstructL()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ConstructL");
+ User::LeaveIfError(iFs.Connect());
+ iUnifiedKeyStore = CUnifiedKeyStore::NewL(iFs);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromFirstKeyStoreL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromFirstKeyStoreL()
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromFirstKeyStoreL, count=%d",
+ iUnifiedKeyStore->KeyStoreCount());
+ iKeyStoreIndex = 0;
+ ListKeysFromOneKeyStoreL();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromOneKeyStoreL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromOneKeyStoreL()
+{
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromOneKeyStoreL, index=%d",
+ iKeyStoreIndex);
+ if (iKeyStoreIndex < iUnifiedKeyStore->KeyStoreCount()) {
+ iKeys.Close();
+ if (!iAllKeysFilter) {
+ iAllKeysFilter = new( ELeave ) TCTKeyAttributeFilter;
+ iAllKeysFilter->iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
+ }
+ iCurrentKeyStore = &(iUnifiedKeyStore->KeyStore(iKeyStoreIndex));
+ iCurrentKeyStore->List(iKeys, *iAllKeysFilter, iStatus);
+ iState = EListingKeys;
+ SetActive();
+ } else {
+ iState = EIdle;
+ q_ptr->handleInitializeCompleted();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromNextKeyStoreL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromNextKeyStoreL()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ListKeysFromNextKeyStoreL");
+ ++iKeyStoreIndex;
+ ListKeysFromOneKeyStoreL();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL");
+ for (TInt index = 0; index < iKeys.Count(); index++) {
+ const CCTKeyInfo &keyInfo = *(iKeys[index]);
+ if (keyInfo.Protector()) {
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::AppendKeyStoresWithProtectedKeysL, added");
+ iAuthenticationObjects.AppendL(keyInfo.Protector());
+ iProtectedKeyStores.AppendL(&(iUnifiedKeyStore->KeyStore(iKeyStoreIndex)));
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode");
+ TInt32 currentAuthObjectStatus = iCurrentAuthObject->Status();
+ if (currentAuthObjectStatus & EAuthObjectBlocked) {
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, blocked");
+ if (currentAuthObjectStatus & EUnblockDisabled) {
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, permanently");
+ iState = EIdle;
+ q_ptr->handleError(KErrPermissionDenied);
+ } else {
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, unblocking");
+ iCurrentAuthObject->Unblock(iStatus);
+ iState = EUnblockingToChangePinCode;
+ SetActive();
+ }
+ } else {
+ if (currentAuthObjectStatus & EChangeDisabled) {
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, cannot change");
+ iState = EIdle;
+ q_ptr->handleError(KErrPermissionDenied);
+ } else {
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ChangeCurrentAuthObjectPinCode, changing pin");
+ iCurrentAuthObject->ChangeReferenceData(iStatus);
+ iState = EChangingPinCode;
+ SetActive();
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::DoStartDeletingModule()
+// ---------------------------------------------------------------------------
+//
+TInt AdvSecSettingsSecurityModuleModelPrivate::DoStartDeletingModule(TInt aModuleIndex)
+{
+ if (!iModuleEraser) {
+ TRAPD(err, iModuleEraser = CAdvSecSettingsSecurityModuleEraser::NewL(*iUnifiedKeyStore));
+ if (err) {
+ return err;
+ }
+ }
+ iModuleEraser->Erase(aModuleIndex, iStatus);
+ iState = EDeletingModule;
+ SetActive();
+ return KErrNone;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleStatusL()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleStatusL()
+{
+ int advSecSettingsStatus = 0;
+
+ TUint32 currentTCTAuthenticationStatus = iCurrentAuthObject->Status();
+ if (currentTCTAuthenticationStatus & EUnblockDisabled) {
+ advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EBlockedPermanently;
+ }
+ if (currentTCTAuthenticationStatus & EAuthObjectBlocked) {
+ advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinBlocked;
+ }
+ advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinChangeAllowed;
+ if (currentTCTAuthenticationStatus & EChangeDisabled) {
+ advSecSettingsStatus ^= AdvSecSettingsSecurityModuleModel::EPinChangeAllowed;
+ }
+ if (currentTCTAuthenticationStatus & EEnabled) {
+ advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinRequested;
+ }
+ if (iTimeRemaining > 0) {
+ advSecSettingsStatus |= AdvSecSettingsSecurityModuleModel::EPinEntered;
+ }
+
+ TRACE1("AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleStatusL 0x%08x",
+ advSecSettingsStatus);
+ iState = EIdle;
+ q_ptr->handleStatusCompleted(advSecSettingsStatus);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ReturnPinChanged()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ReturnPinChanged()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnPinChanged");
+ iState = EIdle;
+ q_ptr->handlePinCodeChanged();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ReturnPinRequestStateChanged()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ReturnPinRequestStateChanged()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnPinRequestStateChanged");
+ iState = EIdle;
+ q_ptr->handlePinCodeRequestSet();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleClosed()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleClosed()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleClosed");
+ iState = EIdle;
+ q_ptr->handleModuleClosed();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleDeleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleDeleted()
+{
+ TRACE("AdvSecSettingsSecurityModuleModelPrivate::ReturnModuleDeleted");
+ iState = EIdle;
+ q_ptr->handleModuleDeleted();
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingssecuritymoduleview.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,226 @@
+/*
+* 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: Security module view in advanced security settings.
+*
+*/
+
+#include "advsecsettingssecuritymoduleview.h"
+#include "advsecsettingssecuritymodulemodel.h"
+#include <QGraphicsLinearLayout>
+#include <HbGroupBox>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbLineEdit>
+#include <QDebug>
+
+const QString KEchoModeProperty = "echoMode";
+const QString KTextProperty = "text";
+const QString KAdditionalTextProperty = "additionalText";
+const QString KReadOnlyProperty = "readOnly";
+const QString KPasswordValue = "****";
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleView::AdvSecSettingsSecurityModuleView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleView::AdvSecSettingsSecurityModuleView(
+ AdvSecSettingsSecurityModuleModel &model, QGraphicsItem *parent) :
+ AdvSecSettingsViewBase(0, parent), mModel(model), mViewLabel(0),
+ mModulePin(0), mModulePinRequested(0), mModuleStatus(0), mSigningPin(0),
+ mModelIndex(0)
+{
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ // View title
+ mViewLabel = new HbGroupBox;
+ layout->addItem(mViewLabel);
+
+ HbDataForm *dataForm = new HbDataForm;
+ mDataFormModel = new HbDataFormModel;
+ HbDataFormModelItem *rootItem = mDataFormModel->invisibleRootItem();
+
+ // Module PIN
+ // TODO: localized UI strings needed
+ HbDataFormModelItem *moduleGroup = 0;
+ moduleGroup = mDataFormModel->appendDataFormGroup(tr("Module PIN"), rootItem);
+ mModulePin = mDataFormModel->appendDataFormItem(HbDataFormModelItem::TextItem,
+ tr("PIN code"), moduleGroup);
+ mModulePin->setContentWidgetData(KEchoModeProperty, HbLineEdit::Password);
+ mModulePin->setContentWidgetData(KTextProperty, KPasswordValue);
+ mModulePin->setContentWidgetData(KReadOnlyProperty, true);
+
+ // Module PIN Request
+ mModulePinRequested = mDataFormModel->appendDataFormItem(
+ HbDataFormModelItem::ToggleValueItem, tr("PIN code required"), moduleGroup);
+ mModulePinRequested->setContentWidgetData(KTextProperty, tr("On"));
+ //mModulePinRequested->setContentWidgetData(KAdditionalTextProperty, tr("Changing..."));
+ // TODO: remove
+ mModulePinRequested->setEnabled(false);
+
+ // Module Status
+ mModuleStatus = mDataFormModel->appendDataFormItem(
+ HbDataFormModelItem::ToggleValueItem, tr("Status"), moduleGroup);
+ mModuleStatus->setContentWidgetData(KTextProperty, tr("Closed"));
+ mModuleStatus->setEnabled(false);
+
+ dataForm->setModel(mDataFormModel);
+ layout->addItem(dataForm);
+ setLayout(layout);
+
+ connect(dataForm, SIGNAL(activated(const QModelIndex &)),
+ this, SLOT(itemActivated(const QModelIndex &)));
+ connect(&mModel, SIGNAL(statusCompleted(int)), this, SLOT(moduleStatusChanged(int)));
+ connect(&mModel, SIGNAL(statusChanged(int)), this, SLOT(moduleStatusChanged(int)));
+ connect(&mModel, SIGNAL(pinCodeRequestStateCompleted()), this, SLOT(updateModuleStatus()));
+ connect(&mModel, SIGNAL(pinCodeChangeCompleted()), this, SLOT(updateModuleStatus()));
+ connect(&mModel, SIGNAL(closeCompleted()), this, SLOT(updateModuleStatus()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleView::~AdvSecSettingsSecurityModuleView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsSecurityModuleView::~AdvSecSettingsSecurityModuleView()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleView::setSecurityModule()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleView::setSecurityModule(const QString &moduleTitle,
+ int modelIndex)
+{
+ mViewLabel->setHeading(moduleTitle);
+ mModelIndex = modelIndex;
+
+ // Signing PIN
+ if (mModel.isSigningPinSupported(mModelIndex)) {
+ if (!mSigningPin) {
+ HbDataFormModelItem *rootItem = mDataFormModel->invisibleRootItem();
+ HbDataFormModelItem *signingGroup = 0;
+ signingGroup = mDataFormModel->appendDataFormGroup(tr("Signing PIN"), rootItem);
+ mSigningPin = mDataFormModel->appendDataFormItem(HbDataFormModelItem::TextItem,
+ tr("PIN code"), signingGroup);
+ mSigningPin->setContentWidgetData(KEchoModeProperty, HbLineEdit::Password);
+ mSigningPin->setContentWidgetData(KTextProperty, KPasswordValue);
+ mSigningPin->setContentWidgetData(KReadOnlyProperty, true);
+ }
+ } else {
+ if (mSigningPin) {
+ mDataFormModel->removeItem(mSigningPin);
+ mSigningPin = 0;
+ }
+ }
+
+ updateModuleStatus();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleView::updateModuleStatus()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleView::updateModuleStatus()
+{
+ mModel.getModuleStatus(mModelIndex);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleView::moduleStatusChanged()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleView::moduleStatusChanged(int status)
+{
+ // TODO: localized UI strings needed
+ if (status & AdvSecSettingsSecurityModuleModel::EBlockedPermanently) {
+ mModulePinRequested->setContentWidgetData(KTextProperty, tr("Blocked"));
+ mModulePinRequested->setEnabled(false);
+ } else if (status & AdvSecSettingsSecurityModuleModel::EPinBlocked) {
+ mModulePinRequested->setContentWidgetData(KTextProperty, tr("Blocked"));
+ // TODO: mModulePinRequested->setEnabled(true);
+ mModulePinRequested->setEnabled(false);
+ } else {
+ if (status & AdvSecSettingsSecurityModuleModel::EPinRequested) {
+ mModulePinRequested->setContentWidgetData(KTextProperty, tr("On"));
+ } else {
+ mModulePinRequested->setContentWidgetData(KTextProperty, tr("Off"));
+ }
+ if (status & AdvSecSettingsSecurityModuleModel::EPinChangeAllowed) {
+ // TODO:
+ //mModulePinRequested->setContentWidgetData(KAdditionalTextProperty, tr("Changing..."));
+ //mModulePinRequested->setEnabled(true);
+ mModulePinRequested->setEnabled(false);
+ } else {
+ mModulePinRequested->setContentWidgetData(KAdditionalTextProperty, QString());
+ mModulePinRequested->setEnabled(false);
+ }
+ }
+ if (status & AdvSecSettingsSecurityModuleModel::EPinEntered) {
+ mModuleStatus->setContentWidgetData(KTextProperty, tr("Open"));
+ // TODO:
+ //mModuleStatus->setContentWidgetData(KAdditionalTextProperty, tr("Closing..."));
+ //mModuleStatus->setEnabled(true);
+ mModuleStatus->setEnabled(false);
+ } else {
+ mModuleStatus->setContentWidgetData(KTextProperty, tr("Closed"));
+ mModuleStatus->setContentWidgetData(KAdditionalTextProperty, QString());
+ mModuleStatus->setEnabled(false);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsSecurityModuleView::itemActivated()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsSecurityModuleView::itemActivated(const QModelIndex &/*itemIndex*/)
+{
+ // TODO: this does not work yet
+#if 0
+ bool isOperationStarted = false;
+ HbDataFormModelItem *item = mDataFormModel->itemFromIndex(itemIndex);
+ if (item == mModulePin) {
+ mModel.changePinCode(mModelIndex);
+ isOperationStarted = true;
+ } else if (item == mModulePinRequested) {
+ QString contentData = mModulePinRequested->contentWidgetData(KTextProperty).toString();
+ bool enable = (contentData != tr("On"));
+ mModel.setPinCodeRequestState(mModelIndex, enable);
+ isOperationStarted = true;
+ } else if (item == mModuleStatus) {
+ QString contentData = mModulePinRequested->contentWidgetData(KTextProperty).toString();
+ bool isClosed = (contentData == tr("Closed"));
+ if (!isClosed) {
+ mModel.closeModule(mModelIndex);
+ isOperationStarted = true;
+ }
+ } else if (item == mSigningPin) {
+ mModel.changeSigningPinCode(mModelIndex);
+ isOperationStarted = true;
+ } else {
+ // ignored, one of the group titles
+ }
+ if (isOperationStarted) {
+ mModulePin->setEnabled(false);
+ mModulePinRequested->setEnabled(false);
+ mModuleStatus->setEnabled(false);
+ if (mSigningPin) {
+ mSigningPin->setEnabled(false);
+ }
+ }
+#endif
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingsviewbase.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,170 @@
+/*
+* 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: Base class for advanced security settings views
+*
+*/
+
+#include "advsecsettingsviewbase.h"
+#include <HbMainWindow>
+#include <HbAction>
+#include <HbMenu>
+#include <HbMessageBox>
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::AdvSecSettingsViewBase()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsViewBase::AdvSecSettingsViewBase(QGraphicsWidget *widget,
+ QGraphicsItem *parent) : CpBaseSettingView(widget, parent), mPreviousView(0),
+ mItemSpecificMenu(0), mDeleteOnClose(false)
+{
+ connect(this, SIGNAL(aboutToClose()), this, SLOT(displayPreviousView()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::AdvSecSettingsViewBase()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsViewBase::~AdvSecSettingsViewBase()
+{
+ delete mItemSpecificMenu;
+ mItemSpecificMenu = 0;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::displayPreviousView()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::displayPreviousView()
+{
+ if (mPreviousView) {
+ HbMainWindow &window = *mainWindow();
+ HbView *currentView = window.currentView();
+ window.setCurrentView(mPreviousView);
+ mPreviousView = 0;
+ if (mDeleteOnClose) {
+ window.removeView(currentView);
+ currentView->deleteLater();
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::displayError()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::displayError(int error)
+{
+ HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
+ messageBox->setAttribute(Qt::WA_DeleteOnClose);
+ messageBox->setStandardButtons(HbMessageBox::Ok);
+
+ // TODO: proper error texts, localised UI texts needed
+ QString text = tr("Error %1").arg(error);
+ messageBox->setText(text);
+ messageBox->open();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::displayView()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::displayView(AdvSecSettingsViewBase *view)
+{
+ HbMainWindow &window = *mainWindow();
+ QList<HbView *> addedViews = window.views();
+ if (!addedViews.contains(view)) {
+ window.addView(view);
+ }
+ view->mPreviousView = window.currentView();
+ window.setCurrentView(view);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::hasPreviousView()
+// ---------------------------------------------------------------------------
+//
+bool AdvSecSettingsViewBase::hasPreviousView() const
+{
+ return (mPreviousView != 0);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::setDeleteOnClose()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::setDeleteOnClose(bool deleteOnClose)
+{
+ mDeleteOnClose = deleteOnClose;
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::clearItemSpecificMenu()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::clearItemSpecificMenu()
+{
+ if (!mItemSpecificMenu) {
+ mItemSpecificMenu = new HbMenu;
+ } else {
+ mItemSpecificMenu->clearActions();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::addItemSpecificMenuAction()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::addItemSpecificMenuAction(const QString &text,
+ const QObject *receiver, const char *member)
+{
+ HbAction *action = new HbAction(text);
+ connect(action, SIGNAL(triggered()), receiver, member);
+ mItemSpecificMenu->addAction(action);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::displayItemSpecificMenu()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::displayItemSpecificMenu(const QPointF &position)
+{
+ mItemSpecificMenu->setPreferredPos(position);
+ mItemSpecificMenu->open();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsViewBase::displayQuestionNote()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsViewBase::displayQuestionNote(const QString &text,
+ const QObject *receiver, const char *accepedMember)
+{
+ HbMessageBox *messageBox = new HbMessageBox;
+ messageBox->setAttribute(Qt::WA_DeleteOnClose);
+
+ messageBox->clearActions();
+ HbAction *yesAction = new HbAction(hbTrId("txt_common_button_yes"));
+ connect(yesAction, SIGNAL(triggered()), receiver, accepedMember);
+ messageBox->addAction(yesAction);
+ HbAction *noAction = new HbAction(hbTrId("txt_common_button_no"));
+ messageBox->addAction(noAction);
+
+ messageBox->setText(text);
+ messageBox->open();
+}
+
--- a/cpsecplugins/cpadvancedsecplugin/src/cpcertdatacontainer.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,757 +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 CCertManUIKeeper
-* Creates and destroys all the views CertManUI uses.
-* Handles changing CertManUI views.
-*
-*/
-
-
-// INCLUDE FILES
-#include <unifiedcertstore.h>
-#include <unifiedkeystore.h>
-#include <mctwritablecertstore.h>
-#include <X509CertNameParser.h>
-
-#include <HbMessageBox>
-
-#include <QErrorMessage>
-#include <../../inc/cpsecplugins.h>
-#include "cpcertdatacontainer.h"
-#include "cpcertmanuisyncwrapper.h"
-
-// CONSTANTS
-_LIT( KNameSeparator, " " );
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// TInt CompareCALabels( const CCTCertInfo& cert1, const CCTCertInfo& cert2 )
-// Compares two labels.
-// -----------------------------------------------------------------------------
-//
-TInt CompareCALabels(
- const CpCertManUICertData& cert1,
- const CpCertManUICertData& cert2 )
- {
- return ( (cert1.iCAEntryLabel->Des()).
- CompareF( cert2.iCAEntryLabel->Des() ) );
- }
-
-// -----------------------------------------------------------------------------
-// TInt CompareUserLabels( const CCTCertInfo& cert1, const CCTCertInfo& cert2 )
-// Compares two labels.
-// -----------------------------------------------------------------------------
-//
-TInt CompareUserLabels(
- const CpCertManUICertData& cert1,
- const CpCertManUICertData& cert2 )
- {
- return ( (cert1.iUserEntryLabel->Des()).
- CompareF( cert2.iUserEntryLabel->Des() ) );
- }
-
-// -----------------------------------------------------------------------------
-// TInt ComparePeerLabels( const CCTCertInfo& cert1, const CCTCertInfo& cert2 )
-// Compares two labels.
-// -----------------------------------------------------------------------------
-//
-TInt ComparePeerLabels(
- const CpCertManUICertData& cert1,
- const CpCertManUICertData& cert2 )
- {
- return ( (cert1.iPeerEntryLabel->Des()).
- CompareF( cert2.iPeerEntryLabel->Des() ) );
- }
-
-// -----------------------------------------------------------------------------
-// TInt CompareDeviceLabels( const CCTCertInfo& cert1, const CCTCertInfo& cert2 )
-// Compares two labels.
-// -----------------------------------------------------------------------------
-//
-TInt CompareDeviceLabels(
- const CpCertManUICertData& cert1,
- const CpCertManUICertData& cert2 )
- {
- return ( (cert1.iDeviceEntryLabel->Des()).
- CompareF( cert2.iDeviceEntryLabel->Des() ) );
- }
-
-
-// ================= HELPER CLASS ===========================
-
-// Constructor.
-CpCertManUICertData::CpCertManUICertData()
- {
- }
-
-// Destructor.
-CpCertManUICertData::~CpCertManUICertData()
- {
- delete iCAEntryLabel;
- delete iUserEntryLabel;
- delete iPeerEntryLabel;
- delete iDeviceEntryLabel;
- }
-
-// Releases Certificate entries.
-void CpCertManUICertData::Release()
- {
- RDEBUG("0", 0);
- if ( iCAEntry )
- {
- iCAEntry->Release();
- }
-
- if ( iUserEntry )
- {
- iUserEntry->Release();
- }
-
- if ( iPeerEntry )
- {
- iPeerEntry->Release();
- }
-
- if ( iDeviceEntry )
- {
- iDeviceEntry->Release();
- }
-
- delete this;
- }
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::CCertManUIKeeper()
-// Constructor with parent
-// ---------------------------------------------------------
-//
-CpCertDataContainer::CpCertDataContainer()
- {
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::~CCertManUIKeeper()
-// Destructor
-// ---------------------------------------------------------
-//
-CpCertDataContainer::~CpCertDataContainer()
- {
- iCALabelEntries.Close();
- iUserLabelEntries.Close();
- iPeerLabelEntries.Close();
- iDeviceLabelEntries.Close();
-
- if ( iWrapper )
- {
- iWrapper->Cancel();
- }
- delete iWrapper;
-
- delete iFilter;
- delete iKeyFilter;
- delete iStore;
- delete iKeyStore;
-
- iCAEntries.Close();
- iUserEntries.Close();
- iPeerEntries.Close();
- iDeviceEntries.Close();
- iKeyEntries.Close();
-
- iRfs.Close();
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper* CCertManUIKeeper::NewL(const TRect& aRect, TUid aViewId)
-// ---------------------------------------------------------
-//
-
-CpCertDataContainer* CpCertDataContainer::NewL()
- {
- CpCertDataContainer* self = new ( ELeave ) CpCertDataContainer;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper* CCertManUIKeeper::NewLC(
-// const TRect& aRect, TUid aViewId)
-// ---------------------------------------------------------
-//
-CpCertDataContainer* CpCertDataContainer::NewLC()
- {
- CpCertDataContainer* self = new ( ELeave ) CpCertDataContainer;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::ConstructL(
- // const TRect& aRect, TUid aViewId
-//
-// ---------------------------------------------------------
-//
-void CpCertDataContainer::ConstructL()
- {
- RDEBUG("0", 0);
- // Ensure that file server session is succesfully created
- User::LeaveIfError( iRfs.Connect() );
-
- TRAPD ( error, iStore = CUnifiedCertStore::NewL( iRfs, ETrue ) );
-
- if ( error == KErrNotSupported || error == KErrNotReady
- || error == KErrArgument || error == KErrNotFound )
- {
- // Something may be wrong with the databases
- ShowErrorNoteL( error );
- }
-
- User::LeaveIfError( error );
-
- iWrapper = CpCertManUISyncWrapper::NewL();
- iWrapper->InitStoreL( iStore );
-
- iFilter = CCertAttributeFilter::NewL();
-
- TRAP( error, iKeyStore = CUnifiedKeyStore::NewL( iRfs ) );
-
- if (error == KErrNotSupported || error == KErrNotReady
- || error == KErrArgument || error == KErrNotFound)
- {
- // Something is wrong with key stores
- ShowErrorNoteL( error );
- }
-
- User::LeaveIfError( error );
-
- iWrapper->InitStoreL( iKeyStore );
- iKeyEntries.Close();
-
- }
-
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::CertManager()
-// ---------------------------------------------------------
-//
-CUnifiedCertStore*& CpCertDataContainer::CertManager()
- {
- return iStore;
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::KeyManager()
-// ---------------------------------------------------------
-//
-CUnifiedKeyStore*& CpCertDataContainer::KeyManager()
- {
- return iKeyStore;
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::RefreshCAEntriesL()
-// Checks that cacerts.dat file is not corrupted and
-// returns CA certificates from it
-// ---------------------------------------------------------
-//
-void CpCertDataContainer::RefreshCAEntriesL()
- {
- RDEBUG("0", 0);
- iFilter->SetOwnerType( ECACertificate );
- iCAEntries.Close();
- CUnifiedCertStore*& store = CertManager();
- iWrapper->ListL( store, &iCAEntries, *iFilter );
-
- iCALabelEntries.Close();
- for ( TInt ii = 0; ii < iCAEntries.Count(); ii++ )
- {
- switch ( iCAEntries[ii]->CertificateFormat() )
- {
- case EX509Certificate:
- {
- CpCertManUICertData* data = new ( ELeave ) CpCertManUICertData();
- CleanupStack::PushL( data );
- data->iCAEntry = CCTCertInfo::NewL( *iCAEntries[ii] );
-
- HBufC* pri = NULL;
- HBufC* sec = NULL;
-
- CCertificate* cert;
-
- TRAPD(err, iWrapper->GetCertificateL( CertManager(), *iCAEntries[ii], cert ));
- if (( err == KErrArgument ) || ( err == KErrCorrupt ))
- {
- // This indicates that certificate is not according to X509
- // specification or it is corrupted. Ignore certificate
- if(data->iCAEntry)
- {
- data->iCAEntry->Release();
- }
- CleanupStack::PopAndDestroy( data ); // data
- continue;
- }
- else
- {
- User::LeaveIfError( err );
- }
-
- CleanupStack::PushL( cert );
-
- X509CertNameParser::PrimaryAndSecondaryNameL
- ( *((CX509Certificate*)cert), pri, sec, iCAEntries[ii]->Label());
-
- CleanupStack::PushL( pri );
- CleanupStack::PushL( sec );
-
- TInt lenght = 0;
-
- lenght += iCAEntries[ii]->Label().Length();
-
- if ( pri )
- {
- lenght += pri->Length();
- }
- if ( sec && !(iCAEntries[ii]->Label().Length()) )
- {
- lenght += sec->Length();
- }
- lenght += KNameSeparator.iTypeLength;
-
- HBufC* label = HBufC::NewL( lenght );
- label->Des().Append( iCAEntries[ii]->Label() );
-
- if ( pri )
- {
- label->Des().Append( KNameSeparator );
- label->Des().Append( pri->Des() );
- }
- if ( sec && !(iCAEntries[ii]->Label().Length()) )
- {
- label->Des().Append( sec->Des() );
- }
-
- data->iCAEntryLabel = label;
- iCALabelEntries.Append( data );
-
- CleanupStack::PopAndDestroy( 3, cert ); // pri, sec
- CleanupStack::Pop( data );
- break;
- } // EX509Certificate
-
- case EWTLSCertificate:
- // Do nothing for wtls certificates
- break;
- default:
- {
- User::Leave( KErrNotSupported );
- }
- } // switch
-
- } // for
-
- // Sort the certificates.
- TLinearOrder<CpCertManUICertData> order( CompareCALabels );
- iCALabelEntries.Sort( order );
-
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::RefreshPeerCertEntriesL()
-// Checks that Trusted site certificate store is
-// not corrupted and returns Peer certificates from it
-// ---------------------------------------------------------
-//
-void CpCertDataContainer::RefreshPeerCertEntriesL()
- {
- RDEBUG("0", 0);
- iFilter->SetOwnerType( EPeerCertificate );
- iPeerEntries.Close();
- CUnifiedCertStore*& store = CertManager();
-
- iWrapper->ListL( store, &iPeerEntries, *iFilter, KCMTrustedServerTokenUid );
-
- iPeerLabelEntries.Close();
-
- for ( TInt ii = 0; ii < iPeerEntries.Count(); ii++ )
- {
- switch ( iPeerEntries[ii]->CertificateFormat() )
- {
- case EX509Certificate:
- {
- CpCertManUICertData* data = new (ELeave) CpCertManUICertData();
- CleanupStack::PushL( data );
- data->iPeerEntry = CCTCertInfo::NewL( *iPeerEntries[ii] );
-
- CCertificate* cert;
-
- TRAPD( err, iWrapper->GetCertificateL( CertManager(), *iPeerEntries[ii], cert, KCMTrustedServerTokenUid ));
- if (( err == KErrArgument ) || ( err == KErrCorrupt ))
- {
- // This indicates that certificate is not according to X509
- // specification or it is corrupted. Ignore certificate
- if( data->iPeerEntry )
- {
- data->iPeerEntry->Release();
- }
- CleanupStack::PopAndDestroy( data ); // data
- continue;
- }
- else
- {
- User::LeaveIfError( err );
- }
-
- CleanupStack::PushL( cert );
-
- TInt lenght = 0;
-
- lenght += iPeerEntries[ii]->Label().Length();
-
- HBufC* label = HBufC::NewL( lenght );
- label->Des().Append( iPeerEntries[ii]->Label() );
-
- data->iPeerEntryLabel = label;
- iPeerLabelEntries.Append( data );
-
- CleanupStack::PopAndDestroy( cert ); // cert
- CleanupStack::Pop( data ); // data
- break;
- } // EX509Certificate
-
- case EWTLSCertificate:
- // Do nothing for wtls certificates
- break;
- default:
- {
- User::Leave( KErrNotSupported );
- }
- } // switch
-
- } // for
-
- // Sort the certificates.
- TLinearOrder<CpCertManUICertData> order( ComparePeerLabels );
- iPeerLabelEntries.Sort( order );
-
- }
-
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::RefreshUserCertEntriesL()
-// Checks that cacerts.dat file is not corrupted and
-// returns User certificates from it
-// ---------------------------------------------------------
-//
-void CpCertDataContainer::RefreshUserCertEntriesL()
- {
- RDEBUG("0", 0);
- iFilter->SetOwnerType( EUserCertificate );
- iUserEntries.Close();
- CUnifiedCertStore*& store = CertManager();
- iWrapper->ListL( store, &iUserEntries, *iFilter );
-
- iUserLabelEntries.Close();
-
- for ( TInt i = 0; i < iUserEntries.Count(); i++ )
- {
-
- if ( iUserEntries[i]->Handle().iTokenHandle.iTokenTypeUid == KCMDeviceCertStoreTokenUid )
- {
- // User certificates from DeviceCertStore are not
- // shown in Personal certificate view. Ignore this certificate.
- break;
- }
-
- switch ( iUserEntries[i]->CertificateFormat() )
- {
- case EX509Certificate:
- {
- CpCertManUICertData* data = new (ELeave) CpCertManUICertData();
- CleanupStack::PushL( data );
- data->iUserEntry = CCTCertInfo::NewL( *iUserEntries[i] );
-
- HBufC* pri = NULL;
- HBufC* sec = NULL;
-
- CCertificate* cert = NULL;
- TRAPD(error, iWrapper->GetCertificateL( CertManager(), *iUserEntries[i], cert ));
-
- if( error == KErrArgument)
- {
- CleanupStack::PopAndDestroy( data );
- break;
- }
- else if ( error != KErrNone )
- {
- User::Leave( error );
- }
- else
- {
- CleanupStack::PushL( cert );
- }
-
- X509CertNameParser::PrimaryAndSecondaryNameL
- ( *((CX509Certificate*)cert), pri, sec, iUserEntries[i]->Label());
-
- CleanupStack::PushL( pri );
- CleanupStack::PushL( sec );
-
- TInt lenght = 0;
-
- lenght += iUserEntries[i]->Label().Length();
-
- if ( pri )
- {
- lenght += pri->Length();
- }
- if ( sec && !(iUserEntries[i]->Label().Length()) )
- {
- lenght += sec->Length();
- }
- lenght += KNameSeparator.iTypeLength;
-
- HBufC* label = HBufC::NewL( lenght );
- label->Des().Append( iUserEntries[i]->Label() );
-
- if ( pri )
- {
- label->Des().Append( KNameSeparator );
- label->Des().Append( pri->Des() );
- }
- if ( sec && !(iUserEntries[i]->Label().Length()) )
- {
- label->Des().Append( sec->Des() );
- }
-
- data->iUserEntryLabel = label;
- iUserLabelEntries.Append( data );
-
- CleanupStack::PopAndDestroy( 3, cert ); // pri, sec
- CleanupStack::Pop( data ); // data
- break;
- } // EX509Certificate
-
- case EX509CertificateUrl:
- {
- CpCertManUICertData* urlCertData = new (ELeave) CpCertManUICertData();
- CleanupStack::PushL( urlCertData );
- urlCertData->iUserEntry = CCTCertInfo::NewL( *iUserEntries[i] );
-
- CCertificate* cert = NULL;
- TRAPD(error, iWrapper->GetCertificateL( CertManager(), *iUserEntries[i], cert ));
- if( error == KErrArgument )
- {
- CleanupStack::PopAndDestroy( urlCertData ); // urlCertData
- break;
- }
- else if ( error != KErrNone )
- {
- User::Leave(error);
- }
- else
- {
- CleanupStack::PushL( cert );
- }
-
- _LIT(KUrlUserCert, "URL UserCert");
- HBufC* UrlLabel = HBufC::NewL( KUrlUserCert().Length() );
- UrlLabel->Des().Append( KUrlUserCert());
-
- urlCertData->iUserEntryLabel = UrlLabel;
- iUserLabelEntries.Append( urlCertData );
-
- CleanupStack::PopAndDestroy( cert ); // cert
- CleanupStack::Pop( urlCertData ); // data
- break;
- }
- } // switch
-
- } // for
-
- // Sort the certificates.
- TLinearOrder<CpCertManUICertData> order( CompareUserLabels );
- iUserLabelEntries.Sort( order );
-
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::RefreshDeviceCertEntriesL()
-// returns device certificates
-// ---------------------------------------------------------
-//
-void CpCertDataContainer::RefreshDeviceCertEntriesL()
- {
- RDEBUG("0", 0);
- iFilter->SetOwnerType( EUserCertificate );
- iDeviceEntries.Close();
- CUnifiedCertStore*& store = CertManager();
-
- iWrapper->ListL( store, &iDeviceEntries, *iFilter, KCMDeviceCertStoreTokenUid );
-
- iDeviceLabelEntries.Close();
- for ( TInt i = 0; i < iDeviceEntries.Count(); i++ )
- {
- switch ( iDeviceEntries[i]->CertificateFormat() )
- {
- case EX509Certificate:
- {
- CpCertManUICertData* data = new (ELeave) CpCertManUICertData();
- CleanupStack::PushL( data );
- data->iDeviceEntry = CCTCertInfo::NewL( *iDeviceEntries[i] );
-
- HBufC* pri = NULL;
- HBufC* sec = NULL;
-
- CCertificate* cert = NULL;
- TRAPD(error, iWrapper->GetCertificateL( CertManager(), *iDeviceEntries[i], cert, KCMDeviceCertStoreTokenUid ));
-
- if( error == KErrArgument)
- {
- CleanupStack::PopAndDestroy( data );
- break;
- }
- else if ( error != KErrNone )
- {
- User::Leave( error );
- }
- else
- {
- CleanupStack::PushL( cert );
- }
-
- X509CertNameParser::PrimaryAndSecondaryNameL
- ( *((CX509Certificate*)cert), pri, sec, iDeviceEntries[i]->Label());
-
- CleanupStack::PushL( pri );
- CleanupStack::PushL( sec );
-
- TInt lenght = 0;
-
- lenght += iDeviceEntries[i]->Label().Length();
-
- if ( pri )
- {
- lenght += pri->Length();
- }
- if ( sec && !(iDeviceEntries[i]->Label().Length()) )
- {
- lenght += sec->Length();
- }
- lenght += KNameSeparator.iTypeLength;
-
- HBufC* label = HBufC::NewL( lenght );
- label->Des().Append( iDeviceEntries[i]->Label() );
-
- if ( pri )
- {
- label->Des().Append( KNameSeparator );
- label->Des().Append( pri->Des() );
- }
- if ( sec && !(iDeviceEntries[i]->Label().Length()) )
- {
- label->Des().Append( sec->Des() );
- }
-
- data->iDeviceEntryLabel = label;
- iDeviceLabelEntries.Append( data );
-
- CleanupStack::PopAndDestroy( 3, cert ); // pri, sec
- CleanupStack::Pop( data ); // data
- break;
- } // EX509Certificate
-
- case EX509CertificateUrl:
- {
- CpCertManUICertData* urlCertData = new (ELeave) CpCertManUICertData();
- CleanupStack::PushL( urlCertData );
- urlCertData->iDeviceEntry = CCTCertInfo::NewL( *iDeviceEntries[i] );
-
- CCertificate* cert = NULL;
- TRAPD(error, iWrapper->GetCertificateL( CertManager(), *iDeviceEntries[i], cert, KCMDeviceCertStoreTokenUid ));
- if( error == KErrArgument)
- {
- CleanupStack::PopAndDestroy( urlCertData ); // urlCertData
- break;
- }
- else if ( error != KErrNone )
- {
- User::Leave(error);
- }
- else
- {
- CleanupStack::PushL( cert );
- }
-
- _LIT(KUrlUserCert, "URL UserCert");
- HBufC* UrlLabel = HBufC::NewL( KUrlUserCert().Length() );
- UrlLabel->Des().Append( KUrlUserCert());
-
-
- urlCertData->iDeviceEntryLabel = UrlLabel;
- iDeviceLabelEntries.Append( urlCertData );
-
- CleanupStack::PopAndDestroy( cert ); // cert
- CleanupStack::Pop( urlCertData ); // data
- break;
- }
- } // switch
-
- } // for
-
- // Sort the certificates.
- TLinearOrder<CpCertManUICertData> order( CompareDeviceLabels );
- iDeviceLabelEntries.Sort( order );
-
- }
-
-// ---------------------------------------------------------
-// CCertManUIKeeper::ShowErrorNoteL( TInt aError )
-// Shows error note
-// ---------------------------------------------------------
-//
-void CpCertDataContainer::ShowErrorNoteL( TInt aError )
- {
- QString sError;
- switch ( aError )
- {
- case KErrCorrupt:
- {
- sError = "Database corrupted. Some data might have been lost.";
- break;
- }
- case KErrCancel:
- {
- // Show nothing
- break;
- }
- default:
- {
- sError = "Internal error";
- break;
- }
- }
-
- if ( sError.length() != 0 )
- {
- HbMessageBox::information(sError);
- }
- }
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpcertdetailview.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,887 +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:
-*
-*/
-#include <cctcertinfo.h>
-#include <x509cert.h>
-#include <unifiedcertstore.h>
-#include <X509CertNameParser.h>
-#include <securitydefs.h>
-#include <hash.h> // MD5 fingerprint
-#include <asymmetrickeys.h>
-
-#include <e32math.h> // Pow
-#include <e32cmn.h>
-
-#include <QDateTime>
-#include <QStringList>
-#include <QGraphicsLinearLayout>
-
-#include <hblineedit.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbmessagebox.h>
-#include <HbListWidget>
-#include <HbListWidgetItem>
-#include <HbGroupBox>
-#include <hbpushbutton.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <../../inc/cpsecplugins.h>
-#include "cpcertdetailview.h"
-#include "cpcertview.h"
-#include "cpcertdatacontainer.h"
-#include "cpcertmanuisyncwrapper.h"
-#include "../../../pkiutilities/DeviceToken/Inc/TrustedSitesStore.h"
-
-const TInt KFileCertStoreUid( 0x101F501A );
-const TInt KTrustedServerCertStoreUid( 0x101FB66F );
-const TInt KDeviceCertStoreUid( 0x101FB668 );
-const TInt KDeviceKeyStoreUid( 0x101FB66A );
-const TInt KWIMCertStoreUid ( 0x101F79D9 );
-
-const TInt KMaxLengthTextSerialNumberFormatting = 3;
-_LIT( KCertManUIDetailsViewHexaFormat, "%02X" );
-_LIT( KBlockSeparator, " " );
-
-template <class T>
-class CleanupResetAndDestroy
- {
-public:
- inline static void PushL( T& aRef );
-private:
- static void ResetAndDestroy( TAny *aPtr );
- };
-
-template <class T>
-inline void CleanupResetAndDestroyPushL( T& aRef );
-
-template <class T>
-inline void CleanupResetAndDestroy<T>::PushL( T& aRef )
- {
- CleanupStack::PushL( TCleanupItem( &ResetAndDestroy, &aRef ) );
- }
-
-template <class T>
-void CleanupResetAndDestroy<T>::ResetAndDestroy( TAny *aPtr )
- {
- if( aPtr )
- {
- static_cast<T*>( aPtr )->ResetAndDestroy();
- }
- }
-
-template <class T>
-inline void CleanupResetAndDestroyPushL( T& aRef )
- {
- CleanupResetAndDestroy<T>::PushL( aRef );
- }
-
-CpCertDetailView::CpCertDetailView(CpCertView::TCertificateViews aCurrentView,TInt aPos, CpCertDataContainer& aCertDataContainer, QGraphicsItem *parent /*= 0*/)
-: CpBaseSettingView(0,parent), mCertDataContainer(aCertDataContainer)
- {
- setTitle(tr("Certificate Details"));
-
- try
- {
- QT_TRAP_THROWING(viewCertificateDetailsL(aPos, aCurrentView));
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- throw(exception);
- }
- }
-
-
-CpCertDetailView::~CpCertDetailView()
- {}
-
-void CpCertDetailView::viewCertificateDetailsL( TInt aIndex, CpCertView::TCertificateViews aType )
- {
- RDEBUG("0", 0);
- QGraphicsLinearLayout *layout = q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical));
- setLayout(layout);
-
- HbListWidget* mCertDetails = q_check_ptr(new HbListWidget(this));
-
- HBufC8* urlBuf = NULL;
- CCertificate* details = NULL;
- CUnifiedCertStore*& store = mCertDataContainer.CertManager();
-
- const CCTCertInfo* entry = certInfo(aIndex, aType);
- TCertificateFormat certificateFormat = entry->CertificateFormat();
-
- if( certificateFormat != EX509CertificateUrl )
- {
- mCertDataContainer.iWrapper->GetCertificateL( store, *entry, details );
- CleanupStack::PushL( details );
- validateCertificateL( aIndex, *details, *entry, aType );
- }
- else
- {
- urlBuf = HBufC8::NewLC( entry->Size() );
- TPtr8 urlPtr = urlBuf->Des();
- mCertDataContainer.iWrapper->GetUrlCertificateL( store, *entry, urlPtr );
- }
-
- if( aType == CpCertView::ETrustedView )
- {
- addTrustedSitesL(*details, *mCertDetails);
- }
- else
- {
- addLabel(*entry, *mCertDetails);
- }
- RDEBUG("0", 0);
- // certificate issuer and owner
- if( certificateFormat == EX509Certificate )
- {
- addIssuerL(*details, *mCertDetails);
- addSubjectL(*details, *mCertDetails);
- }
-
- // Get key usage and location. This is done only client certificates.
- const TInt KLocationUnknown = 0;
- TUid keyLocation = { KLocationUnknown };
-
- if(( aType == CpCertView::EPersonalView ) || ( aType == CpCertView::EDeviceView ))
- {
- TKeyUsagePKCS15 usage = keyUsageAndLocationL( *entry, &keyLocation );
- addCertUsage(usage, *mCertDetails);
- }
- RDEBUG("0", 0);
- if( certificateFormat == EX509Certificate )
- {
- addValidityPeriod( *details, *mCertDetails );
- TUid certLoc;
- certLoc.iUid = entry->Token().TokenType().Type().iUid;
- // add the location of the certificate
- setLocationInfo( ETrue, certLoc, *mCertDetails );
- }
- else if( certificateFormat == EX509CertificateUrl )
- {
- setURLLocation( *urlBuf, *mCertDetails );
- }
- else
- {
- // nothing
- }
-
- addCertFormat(certificateFormat, *mCertDetails);
-
- // Private key location, only for user and device certicates
- if(( aType == CpCertView::EPersonalView ) || ( aType == CpCertView::EDeviceView ))
- {
- setLocationInfo( EFalse, keyLocation, *mCertDetails );
- }
-
- if( certificateFormat == EX509Certificate )
- {
- addAlgoDetails( *details, *mCertDetails);
- addSerialNo( *details, *mCertDetails );
- addFingerprint( *details, *mCertDetails);
- addPublicKeyDetailsL( *details, *mCertDetails );
- }
- else
- {
- // SetUrlCertAlgorihm()
- }
- RDEBUG("0", 0);
- if( certificateFormat != EX509CertificateUrl )
- {
- CleanupStack::PopAndDestroy( details );
- }
- else
- {
- CleanupStack::PopAndDestroy( urlBuf );
- }
-
- layout->addItem(mCertDetails);
- }
-
-const CCTCertInfo* CpCertDetailView::certInfo( TInt index, CpCertView::TCertificateViews certView )
- {
- RDEBUG("0", 0);
- const CCTCertInfo* certinfo = NULL;
-
- if( certView == CpCertView::EAuthorityView )
- {
- certinfo = ( mCertDataContainer.iCALabelEntries )[ index ]->iCAEntry;
- }
- else if( certView == CpCertView::ETrustedView )
- {
- certinfo = ( mCertDataContainer.iPeerLabelEntries )[ index ]->iPeerEntry;
- }
- else if( certView == CpCertView::EDeviceView )
- {
- certinfo = ( mCertDataContainer.iDeviceLabelEntries )[ index ]->iDeviceEntry;
- }
- else if( certView == CpCertView::EPersonalView )
- {
- certinfo = ( mCertDataContainer.iUserLabelEntries )[ index ]->iUserEntry;
- }
- return certinfo;
- }
-
-void CpCertDetailView::addTrustedSitesL( const CCertificate& certDetails, HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- CTrustSitesStore* trustedSitesStore = CTrustSitesStore::NewL();
- CleanupStack::PushL( trustedSitesStore );
-
- RPointerArray<HBufC> trustedSites;
- CleanupResetAndDestroyPushL( trustedSites );
- trustedSitesStore->GetTrustedSitesL( certDetails.Encoding(), trustedSites );
-
- QString sTrustedSites = "Site:";
- if( trustedSites.Count() > 0 )
- {
- // display trusted sites
- sTrustedSites = "Site:";
- }
- addToListWidget(certDisplayDetails, sTrustedSites);
-
- for(int index=0;index<trustedSites.Count(); ++index)
- {
- QString trustedSiteDetail = QString((QChar*)(trustedSites[index]->Ptr()), trustedSites[index]->Length());
- addToListWidget(certDisplayDetails, trustedSiteDetail);
- }
-
- CleanupStack::PopAndDestroy( &trustedSites );
- CleanupStack::PopAndDestroy( trustedSitesStore );
-
- }
-
-void CpCertDetailView::addLabel( const CCTCertInfo& aCertInfo, HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- QString sLabel("Label:");
- QString sLabelDetails = "(No label)";
- if(aCertInfo.Label().Length() != 0)
- {
- sLabelDetails = QString((QChar*)(aCertInfo.Label().Ptr()),aCertInfo.Label().Length());
- }
- addToListWidget(certDisplayDetails, sLabel, sLabelDetails);
- }
-
-void CpCertDetailView::addIssuerL( const CCertificate& aCertDetails,
- HbListWidget& certDisplayDetails )
- {
- HBufC* issuer = NULL;
- X509CertNameParser::IssuerFullNameL( (CX509Certificate&)aCertDetails, issuer );
- CleanupStack::PushL( issuer );
-
- QString sIssuer = "Issuer:";
- QString sIssuerDetails = "(Not defined)";
- if(issuer->Des().Length() != 0)
- {
- sIssuerDetails = QString((QChar*)issuer->Des().Ptr(),issuer->Des().Length());
- }
- addToListWidget(certDisplayDetails, sIssuer, sIssuerDetails);
-
- CleanupStack::PopAndDestroy( issuer );
- }
-
-void CpCertDetailView::addSubjectL( const CCertificate& aCertDetails,
- HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- HBufC* subject = NULL;
- X509CertNameParser::SubjectFullNameL( (CX509Certificate&)aCertDetails, subject );
- CleanupStack::PushL( subject );
-
- QString sSubject = "Subject:";
- QString sSubjectDetails = "(No subject)";
- if(subject->Des().Length() != 0)
- {
- sSubjectDetails = QString((QChar*)subject->Des().Ptr(),subject->Des().Length());
- }
-
- addToListWidget(certDisplayDetails, sSubject, sSubjectDetails);
-
- CleanupStack::PopAndDestroy( subject );
- }
-
-void CpCertDetailView::addCertUsage( TKeyUsagePKCS15 usage, HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- QString strUsage;
- switch( usage )
- {
- case EPKCS15UsageSignSignRecover:
- case EPKCS15UsageSignDecrypt:
- case EPKCS15UsageSign:
- strUsage = "Client authentication";
- break;
- case EPKCS15UsageNonRepudiation:
- strUsage = "Digital signing";
- break;
- default:
- strUsage = "(Not defined)";
- break;
- }
- addToListWidget(certDisplayDetails, strUsage );
- }
-
-
-void CpCertDetailView::addValidityPeriod( const CCertificate& aCertDetails,
- HbListWidget& certDisplayDetails)
- {
- RDEBUG("0", 0);
- // Certificate validity period
- // Hometime's offset to UTC
- TLocale locale;
- TTimeIntervalSeconds offSet = locale.UniversalTimeOffset();
-
- QString sValidFrom("Valid from: ");
- const CValidityPeriod& validityPeriod = aCertDetails.ValidityPeriod();
- TTime startValue = validityPeriod.Start();
- startValue += offSet;
- TDateTime dateTime = startValue.DateTime();
- TMonth month = dateTime.Month();
- TInt day = dateTime.Day();
- TInt year = dateTime.Year();
- QDateTime qValidityPeriod(QDate(year, month, day));
- QString sValidFromDetail = qValidityPeriod.toString("MM\\dd\\yyyy");
-
- addToListWidget(certDisplayDetails, sValidFrom, sValidFromDetail);
-
- QString sValidUntil("Valid until: ");
- TTime finishValue = validityPeriod.Finish();
- finishValue += offSet;
- dateTime = finishValue.DateTime();
- month = dateTime.Month();
- day = dateTime.Day();
- year = dateTime.Year();
- qValidityPeriod.setDate(QDate(year, month, day));
- QString sValidUntilDetail = qValidityPeriod.toString("MM\\dd\\yyyy");
-
- addToListWidget(certDisplayDetails, sValidUntil, sValidUntilDetail);
-
- }
-
-void CpCertDetailView::setURLLocation( HBufC8& urlDetails, HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- TPtr8 urlPtr = urlDetails.Des();
-
- QString certUrl = "Location:";
- QString certURLDetail = "(Not defined)";
- TInt length = urlPtr.Length();
- if(length != 0)
- {
- certURLDetail = QString((QChar*)urlPtr.Ptr(),urlPtr.Length());
- }
- addToListWidget(certDisplayDetails, certUrl, certURLDetail);
- }
-
-void CpCertDetailView::addCertFormat( TCertificateFormat aCertFormat, HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- // certificate format
- QString certFormat = "Certificate format:";
- QString certFormatDetails = "(Not defined)";
- if( aCertFormat == EX509Certificate || aCertFormat == EX509CertificateUrl)
- {
- certFormatDetails = "X509";
- }
- addToListWidget(certDisplayDetails, certFormat, certFormatDetails);
- }
-
-void CpCertDetailView::addAlgoDetails( const CCertificate& certificate,
- HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- // certificate algorithms
- QString sDgstAlgoDetails = "Unknown";
- // digest algorithm
- TAlgorithmId algorithmId = certificate.SigningAlgorithm().DigestAlgorithm().Algorithm();
- switch( algorithmId )
- {
- case EMD2:
- {
- sDgstAlgoDetails = "MD2";
- break;
- }
- case EMD5:
- {
- sDgstAlgoDetails = "MD5";
- break;
- }
- case ESHA1:
- {
- sDgstAlgoDetails = "SHA1";
- break;
- }
- }
-
- QString sAsymmetricAlgoDetails = asymmetricAlgoId(certificate);
- QString sAlgorithm("Algorithm:");
- QString sAlgoDetails = "Unknown";
- // If other algorithm is unknown
- if( sDgstAlgoDetails != "Unknown" && sAsymmetricAlgoDetails != "Unknown" )
- {
- sAlgoDetails = sDgstAlgoDetails;
- sAlgoDetails.append(sAsymmetricAlgoDetails);
- }
- addToListWidget(certDisplayDetails, sAlgorithm, sAlgoDetails);
- }
-
-void CpCertDetailView::addSerialNo( const CCertificate& certificate,
- HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- // certificate serial number
- QString sCertSerialNo("Serial number:");
- QString sCertSerialNoDetails = 0;
- TPtrC8 serialNumber = certificate.SerialNumber();
- TBuf<KMaxLengthTextSerialNumberFormatting> buf2;
-
- for( TInt i = 0; i < serialNumber.Length(); i++ )
- {
- buf2.Format( KCertManUIDetailsViewHexaFormat, serialNumber[i] );
- sCertSerialNoDetails.append( QString( (QChar*)buf2.Ptr(),buf2.Length() ) );
- }
- addToListWidget(certDisplayDetails, sCertSerialNo, sCertSerialNoDetails);
- }
-
-void CpCertDetailView::addFingerprint( const CCertificate& certificate,
- HbListWidget& certDisplayDetails)
- {
- RDEBUG("0", 0);
- // certificate fingerprint SHA-1
- QString sSha1("Fingerprint (SHA1):");
- TPtrC8 sha1_fingerprint = certificate.Fingerprint();
- HBufC* finalSha1 = NULL;
- QString sSha1Details = NULL;
-
- QT_TRAP_THROWING
- (
- finalSha1 = HBufC::NewLC(100);
- TPtr finalShaPtr = finalSha1->Des();
- divideIntoBlocks( sha1_fingerprint, finalShaPtr );
- sSha1Details = QString( (QChar*)finalShaPtr.Ptr(), finalShaPtr.Length() );
- CleanupStack::PopAndDestroy(finalSha1);
- )
-
- addToListWidget(certDisplayDetails, sSha1, sSha1Details);
-
- // certificate fingerprint MD5
- QString sMd5("Fingerprint (MD5):");
- CMD5* md5= NULL;
- QT_TRAP_THROWING
- (
- md5 = CMD5::NewL();
- CleanupStack::PushL( md5 );
- TBuf8<20> fingerprint = md5->Hash( certificate.Encoding() );
- CleanupStack::PopAndDestroy( md5 );
- HBufC* finalMd5 = NULL;
- finalMd5 = HBufC::NewLC(100);
- TPtr finalMd5Ptr = finalMd5->Des();
- divideIntoBlocks( fingerprint, finalMd5Ptr );
- QString sMd5Details = QString( (QChar*)finalMd5Ptr.Ptr(), finalMd5Ptr.Length());
- CleanupStack::PopAndDestroy(finalMd5);
- addToListWidget(certDisplayDetails, sMd5, sMd5Details);
- )
- }
-
-void CpCertDetailView::addPublicKeyDetailsL( const CCertificate& certificate,
- HbListWidget& certDisplayDetails )
- {
- RDEBUG("0", 0);
- // Public key
- // Should look like: "Public key (%0U %1N bit):"
-
- QString sPublicKey("Public key ("); // %S %d bits):");
- sPublicKey.append(asymmetricAlgoId(certificate));
-
- // Get public key already here to get length of it for string loader.
- const CSubjectPublicKeyInfo& publicKey = certificate.PublicKey();
- TPtrC8 keyData = publicKey.KeyData();
- TInt size = keyData.Size(); // %1N
-
- // To get key size decode DER encoded key got from the certificate.
- TX509KeyFactory key;
-
- // There doesn't seem to be definition of MAX_INT anywhere so calculate it.
- TReal maxInt;
- TReal intBits = sizeof( TInt ) * 8;
- Math::Pow( maxInt, 2, intBits );
- maxInt = ( maxInt / 2 ) - 1;
-
- TAlgorithmId algorithmId = certificate.SigningAlgorithm().AsymmetricAlgorithm().Algorithm();
- switch( algorithmId )
- {
- case ERSA:
- {
- const CRSAPublicKey* keyRSA = key.RSAPublicKeyL( keyData );
-
- const TInteger& n = keyRSA->N();
-
- TUint keySizeN = n.BitCount();
-
- // Play it safe.
- if( keySizeN < maxInt )
- {
- size = keySizeN;
- }
-
- delete keyRSA;
-
- break;
- }
- case EDSA:
- {
- TPtrC8 params = publicKey.EncodedParams();
- const CDSAPublicKey* keyDSA = key.DSAPublicKeyL( params, keyData );
-
- const TInteger& y = keyDSA->Y();
-
- TUint keySizeY = y.BitCount();
-
- // Play it safe.
- if( keySizeY < maxInt )
- {
- size = keySizeY;
- }
-
- delete keyDSA;
-
- break;
- }
- // There doesn't seem to be TX509KeyFactory function for DH keys.
- // If the key is DH or unknown, just multiply length of the key
- // in bytes with 8. It is not correct but at least gives an idea.
- // Without setting something to size 'unknown' text should be used
- // below for the string which is much more error prone than setting
- // at least something.
- case EDH:
- default:
- {
- size = 8 * keyData.Size();
- }
- }
-
- sPublicKey.append(" ").append(QString::number(size)).append(" bits):");
-
- // Finally append the public key.
- HBufC* pubKey = HBufC::NewLC(size*3);
- TPtr pubKeyPtr = pubKey->Des();
- divideIntoBlocks( keyData, pubKeyPtr );
- QString sPublicKeyDetails = QString ( (QChar*)pubKeyPtr.Ptr(), pubKeyPtr.Length());
- CleanupStack::PopAndDestroy(pubKey);
- addToListWidget(certDisplayDetails, sPublicKey, sPublicKeyDetails);
- }
-
-QString CpCertDetailView::asymmetricAlgoId( const CCertificate& certificate )
- {
- RDEBUG("0", 0);
- QString sAsymmetricAlgoId = 0;
- // public-key algorithm
- TAlgorithmId algorithmId = certificate.SigningAlgorithm().AsymmetricAlgorithm().Algorithm();
- switch( algorithmId )
- {
- case ERSA:
- {
- sAsymmetricAlgoId = "RSA";
- break;
- }
- case EDSA:
- {
- sAsymmetricAlgoId = "DSA";
- break;
- }
- case EDH:
- {
- sAsymmetricAlgoId = "DH";
- break;
- }
- default:
- {
- sAsymmetricAlgoId = "Unknown";
- }
- }
- return sAsymmetricAlgoId;
- }
-
-void CpCertDetailView::addToListWidget(HbListWidget& certDisplayDetails, const QString& data )
- {
- HbListWidgetItem* wItem = q_check_ptr(new HbListWidgetItem());
- wItem->setText(data);
- certDisplayDetails.addItem(wItem);
- }
-
-void CpCertDetailView::addToListWidget( HbListWidget& certDisplayDetails,
- const QString& displayString,
- const QString& displayDetails )
- {
- HbListWidgetItem* wDisplayString = q_check_ptr(new HbListWidgetItem());
- wDisplayString->setText(displayString);
- certDisplayDetails.addItem(wDisplayString);
-
- HbListWidgetItem* wDisplayDetails = q_check_ptr(new HbListWidgetItem());
- wDisplayDetails->setText(displayDetails);
- certDisplayDetails.addItem(wDisplayDetails);
- }
-
-void CpCertDetailView::validateCertificateL(
- TInt aIndex, const CCertificate& certDetails, const CCTCertInfo& aCertInfo, CpCertView::TCertificateViews aType )
- {
- RDEBUG("0", 0);
- TInt poppableItems = 0;
- // Check allways first the validity period
- // Show Expired/Not yet valid notes
- const CValidityPeriod& validityPeriod = certDetails.ValidityPeriod();
- const TTime& startValue = validityPeriod.Start();
- const TTime& finishValue = validityPeriod.Finish();
- TTime current;
- current.UniversalTime();
-
- if ( startValue > current )
- {
- // certificate is not valid yet
- HbMessageBox::warning("The certificate is not valid yet");
- }
- else if ( finishValue < current )
- {
- // certificate is expired
- HbMessageBox::warning("The certificate has expired");
- }
- else
- {
- // put here check for certificate status, show warning notes if needed
- TBool noValidationError = ETrue;
- CArrayFixFlat<TValidationError>* validationError = NULL;
- // set it to the most common cert format
- TCertificateFormat certificateFormat = EX509Certificate;
-
- if ( aType == CpCertView::EAuthorityView )
- {
- certificateFormat = mCertDataContainer.iCALabelEntries[aIndex]->
- iCAEntry->CertificateFormat();
- }
- else if ( aType == CpCertView::ETrustedView )
- {
- certificateFormat = mCertDataContainer.iPeerLabelEntries[aIndex]->
- iPeerEntry->CertificateFormat();
- }
- else if ( aType == CpCertView::EDeviceView )
- {
- certificateFormat = mCertDataContainer.iDeviceLabelEntries[aIndex]->
- iDeviceEntry->CertificateFormat();
- }
- else if( aType == CpCertView::EPersonalView )
- {
- certificateFormat = mCertDataContainer.iUserLabelEntries[aIndex]->
- iUserEntry->CertificateFormat();
- }
-
- switch ( certificateFormat )
- {
- case EX509Certificate:
- {
- validationError = validateX509CertificateL((CX509Certificate&)certDetails );
- break;
- }
- default:
- {
- validationError = new ( ELeave) CArrayFixFlat<TValidationError>( 1 );
- break;
- }
- }
- CleanupStack::PushL( validationError );
- poppableItems++;
-
- TInt errorCount = validationError->Count();
- TBool ready = EFalse;
- for ( TInt i = 0; i < errorCount && !ready; i++ )
- {
- TValidationError errorType = validationError->At(i);
-
- switch ( errorType )
- {
- case EValidatedOK:
- case EChainHasNoRoot:
- case EBadKeyUsage:
- // Ignore these errors
- //LOG_WRITE( "Ignored certificate validation error" );
- break;
-
- default:
- // certificate is corrupted
- noValidationError = EFalse;
- HbMessageBox::warning("The certificate is corrupted");
- ready = ETrue;
- break;
- }
- }
-
- if ( noValidationError && (aType == CpCertView::EAuthorityView ))
- // Check for last if the CA certificate has no clients,
- // ie. the trust state of every client is No
- // For user certificates we don't do the check
- {
-
- RArray<TUid> trusterUids;
- CleanupClosePushL( trusterUids );
- poppableItems++;
-
- mCertDataContainer.iWrapper->GetApplicationsL(
- mCertDataContainer.CertManager(), aCertInfo, trusterUids );
-
- if ( trusterUids.Count() == 0)
- {
- HbMessageBox::warning("Certificate not trusted");
- }
- }
- }
- CleanupStack::PopAndDestroy( poppableItems );
- }
-
-CArrayFixFlat<TValidationError>* CpCertDetailView::validateX509CertificateL( const CX509Certificate& certDetails )
- {
- RDEBUG("0", 0);
- TInt poppableItems = 0;
- CArrayFixFlat<TValidationError>* validationError =
- new ( ELeave ) CArrayFixFlat<TValidationError>( 1 );
- CleanupStack::PushL( validationError ); //This is returned, so it isn't destroyed at the end.
-
- TTime GMTTime;
- GMTTime.UniversalTime(); // Get Universal Time
- RPointerArray<CX509Certificate> certArray;
- certArray.Append( &certDetails );
-
- CPKIXCertChain* chain = CPKIXCertChain::NewLC(
- mCertDataContainer.iRfs, certDetails.Encoding(), certArray );
- ++poppableItems;
-
- CPKIXValidationResult* result = CPKIXValidationResult::NewLC();
- ++poppableItems;
- mCertDataContainer.iWrapper->ValidateX509RootCertificateL( result, GMTTime, chain );
-
- TValidationStatus validationStatus = result->Error();
- //Set reserve space. One for error, other for warnings.
- validationError->SetReserveL( 1 + result->Warnings().Count() );
- validationError->AppendL(validationStatus.iReason);
- for ( TUint8 i = 0; i < result->Warnings().Count(); i++ )
- {
- validationError->AppendL( result->Warnings().At(0).iReason );
- }
-
- CleanupStack::PopAndDestroy( poppableItems, chain ); // All but validationError.
- CleanupStack::Pop(validationError);
- return validationError;
- }
-
-TKeyUsagePKCS15 CpCertDetailView::keyUsageAndLocationL( const CCTCertInfo& certEntry,
- TUid* keyLocation )
- {
- TKeyUsagePKCS15 keyUsage;
- RDEBUG("0", 0);
- // Check whether we have key for this certificate
- RMPointerArray<CCTKeyInfo> keyEntry;
- TCTKeyAttributeFilter filter;
- filter.iKeyId = certEntry.SubjectKeyId();
-
- mCertDataContainer.iWrapper->ListL( mCertDataContainer.KeyManager(), &keyEntry, filter );
-
- if (keyEntry.Count())
- {
- keyUsage = keyEntry[0]->Usage();
- // Get Location
- keyLocation->iUid = keyEntry[0]->Token().TokenType().Type().iUid ;
- }
- else
- {
- keyUsage = EPKCS15UsageNone;
- }
-
- keyEntry.Close();
- return keyUsage;
- }
-
-// ---------------------------------------------------------
-// CCertManUICertificateHelper::setLocationInfo( (HBufC& aMessage,
-// TBool certificate,
-// TUid* aLocUid)
-// Adds certificate/private key's location info to certificate details
-// ---------------------------------------------------------
-//
-void CpCertDetailView::setLocationInfo(TBool certificate, TUid locUid, HbListWidget& certDisplayDetails)
- {
- RDEBUG("0", 0);
- QString locationDetails = "(Not defined)";
-
- switch ( locUid.iUid )
- {
- case KFileCertStoreUid:
- case KTrustedServerCertStoreUid:
- case KDeviceCertStoreUid:
- case KDeviceKeyStoreUid:
- case KTokenTypeFileKeystore:
- locationDetails = "Phone memory";
- break;
-
- case KWIMCertStoreUid:
- locationDetails = "Smart card";
- break;
-
- default:
- if ( !certificate )
- {
- locationDetails = "No private key";
- }
- break;
- }
-
- QString location = "Location:";
- if ( !certificate )
- {
- location = "Private key location:";
- }
-
- addToListWidget(certDisplayDetails, location, locationDetails );
-
- }
-
-// ---------------------------------------------------------
-// CCertManUICertificateHelper::divideIntoBlocks
-// ---------------------------------------------------------
-//
-void CpCertDetailView::divideIntoBlocks( const TDesC8& input, TPtr& output )
- {
- RDEBUG("0", 0);
- const TInt KBlockLength = 2;
- TInt blockIndex = 0;
- for ( TInt j = 0 ; j < input.Length() ; j++ )
- {
- if ( blockIndex == KBlockLength )
- {
- output.Append( KBlockSeparator );
- blockIndex = 0;
- }
- output.AppendNumFixedWidthUC( (TUint)(input[ j ]), EHex, 2 );
- ++blockIndex;
- }
- }
-
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpcertmanuisyncwrapper.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,777 +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: Implements a synchronous wrapper for easier use of Symbian's
-* Security Frameworks's API's.
-*
-*/
-
-
-// INCLUDE FILES
-#include <unifiedcertstore.h>
-#include <unifiedkeystore.h>
-#include <mctwritablecertstore.h>
-#include <x509cert.h>
-#include <pkixcertchain.h>
-#include <../../inc/cpsecplugins.h>
-#include "cpcertmanuisyncwrapper.h"
-
-// CONSTANTS
-_LIT_SECURITY_POLICY_C1( KKeyStoreUsePolicy, ECapabilityReadUserData );
-// Maximum length of a certificate
-const TInt KMaxCertificateLength = 5000;
-const TInt KMaxKeyLength = 10000;
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::ListL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::ListL(
- CUnifiedCertStore*& aStore,
- RMPointerArray<CCTCertInfo>* aArray,
- const CCertAttributeFilter& aFilter,
- const TUid aTokenUid )
- {
- RDEBUG("0", 0);
- if ( IsActive() )
- {
- // Wrapper is active. Don't go further
- User::Leave(KErrGeneral);
- }
-
- TInt count = aStore->CertStoreCount();
- for ( TInt ii = 0; ii < count; ii++ )
- {
- MCTCertStore& certstore = aStore->CertStore( ii );
- MCTToken& token = certstore.Token();
- TUid tokenuid = token.Handle().iTokenTypeUid;
- if ( tokenuid == aTokenUid )
- {
- certstore.List( *aArray, aFilter, iStatus );
- iOperation = EOperationList;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- break;
- }
- }
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::ListL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::ListL(
- CUnifiedKeyStore*& aStore,
- RMPointerArray<CCTKeyInfo>* aArray,
- const TCTKeyAttributeFilter& aFilter )
- {
- RDEBUG("0", 0);
- if ( IsActive() )
- {
- // Wrapper is active. Don't go further
- User::Leave(KErrGeneral);
- }
-
- aStore->List( *aArray, aFilter, iStatus );
- iOperation = EOperationKeyList;
- iKeyStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::GetCertificateL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::GetCertificateL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- CCertificate*& aCert,
- TUid aTokenUid )
- {
- aCert = NULL;
- RDEBUG("0", 0);
- HBufC8* buf = HBufC8::NewLC( KMaxCertificateLength );
- iCertPtr.Set( buf->Des() );
-
- TInt count = aStore->CertStoreCount();
- for (TInt i = 0; i < count; i++)
- {
- MCTCertStore& certstore = aStore->CertStore( i );
- MCTToken& token = certstore.Token();
- TUid tokenuid = token.Handle().iTokenTypeUid;
- if ( tokenuid == aTokenUid )
- {
- certstore.Retrieve( aCertInfo, iCertPtr, iStatus );
- iOperation = EGetCertificate;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- break;
- }
- }
-
-
- switch ( aCertInfo.CertificateFormat() )
- {
- case EX509Certificate:
- {
- aCert = CX509Certificate::NewL( iCertPtr );
- break;
- }
- case EX509CertificateUrl:
- {
- break;
- }
- default:
- {
- break;
- }
- }
-
- CleanupStack::PopAndDestroy(buf);
- iOperation = EOperationNone;
-
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::DeleteCertL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::DeleteCertL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo )
- {
- RDEBUG("0", 0);
- aStore->Remove( aCertInfo, iStatus );
- iOperation = EOperationDelete;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::DeleteCertL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::DeleteCertL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- TUid aTokenUid )
- {
- RDEBUG("0", 0);
- TInt count = aStore->WritableCertStoreCount();
- for (TInt i = 0; i < count; i++)
- {
- MCTWritableCertStore& writablestore = aStore->WritableCertStore( i );
- MCTToken& token = writablestore.Token();
- TUid tokenuid = token.Handle().iTokenTypeUid;
- if ( tokenuid == aTokenUid )
- {
- writablestore.Remove( aCertInfo, iStatus );
- iOperation = EOperationDelete;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- break;
- }
- }
- iOperation = EOperationNone;
- }
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::CpCertManUISyncWrapper()
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CpCertManUISyncWrapper::CpCertManUISyncWrapper() : CActive( EPriorityStandard ), iCertPtr(0,0)
- {
- CActiveScheduler::Add( this );
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::ConstructL()
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::ConstructL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CpCertManUISyncWrapper* CpCertManUISyncWrapper::NewLC()
- {
- CpCertManUISyncWrapper* wrap = new ( ELeave ) CpCertManUISyncWrapper();
- CleanupStack::PushL( wrap );
- wrap->ConstructL();
- return wrap;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CpCertManUISyncWrapper* CpCertManUISyncWrapper::NewL()
- {
- CpCertManUISyncWrapper* wrap = CpCertManUISyncWrapper::NewLC();
- CleanupStack::Pop(wrap);
- return wrap;
- }
-
-// Destructor
-CpCertManUISyncWrapper::~CpCertManUISyncWrapper()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::RunL
-// If no errors happened, stop. Show an error note if needed.
-// -----------------------------------------------------------------------------
-//
-
-void CpCertManUISyncWrapper::RunL()
- {
- RDEBUG("0", 0);
- if ( iWait.IsStarted() )
- {
- iWait.AsyncStop();
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::DoCancel
-// Cancels the ongoing operation if possible.
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::DoCancel()
- {
- RDEBUG("iOperation", iOperation);
- switch ( iOperation )
- {
- case EOperationInit:
- {
- iStore->CancelInitialize();
- break;
- }
- case EOperationList:
- {
- iStore->CancelList();
- break;
- }
- case EGetCertificate:
- {
- iStore->CancelRetrieve();
- break;
- }
- case EAddCertificate:
- {
- iStore->Cancel();
- break;
- }
- case ERetriveURLCertificate:
- {
- iStore->CancelRetrieve();
- break;
- }
- case EOperationDelete:
- {
- iStore->CancelRemove();
- break;
- }
- case EOperationGetApps:
- {
- iStore->CancelApplications();
- break;
- }
- case EOperationValidateX509Root:
- {
- iChain->CancelValidate();
- break;
- }
- case EShowErrorNote:
- {
- break;
- }
- case EOperationInitKeyStore:
- {
- iKeyStore->CancelInitialize();
- break;
- }
- case EOperationKeyList:
- {
- iKeyStore->CancelList();
- break;
- }
- case EOperationExportKey:
- {
- iKeyStore->CancelExportKey();
- break;
- }
- case EOperationImportKey:
- {
- iKeyStore->CancelImportKey();
- break;
- }
- case EOperationDeleteKey:
- {
- iKeyStore->CancelDeleteKey();
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::InitStoreL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::InitStoreL( CUnifiedCertStore*& aStore )
- {
- aStore->Initialize( iStatus );
- iOperation = EOperationInit;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::InitStoreL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::InitStoreL( CUnifiedKeyStore*& aStore )
- {
- aStore->Initialize( iStatus );
- iOperation = EOperationInitKeyStore;
- iKeyStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::ListL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::ListL(
- CUnifiedCertStore*& aStore,
- RMPointerArray<CCTCertInfo>* aArray,
- const CCertAttributeFilter& aFilter )
- {
-
- if ( IsActive() )
- {
- // Wrapper is active. Don't go further
- User::Leave(KErrGeneral);
- }
-
- aStore->List( *aArray, aFilter, iStatus );
- iOperation = EOperationList;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::ListL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::ListL(
- CUnifiedKeyStore*& aStore,
- RMPointerArray<CCTKeyInfo>* aArray,
- const TCTKeyAttributeFilter& aFilter,
- const TUid aTokenUid )
- {
-
- if ( IsActive() )
- {
- // Wrapper is active. Don't go further
- User::Leave(KErrGeneral);
- }
-
- TInt count = aStore->KeyStoreManagerCount();
- for ( TInt ii = 0; ii < count; ii++ )
- {
- MCTKeyStoreManager& keystoremanager = aStore->KeyStoreManager( ii );
- MCTToken& token = keystoremanager.Token();
- TUid tokenuid = token.Handle().iTokenTypeUid;
- if ( tokenuid == aTokenUid )
- {
- keystoremanager.List( *aArray, aFilter, iStatus );
- iOperation = EOperationKeyList;
- iKeyStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- break;
- }
- }
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::GetCertificateL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::GetCertificateL(
- CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- CCertificate*& aCert )
- {
- aCert = NULL;
- HBufC8* buf = HBufC8::NewLC( KMaxCertificateLength );
- iCertPtr.Set( buf->Des() );
- aStore->Retrieve( aCertInfo, iCertPtr, iStatus);
- iOperation = EGetCertificate;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
-
- switch ( aCertInfo.CertificateFormat() )
- {
- case EX509Certificate:
- {
- aCert = CX509Certificate::NewL( iCertPtr );
- break;
- }
- case EX509CertificateUrl:
- {
- break;
- }
- default:
- {
- break;
- }
- }
- CleanupStack::PopAndDestroy(buf);
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::ValidateX509RootCertificateL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::ValidateX509RootCertificateL(
- CPKIXValidationResult*& aValidationResult,
- const TTime& aValidationTime, CPKIXCertChain*& aChain )
- {
-
- aChain->ValidateL( *aValidationResult, aValidationTime, iStatus );
- iOperation = EOperationValidateX509Root;
- iChain = aChain;
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- User::LeaveIfError(iStatus.Int());
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::GetUrlCertificateL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::GetUrlCertificateL(
- CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- TDes8& aUrl )
- {
-
- aStore->Retrieve( aCertInfo, aUrl, iStatus);
- iOperation = ERetriveURLCertificate;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::GetApplicationsL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::GetApplicationsL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo, RArray<TUid>& aApps )
- {
-
- aStore->Applications( aCertInfo, aApps, iStatus );
- iOperation = EOperationGetApps;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::SetApplicabilityL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::SetApplicabilityL( CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- RArray<TUid>& aApplications )
- {
-
- aStore->SetApplicability( aCertInfo, aApplications, iStatus );
- iOperation = EOperationSetApplicability;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- aStore->SetTrust( aCertInfo, ETrue, iStatus );
- iOperation = EOperationSetToTrusted;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::MoveKeyL
-// -----------------------------------------------------------------------------
-//
-void CpCertManUISyncWrapper::MoveKeyL(
- CUnifiedKeyStore*& aStore,
- const TCTKeyAttributeFilter& aFilter,
- const TUid aSourceTokenId,
- const TUid aTargetTokenId )
- {
-
- TInt sourceIndex(-1);
- TInt targetIndex(-1);
-
- // Find the index of key stores
- TInt count = aStore->KeyStoreManagerCount();
-
- for (TInt ii = 0; ii < count; ii++)
- {
- MCTKeyStoreManager& keystoremanager = aStore->KeyStoreManager( ii );
- MCTToken& token = keystoremanager.Token();
- TUid tokenuid = token.Handle().iTokenTypeUid;
-
- if ( tokenuid == aSourceTokenId )
- {
- sourceIndex = ii;
- }
-
- if ( tokenuid == aTargetTokenId )
- {
- targetIndex = ii;
- }
- }
-
- if (( sourceIndex == -1 ) || ( targetIndex == -1 ))
- {
- // Key store(s) doesn't exist
- User::Leave( KErrNotFound );
- }
-
- RMPointerArray<CCTKeyInfo> keyEntries;
-
- MCTKeyStoreManager& sourcekeystore =
- aStore->KeyStoreManager( sourceIndex );
-
- MCTKeyStoreManager& targetkeystore =
- aStore->KeyStoreManager( targetIndex );
-
-
- ListL( aStore, &keyEntries, aFilter, aSourceTokenId );
-
- // Go through all matching keys and move them to
- // target store
- for ( TInt ii = 0; ii < keyEntries.Count(); ii++ )
- {
- HBufC8* keyData = HBufC8::NewLC( KMaxKeyLength );
-
- // Retrieve key from source key store
- sourcekeystore.ExportKey( (*keyEntries[ii]).Handle(), keyData, iStatus );
- iOperation = EOperationExportKey;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
-
- TCTTokenObjectHandle sourceKeyHandle = (*keyEntries[ii]).Handle();
-
- // Import key to target key store
-
- // If key info access type indicates that key is local, then importing is
- // not possible. The following is the workarround. Almost identical
- // copy of keyinfo is created without CCTKeyInfo::ELocal access type flag.
- // UsePolicy is also updated
- TInt accessType = (*keyEntries[ii]).AccessType();
- if ( accessType & CCTKeyInfo::ELocal )
- {
- // CCTKeyInfo::ELocal is set in key info
- HBufC* label = (*keyEntries[ii]).Label().AllocLC();
-
- // The following XOR operation will clear local bit if it is on.
- accessType ^= CCTKeyInfo::ELocal;
-
- CCTKeyInfo* keyInfo = CCTKeyInfo::NewL( (*keyEntries[ii]).ID(),
- (*keyEntries[ii]).Usage(),
- (*keyEntries[ii]).Size(),
- NULL,
- label,
- (*keyEntries[ii]).Token(),
- (*keyEntries[ii]).HandleID(),
- KKeyStoreUsePolicy,
- (*keyEntries[ii]).ManagementPolicy(),
- (*keyEntries[ii]).Algorithm(),
- accessType,
- (*keyEntries[ii]).Native(),
- (*keyEntries[ii]).StartDate(),
- (*keyEntries[ii]).EndDate() );
-
- CleanupStack::Pop(label);
- targetkeystore.ImportKey( *keyData, keyInfo, iStatus );
- }
- else
- {
- targetkeystore.ImportKey( *keyData, keyEntries[ii], iStatus );
- }
-
- iOperation = EOperationImportKey;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
-
- // Delete key from source key store
- sourcekeystore.DeleteKey( sourceKeyHandle, iStatus );
- iOperation = EOperationDeleteKey;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
-
- CleanupStack::PopAndDestroy(keyData);
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CpCertManUISyncWrapper::MoveCertL
-// -----------------------------------------------------------------------------
-//
-TInt CpCertManUISyncWrapper::MoveCertL(
- CUnifiedCertStore*& aStore,
- const CCTCertInfo& aCertInfo,
- const TUid aSourceTokenId,
- const TUid aTargetTokenId )
- {
-
- TInt sourceIndex(-1);
- TInt targetIndex(-1);
- TInt certCount (0);
-
- // Find the index of certificate stores
- TInt count = aStore->WritableCertStoreCount();
- for (TInt ii = 0; ii < count; ii++)
- {
- MCTWritableCertStore& writablestore = aStore->WritableCertStore( ii );
- MCTToken& token = writablestore.Token();
- TUid tokenuid = token.Handle().iTokenTypeUid;
-
- if ( tokenuid == aSourceTokenId )
- {
- sourceIndex = ii;
- }
-
- if ( tokenuid == aTargetTokenId )
- {
- targetIndex = ii;
- }
- }
-
- if (( sourceIndex == -1 ) || ( targetIndex == -1 ))
- {
- // Certificate store(s) doesn't exist
- User::Leave( KErrNotFound );
- }
-
-
- MCTWritableCertStore& sourcewritablestore =
- aStore->WritableCertStore( sourceIndex );
-
- // All of the certificates that are associated with same
- // private key will be moved to target certificate store.
- CCertAttributeFilter* filter = CCertAttributeFilter::NewL();
- filter->SetOwnerType( EUserCertificate );
- filter->SetSubjectKeyId( aCertInfo.SubjectKeyId() );
- RMPointerArray<CCTCertInfo> certEntries;
-
- // List certificates from source certificate store
- ListL( aStore, &certEntries, *filter, aSourceTokenId );
-
- delete filter;
-
- for ( TInt ii = 0; ii < certEntries.Count(); ii++ )
- {
- // Retrieve certificate from source certificate store
- HBufC8* buf = HBufC8::NewLC( KMaxCertificateLength );
- iCertPtr.Set( buf->Des() );
- sourcewritablestore.Retrieve( *certEntries[ii], iCertPtr, iStatus );
- iOperation = EGetCertificate;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
-
- // Add certificate to target certificate store
- MCTWritableCertStore& targetwritablestore =
- aStore->WritableCertStore( targetIndex );
-
- targetwritablestore.Add( (*certEntries[ii]).Label(), EX509Certificate,
- EUserCertificate, &((*certEntries[ii]).SubjectKeyId()),
- &((*certEntries[ii]).IssuerKeyId()), *buf, iStatus );
-
- iOperation = EAddCertificate;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
-
- // Delete certificate from source certificate store
- sourcewritablestore.Remove( *certEntries[ii], iStatus );
- iOperation = EOperationDelete;
- iStore = aStore;
- SetActive();
- iWait.Start();
- User::LeaveIfError( iStatus.Int() );
- iOperation = EOperationNone;
- certCount++;
- CleanupStack::PopAndDestroy(buf);
- }
-
- return certCount;
- }
-
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpcertpluginloader.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +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:
- *
- */
-
-#include <cpsettingformentryitemdataimpl.h>
-
-#include "cpcertpluginloader.h"
-#include "cpsecurityview.h"
-#include <hbapplication.h>
-#include <../../inc/cpsecplugins.h>
-
-CpCertPluginLoader::CpCertPluginLoader()
- {
- RDEBUG("0", 0);
- mTranslator = q_check_ptr( new QTranslator());
- QString path = "z:/resource/qt/translations/";
- QString appName = "certificate_manager_";
- QString lang = QLocale::system().name();
- mTranslator->load(path + appName + lang);
- qApp->installTranslator(mTranslator);
- }
-
-CpCertPluginLoader::~CpCertPluginLoader()
- {
- if (mTranslator)
- {
- if (mTranslator->isEmpty() == false)
- qApp->removeTranslator(mTranslator);
- delete mTranslator;
- }
- }
-
-QList<CpSettingFormItemData*> CpCertPluginLoader::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
- {
- RDEBUG("0", 0);
- CpSettingFormEntryItemData *advancedSecuritySettingsItem =
- new CpSettingFormEntryItemDataImpl<CpSecurityView>(
- CpSettingFormEntryItemData::ButtonEntryItem,
- itemDataHelper, hbTrId("txt_certificate_manager_setlabel_advanced_security"));
- advancedSecuritySettingsItem->setContentWidgetData("textAlignment",
- QVariant( Qt::AlignHCenter | Qt::AlignVCenter) );
- advancedSecuritySettingsItem->setContentWidgetData("objectName",
- "advancedSecuritySettingsButton" );
- return QList<CpSettingFormItemData *>() << advancedSecuritySettingsItem;
- }
-
-Q_EXPORT_PLUGIN2(cpcertpluginloader, CpCertPluginLoader);
--- a/cpsecplugins/cpadvancedsecplugin/src/cpcerttrustview.cpp Thu Oct 07 14:07:34 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
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpcertview.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,928 +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:
-*
-*/
-
-#include <QStringList>
-#include <QGraphicsLinearLayout>
-#include <QModelIndex>
-
-#include <hblineedit.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <HbListWidget>
-#include <HbListWidgetItem>
-#include <HbGroupBox>
-#include <hbpushbutton.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hbabstractviewitem.h>
-#include <hbtextitem.h>
-#include <hbmainwindow.h>
-#include <hblistview.h>
-#include <QStandardItemModel>
-#include <QModelIndexList>
-#include <hbmessagebox.h>
-#include <memory>
-#include <../../inc/cpsecplugins.h>
-#include "cpcertdetailview.h"
-#include "cpcertview.h"
-#include "cpcertdatacontainer.h"
-#include "cpcerttrustview.h"
-#include "cpcertmanuisyncwrapper.h"
-
-
-CpCertView::CpCertView(const QModelIndex& modelIndex, QGraphicsItem *parent /*= 0*/)
- : CpBaseSettingView(0,parent),
- mPopup(NULL), mOkAction(NULL),
- mPrevView(NULL),
- mCurrentView(NULL),
- mRefreshedView(NULL),
- mListView(NULL),
- mSelectAllView(NULL),
- mOriginalView(NULL),
- mNote(NULL)
- {
- RDEBUG("0", 0);
- mOriginalView = mainWindow()->currentView();
-
- HbMenu* menu = this->menu();
- std::auto_ptr<HbAction> deleteAction(new HbAction(hbTrId("txt_common_menu_delete")));
- connect(deleteAction.get(), SIGNAL(triggered()), this, SLOT(deleteList()));
- menu->addAction(deleteAction.get());
- deleteAction.release();
-
- std::auto_ptr<QGraphicsLinearLayout> layout(new QGraphicsLinearLayout(Qt::Vertical));
-
- HbDataForm *form = q_check_ptr(new HbDataForm(this));
- std::auto_ptr<HbDataFormModel> formModel(q_check_ptr(new HbDataFormModel()));
- form->setModel(formModel.get());
- formModel.release();
-
- HbListWidget* certificateList = q_check_ptr(new HbListWidget(this));
-
- CpCertView::TCertificateViews currentView = (CpCertView::TCertificateViews)modelIndex.row();
- QString title;
- if(currentView == EPersonalView)
- {
- title = "Move to Device";
- }
- else if(currentView == EDeviceView)
- {
- title = "Move to Personal";
- }
- RDEBUG("0", 0);
- if(currentView == EPersonalView || currentView == EDeviceView)
- {
- std::auto_ptr<HbAction> moveToDeviceAction(q_check_ptr(new HbAction(title)));
- connect(moveToDeviceAction.get(), SIGNAL(triggered()), this, SLOT(moveCert()));
- menu->addAction(moveToDeviceAction.get());
- moveToDeviceAction.release();
- }
-
- setDetails(currentView);
- TInt count = 0;
- try
- {
- QT_TRAP_THROWING(mCertDataContainer = CpCertDataContainer::NewL());
- QT_TRAP_THROWING(count = refreshListL());
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- throw(exception);
- }
- RDEBUG("0", 0);
- for(int index = 0; index< count; index++)
- {
- QString certificateLabel = certLabel(index);
- std::auto_ptr<HbListWidgetItem> singleCert(q_check_ptr(new HbListWidgetItem()));
- singleCert->setText(certificateLabel);
- certificateList->addItem(singleCert.get());
- singleCert.release();
- } // End of FOR loop
-
- connect(certificateList, SIGNAL(activated(QModelIndex)), this, SLOT(openCertFromList(QModelIndex)));
- connect(certificateList, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF)));
-
- layout->addItem(certificateList);
- setLayout(layout.get());
- layout.release();
-
- mPopup = q_check_ptr(new HbDialog());
- mContextMenu = q_check_ptr(new HbMenu());
-
- RDEBUG("0", 0);
- }
-
-CpCertView::~CpCertView()
- {
- delete mCertDataContainer;
- mCertDataContainer = NULL;
- RDEBUG("0", 0);
- if(mPrevView)
- {
- mPrevView->deleteLater();
- mPrevView= NULL;
- }
- if(mCurrentView)
- {
- mCurrentView->deleteLater();
- mCurrentView= NULL;
- }
- if(mRefreshedView)
- {
- mRefreshedView->deleteLater();
- mRefreshedView= NULL;
- }
- if(mListView)
- {
- mListView->deleteLater();
- mListView= NULL;
- }
-
- if(mSelectAllView)
- {
- mSelectAllView->deleteLater();
- mSelectAllView = NULL;
- }
-
- mSelectionIndex.Close();
-
- mIndexList.Close();
-
- delete mPopup;
-
- delete mNote;
- mNote = NULL;
-
- delete mContextMenu;
-
- }
-
-void CpCertView::setDetails(CpCertView::TCertificateViews currentView)
- {
- RDEBUG("0", 0);
- switch(currentView)
- {
- case EAuthorityView:
- setTitle(hbTrId("txt_certificate_manager_list_authority_certificate"));
- mCertView = EAuthorityView;
- break;
-
- case ETrustedView:
- setTitle(hbTrId("txt_certificate_manager_list_trusted_site_certific"));
- mCertView = ETrustedView;
- break;
-
- case EPersonalView:
- setTitle(hbTrId("txt_certificate_manager_list_personal_certificates"));
- mCertView = EPersonalView;
- break;
-
- case EDeviceView:
- setTitle(hbTrId("txt_certificate_manager_list_device_certificates"));
- mCertView = EDeviceView;
- break;
- }
- }
-
-void CpCertView::indicateLongPress(HbAbstractViewItem *item,QPointF coords)
- {
- RDEBUG("0", 0);
- mPos = item->modelIndex().row(); // Pos will tell you what is the certificate clicked in particular view.
-
- mContextMenu->clearActions();
- std::auto_ptr<HbAction> open(q_check_ptr(new HbAction(hbTrId("txt_common_menu_open"))));
- connect(open.get(), SIGNAL(triggered()), this, SLOT( openCertificate()));
- mContextMenu->addAction(open.get());
- open.release();
-
- QString moveTitle;
-
- if(mCertView == EAuthorityView)
- {
- std::auto_ptr<HbAction> trustSettings(q_check_ptr(new HbAction(hbTrId("txt_certificate_manager_menu_trust_settings"))));
- connect(trustSettings.get(), SIGNAL(triggered()), this, SLOT(showTrustSettings()));
- mContextMenu->addAction(trustSettings.get());
- trustSettings.release();
- }
- else if(mCertView == EPersonalView)
- {
- moveTitle = hbTrId("txt_certificate_manager_menu_move_to_device_certif");
- }
- else if(mCertView == EDeviceView)
- {
- moveTitle = hbTrId("txt_certificate_manager_menu_move_to_personal_cert");
- }
-
- if(mCertView == EPersonalView || mCertView == EDeviceView )
- {
- std::auto_ptr<HbAction> moveCert(q_check_ptr(new HbAction(moveTitle)));
- connect(moveCert.get(), SIGNAL(triggered()), this, SLOT(moveSelectedCert()));
- mContextMenu->addAction(moveCert.get());
- moveCert.release();
- }
-
- RDEBUG("0", 0);
- if( certAt(mPos)->IsDeletable() )
- {
- std::auto_ptr<HbAction> menuDelete(q_check_ptr(new HbAction(hbTrId("txt_common_menu_delete"))));
- connect(menuDelete.get(), SIGNAL(triggered()), this, SLOT(deleteCertificate()));
- mContextMenu->addAction(menuDelete.get());
- menuDelete.release();
- }
- mContextMenu->setPreferredPos(coords);
- mContextMenu->open();
- }
-
-void CpCertView::openCertFromList(const QModelIndex& modelIndex)
- {
- RDEBUG("0", 0);
- // Pos will tell you what is the certificate clicked in particular view.
- mPos = modelIndex.row();
- openCertificate();
- }
-
-void CpCertView::openCertificate()
- {
- RDEBUG("0", 0);
- mCurrentView = q_check_ptr(new CpCertDetailView(mCertView,mPos,*mCertDataContainer));
- connect(mCurrentView, SIGNAL(aboutToClose()), this, SLOT(displayPreviousView()));
- mPrevView = mainWindow()->currentView();
- mainWindow()->addView(mCurrentView);
- mainWindow()->setCurrentView(mCurrentView);
- }
-
-void CpCertView::displayPreviousView()
- {
- RDEBUG("0", 0);
- mainWindow()->removeView(mCurrentView);
- mCurrentView->deleteLater();
- mCurrentView= NULL;
- mainWindow()->setCurrentView(mPrevView);
- }
-
-void CpCertView::deleteCertificate()
- {
- RDEBUG("0", 0);
- RArray<TInt> pos;
- pos.Append(mPos);
- QT_TRAP_THROWING(deleteCertsL(pos));
- }
-
-void CpCertView::deleteList()
- {
- RDEBUG("0", 0);
- mSelectAll = EFalse;
- mPopup->setDismissPolicy(HbDialog::NoDismiss);
- // Set the label as heading widget
- mPopup->setHeadingWidget(q_check_ptr(new HbLabel(hbTrId("txt_certificate_manager_setlabel_certificates"))));
-
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
-
- mSelectAllView = q_check_ptr(new HbListView(this));
- QStandardItemModel* selectAllModel = q_check_ptr(new QStandardItemModel(this));
- // Populate the model with content
- std::auto_ptr<QStandardItem> selectAllItem(q_check_ptr(new QStandardItem()));
- selectAllItem->setData(QString("Select All"),Qt::DisplayRole);
- selectAllModel->appendRow(selectAllItem.get());
- selectAllItem.release();
-
- connect(mSelectAllView, SIGNAL(activated(QModelIndex)), this, SLOT(selectAll()));
- mSelectAllView->setModel(selectAllModel);
- mSelectAllView->setSelectionMode(HbListView::MultiSelection);
- layout->addItem(mSelectAllView);
-
- mListView = q_check_ptr(new HbListView(this));
- // Connect to "activated" signal
- connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemActivated(QModelIndex)));
-
- // Create a model
- QStandardItemModel* model = q_check_ptr(new QStandardItemModel(this));
- TInt count=0;
- QT_TRAP_THROWING( count = refreshListL());
- RDEBUG("0", 0);
- for(TInt index = 0; index < count ; ++index)
- {
- const CCTCertInfo* cert = certAt(index);
- if( cert->IsDeletable() )
- {
- // Populate the model with content
- std::auto_ptr<QStandardItem> certItem(q_check_ptr(new QStandardItem()));
- QString certificateLabel = certLabel(index);
- certItem->setData( certificateLabel, Qt::DisplayRole);
- model->appendRow(certItem.get());
- mSelectionIndex.Append(index);
- certItem.release();
- }
- }
- // Set the model to the list view
- mListView->setModel(model);
- mListView->setSelectionMode(HbListView::MultiSelection);
- layout->addItem(mListView);
-
- std::auto_ptr<HbWidget> widget( q_check_ptr(new HbWidget()));
- widget->setLayout(layout.get());
- layout.release();
- mPopup->setContentWidget(widget.get());
- widget.release();
-
- mPopup->clearActions();
- mOkAction = q_check_ptr(new HbAction(hbTrId("txt_common_opt_delete")));
- mPopup->addAction(mOkAction);
- HbAction *cancelAction = q_check_ptr(new HbAction(hbTrId("txt_common_button_cancel")));
- mPopup->addAction(cancelAction);
- mPopup->setTimeout(HbPopup::NoTimeout);
- RDEBUG("0", 0);
- // Launch popup syncronously
- mPopup->open(this, SLOT(handleMultipleDelete(HbAction*)));
-
-}
-
-void CpCertView::handleMultipleDelete(HbAction* action)
-{
- RDEBUG("0", 0);
- if(action == mOkAction)
- {
- QItemSelectionModel *selectionModel = mListView->selectionModel();
- QModelIndexList mWidgetItemsToRemove = selectionModel->selectedIndexes();
- TInt deleteCount = mWidgetItemsToRemove.count();
- // start deleting from end of array so that the indexes do not changes of the ones
- // at the front.
- RArray<TInt> actualIndex;
- QT_TRAP_THROWING
- (
- CleanupClosePushL(actualIndex);
- for (TInt index = deleteCount-1; index>= 0 ; --index)
- {
- TInt selectedItemIndex = mWidgetItemsToRemove[index].row();
- actualIndex.Append( mSelectionIndex[selectedItemIndex] );
- }
- deleteCertsL(actualIndex);
- CleanupStack::PopAndDestroy(&actualIndex);
- ) // QT_TRAP_THROWING
- }
- RDEBUG("0", 0);
- mListView->deleteLater();
- mListView = NULL;
- mSelectAllView->deleteLater();
- mSelectAllView = NULL;
- }
-
-void CpCertView::moveCert()
- {
- RDEBUG("0", 0);
- mSelectAll = EFalse;
- mPopup->setDismissPolicy(HbDialog::NoDismiss);
- // Set the label as heading widget
- if(mCertView == EPersonalView)
- {
- mPopup->setHeadingWidget(q_check_ptr(new HbLabel(tr("Move To Device"))));
- }
- else if(mCertView == EDeviceView)
- {
- mPopup->setHeadingWidget(q_check_ptr(new HbLabel(tr("Move To Personal"))));
- }
-
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
-
- mSelectAllView = q_check_ptr(new HbListView(this));
- QStandardItemModel* selectAllModel = q_check_ptr(new QStandardItemModel(this));
- // Populate the model with content
- std::auto_ptr<QStandardItem> selectAllItem(q_check_ptr(new QStandardItem()));
- selectAllItem->setData(QString("Select All"),Qt::DisplayRole);
- selectAllModel->appendRow(selectAllItem.get());
- selectAllItem.release();
- connect(mSelectAllView, SIGNAL(activated(QModelIndex)), this, SLOT(selectAll()));
- mSelectAllView->setModel(selectAllModel);
- mSelectAllView->setSelectionMode(HbListView::MultiSelection);
- layout->addItem(mSelectAllView);
-
- mListView = q_check_ptr(new HbListView(this));
- // Connect to "activated" signal
- connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemActivated(QModelIndex)));
-
- // Create a model
- QStandardItemModel* model = q_check_ptr(new QStandardItemModel(this));
- TInt count =0;
- RDEBUG("0", 0);
- QT_TRAP_THROWING(count = refreshListL());
- for(TInt index = 0; index < count ; ++index)
- {
- // Populate the model with content
- std::auto_ptr<QStandardItem> certItem(q_check_ptr(new QStandardItem()));
- QString certificateLabel = certLabel(index);
- certItem->setData( certificateLabel, Qt::DisplayRole);
- model->appendRow(certItem.get());
- mSelectionIndex.Append(index);
- certItem.release();
- }
-
- // Set the model to the list view
- mListView->setModel(model);
- mListView->setSelectionMode(HbListView::MultiSelection);
- layout->addItem(mListView);
-
- std::auto_ptr<HbWidget> widget(q_check_ptr(new HbWidget()));
- widget->setLayout(layout.get());
- layout.release();
- mPopup->setContentWidget(widget.get());
- widget.release();
- RDEBUG("0", 0);
- mPopup->clearActions();
- mOkAction = q_check_ptr(new HbAction(tr("Yes")));
- mPopup->addAction(mOkAction);
- HbAction *noAction = q_check_ptr(new HbAction(tr("No")));
- mPopup->addAction(noAction);
- mPopup->setTimeout(HbPopup::NoTimeout);
-
- // Launch popup syncronously
- mPopup->open(this, SLOT(handleMoveCertDialog(HbAction*)));
- RDEBUG("0", 0);
-}
-
-void CpCertView::handleMoveCertDialog(HbAction* action)
-{
- RDEBUG("0", 0);
- if(action == mOkAction)
- {
- QItemSelectionModel *selectionModel = mListView->selectionModel();
- QModelIndexList mWidgetItemsToRemove = selectionModel->selectedIndexes();
- TInt deleteCount = mWidgetItemsToRemove.count();
- // start deleting from end of array so that the indexes do not changes of the ones
- // at the front.
- RArray<TInt> actualIndex;
- RDEBUG("0", 0);
- QT_TRAP_THROWING
- (
- CleanupClosePushL(actualIndex);
- for (TInt index = deleteCount-1; index>= 0 ; --index)
- {
- TInt selectedItemIndex = mWidgetItemsToRemove[index].row();
- actualIndex.Append(mSelectionIndex[selectedItemIndex]);
- }
- moveCertList(actualIndex);
- CleanupStack::PopAndDestroy(&actualIndex);
- )
- }
- mListView->deleteLater();
- mListView = NULL;
- mSelectAllView->deleteLater();
- mSelectAllView = NULL;
- RDEBUG("0", 0);
- }
-
-void CpCertView::selectAll()
- {
- RDEBUG("0", 0);
- if(mSelectAll == EFalse)
- {
- mListView->selectAll();
- mSelectAll= ETrue;
- }
- else
- {
- mListView->clearSelection();
- mSelectAll= EFalse;
- }
- }
-
-void CpCertView::deleteCertsL( RArray<TInt>& indexList )
- {
- RDEBUG("0", 0);
- TInt count = indexList.Count();
- for(int index = 0;index <count;++index )
- {
- mIndexList.Append(indexList[index]);
- }
-
- mNote = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
- QString deleteMsg;
- QString sCount;
- if(count == 1)
- {
- deleteMsg = "Delete %1?";
- const CCTCertInfo* entry = certAt(indexList[0]);
- sCount = QString((QChar*)entry->Label().Ptr(),entry->Label().Length());
- }
- else
- {
- deleteMsg = "Delete %1 items?";
- sCount.setNum(count);
- }
- RDEBUG("0", 0);
- deleteMsg = deleteMsg.arg(sCount);
- mNote->setText(deleteMsg);
- mNote->setTimeout(HbPopup::NoTimeout);
- mNote->open(this,SLOT(handleDeleteDialog(HbAction*)));
-
-}
-
-void CpCertView::handleDeleteDialog(HbAction* action)
-{
- RDEBUG("0", 0);
- TInt count = mIndexList.Count();
-
- if (action != mNote->primaryAction() || count == 0 )
- {
- return;
- }
-
- RPointerArray<CCTCertInfo> errCerts;
- QT_TRAP_THROWING(
- CleanupClosePushL(errCerts);
-
- for(TInt index = 0; index < count; ++index)
- {
- const CCTCertInfo* entry = certAt(mIndexList[index]);
-
- if( mCertView == EPersonalView || mCertView == EAuthorityView )
- {
- mCertDataContainer->iWrapper->DeleteCertL(
- mCertDataContainer->CertManager(), *entry );
- }
- else if( mCertView == ETrustedView )
- {
- mCertDataContainer->iWrapper->DeleteCertL(
- mCertDataContainer->CertManager(),*entry, KCMTrustedServerTokenUid );
- }
- else if( mCertView == EDeviceView )
- {
- mCertDataContainer->iWrapper->DeleteCertL(
- mCertDataContainer->CertManager(), *entry, KCMDeviceCertStoreTokenUid );
- }
- errCerts.AppendL(entry);
- }
- RDEBUG("0", 0);
- if(errCerts.Count() > 0)
- {
- QString message("Unable to delete the following certificate: \n");
- TInt count = errCerts.Count();
- for(TInt index=0;index<count;++index)
- {
- const TDesC& certLabel = errCerts[index]->Label();
- QString certName = QString((QChar*)certLabel.Ptr(),certLabel.Length());
- message.append(certName).append("\n");
- }
- HbMessageBox::warning(message);
- }
- count = refreshListL();
- refreshView(count);
-
- CleanupStack::PopAndDestroy(&errCerts);
- ) // QT_TRAP_THROWING
-
- delete mNote;
- mNote = NULL;
- RDEBUG("0", 0);
- }
-
-const CCTCertInfo* CpCertView::certAt(TInt index) const
- {
- RDEBUG("0", 0);
- CCTCertInfo* currentCert = NULL;
- switch(mCertView)
- {
- case EAuthorityView:
- {
- currentCert = mCertDataContainer->iCALabelEntries[ index ]->iCAEntry;
- break;
- }
- case ETrustedView:
- {
- currentCert = mCertDataContainer->iPeerLabelEntries[ index ]->iPeerEntry;
- break;
- }
- case EDeviceView:
- {
- currentCert = mCertDataContainer->iDeviceLabelEntries[ index ]->iDeviceEntry;
- break;
- }
- case EPersonalView:
- {
- currentCert = mCertDataContainer->iUserLabelEntries[ index ]->iUserEntry;
- break;
- }
- };
- return currentCert;
- }
-
-QString CpCertView::certLabel(TInt index) const
- {
- RDEBUG("0", 0);
- CpCertManUICertData* certData = NULL;
- HBufC* label = NULL;
- TInt length = 0;
- switch(mCertView)
- {
- case EAuthorityView:
- {
- certData = mCertDataContainer->iCALabelEntries[index];
- label = certData->iCAEntryLabel;
- length = certData->iCAEntryLabel->Length();
- break;
- }
- case ETrustedView:
- {
- certData = mCertDataContainer->iPeerLabelEntries[index];
- label = certData->iPeerEntryLabel;
- length = certData->iPeerEntryLabel->Length();
- break;
- }
- case EPersonalView:
- {
- certData = mCertDataContainer->iUserLabelEntries[index];
- label = certData->iUserEntryLabel;
- length = certData->iUserEntryLabel->Length();
- break;
- }
- case EDeviceView:
- {
- certData = mCertDataContainer->iDeviceLabelEntries[index];
- label = certData->iDeviceEntryLabel;
- length = certData->iDeviceEntryLabel->Length();
- break;
- }
- }
- return QString((QChar*)label->Des().Ptr(), length);
- }
-
-TInt CpCertView::refreshListL()
- {
- RDEBUG("0", 0);
- TInt count = 0;
- switch(mCertView)
- {
- case EAuthorityView:
- mCertDataContainer->RefreshCAEntriesL();
- count = mCertDataContainer->iCALabelEntries.Count();
- break;
- case ETrustedView:
- mCertDataContainer->RefreshPeerCertEntriesL();
- count = mCertDataContainer->iPeerLabelEntries.Count();
- break;
- case EPersonalView:
- mCertDataContainer->RefreshUserCertEntriesL();
- count = mCertDataContainer->iUserLabelEntries.Count();
- break;
- case EDeviceView:
- mCertDataContainer->RefreshDeviceCertEntriesL();
- count = mCertDataContainer->iDeviceLabelEntries.Count();
- break;
- };
- return count;
- }
-
-
-void CpCertView::refreshView( TInt count )
- {
- RDEBUG("0", 0);
- if(mRefreshedView)
- {
- mRefreshedView->deleteLater();
- mRefreshedView = NULL;
- }
-
- mRefreshedView = q_check_ptr(new CpBaseSettingView());
- switch(mCertView)
- {
- case EAuthorityView:
- {
- mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_authority_certificate"));
- break;
- }
- case ETrustedView:
- {
- mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_trusted_site_certific"));
- break;
- }
- case EPersonalView:
- {
- mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_personal_certificates"));
- break;
- }
- case EDeviceView:
- {
- mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_device_certificates"));
- break;
- }
- }
-
- HbMenu* menu = mRefreshedView->menu();
- RDEBUG("0", 0);
- std::auto_ptr<HbAction> endAction( q_check_ptr(new HbAction(hbTrId("txt_common_opt_delete"))) );
- connect(endAction.get(), SIGNAL(triggered()), this, SLOT(deleteList()));
- menu->addAction(endAction.get());
- endAction.release();
-
- QString title;
- if(mCertView == EPersonalView)
- {
- title = "Move to Device";
- }
- else if(mCertView == EDeviceView)
- {
- title = "Move to Personal";
- }
- std::auto_ptr<HbAction> moveAction(q_check_ptr(new HbAction(title)));
- connect(moveAction.get(), SIGNAL(triggered()), this, SLOT(moveCert()));
- menu->addAction(moveAction.get());
- moveAction.release();
- RDEBUG("0", 0);
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
-
- HbListWidget* mCertificateList = q_check_ptr(new HbListWidget(this));
-
- for(int index = 0; index< count; index++)
- {
- QString certificateLabel = certLabel(index);
- std::auto_ptr<HbListWidgetItem> singleCert(q_check_ptr(new HbListWidgetItem()));
- singleCert->setText(certificateLabel);
- mCertificateList->addItem(singleCert.get());
- singleCert.release();
- } // end of for loop
-
- connect(mCertificateList, SIGNAL(activated(QModelIndex)), this, SLOT(openCertFromList(QModelIndex)));
- connect(mCertificateList, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF)));
-
- layout->addItem(mCertificateList);
- RDEBUG("0", 0);
- // Refresh current view
- QObject::connect(mRefreshedView , SIGNAL(aboutToClose()), this, SLOT(viewDone()));
- mPrevView = mainWindow()->currentView();
- mainWindow()->addView(mRefreshedView);
- mainWindow()->setCurrentView(mRefreshedView);
- mRefreshedView->setLayout(layout.get());
- layout.release();
- RDEBUG("0", 0);
- }
-
-
-void CpCertView::viewDone()
- {
- RDEBUG("0", 0);
- mCurrentView = mainWindow()->currentView();
- mCurrentView->deleteLater();
- mCurrentView= NULL;
- mainWindow()->setCurrentView(mOriginalView);
- }
-void CpCertView::showTrustSettings()
- {
- RDEBUG("0", 0);
- mCurrentView = q_check_ptr(new CpCertTrustView(mPos, *mCertDataContainer));
- connect(mCurrentView , SIGNAL(aboutToClose()), this, SLOT(saveTrustSettings()));
- mPrevView = mainWindow()->currentView();
- mainWindow()->addView(mCurrentView);
- mainWindow()->setCurrentView(mCurrentView);
- }
-
-void CpCertView::saveTrustSettings()
- {
- ((CpCertTrustView*)mCurrentView)->saveTrustSettings();
- displayPreviousView();
- }
-
-void CpCertView::moveSelectedCert()
- {
- RDEBUG("0", 0);
- RArray<TInt> pos;
- pos.Append(mPos);
- moveCertList(pos);
- }
-
-void CpCertView::moveCertList(RArray<TInt>& indexList)
- {
- RDEBUG("0", 0);
- mIndexList = indexList;
- mNote = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
- mNote->setHeadingWidget(q_check_ptr(new HbLabel(hbTrId("txt_certificate_manager_info_move"))));
- if( mCertView == EPersonalView )
- {
- mNote->setText(hbTrId("txt_certificate_manager_info_device_certificates_c"));
- }
- else if( mCertView == EDeviceView )
- {
- mNote->setText("Use of Personal certificates may require user confirmation. Proceed?");
- }
-
- mNote->setTimeout(HbPopup::NoTimeout);
- mNote->setIconVisible (EFalse);
- mNote->open(this,SLOT(handleMoveDialog(HbAction*)));
- RDEBUG("0", 0);
-}
-
-void CpCertView::handleMoveDialog(HbAction* action)
-{
- RDEBUG("0", 0);
- if (action != mNote->primaryAction())
- {
- return;
- }
-
- TInt count = mIndexList.Count();
-
- for(TInt index = 0 ; index < count; ++index)
- {
- CCTCertInfo* entry = NULL;
- if(mCertView == EPersonalView)
- {
- entry = mCertDataContainer->iUserLabelEntries[ mIndexList[index] ]->iUserEntry;
- }
- else if(mCertView == EDeviceView)
- {
- entry = mCertDataContainer->iDeviceLabelEntries[ mIndexList[index] ]->iDeviceEntry;
- }
-
- // Move key first
- TCTKeyAttributeFilter keyFilter;
- keyFilter.iKeyId = entry->SubjectKeyId();
- keyFilter.iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
- RDEBUG("0", 0);
- TUid sourceCertStoreUid = TUid::Uid(0);
- TUid targetCertStoreUid = TUid::Uid(0);
- TUid sourceKeyStoreUid = TUid::Uid(0);
- TUid targetKeyStoreUid = TUid::Uid(0);
-
- if(mCertView == EPersonalView)
- {
- sourceKeyStoreUid = KCMFileKeyStoreTokenUid;
- targetKeyStoreUid = KCMDeviceKeyStoreTokenUid;
- sourceCertStoreUid = KCMFileCertStoreTokenUid;
- targetCertStoreUid = KCMDeviceCertStoreTokenUid;
- }
- else if(mCertView == EDeviceView)
- {
- sourceKeyStoreUid = KCMDeviceKeyStoreTokenUid;
- targetKeyStoreUid = KCMFileKeyStoreTokenUid;
- sourceCertStoreUid = KCMDeviceCertStoreTokenUid;
- targetCertStoreUid = KCMFileCertStoreTokenUid;
- }
- RDEBUG("0", 0);
- try
- {
-
- QT_TRAP_THROWING( mCertDataContainer->iWrapper->MoveKeyL(
- mCertDataContainer->KeyManager(), keyFilter, sourceKeyStoreUid, targetKeyStoreUid ));
-
- // Move certificate
- QT_TRAP_THROWING( mCertDataContainer->iWrapper->MoveCertL(
- mCertDataContainer->CertManager(), *entry, sourceCertStoreUid, targetCertStoreUid ) );
-
- }
- catch(const std::exception& exception)
- {
- QString error(exception.what());
- QT_TRAP_THROWING(mCertDataContainer->ShowErrorNoteL( error.toInt() ));
- User::Exit( KErrNone );
- }
- RDEBUG("0", 0);
- try
- {
- if(mCertView == EPersonalView)
- {
- QT_TRAP_THROWING( mCertDataContainer->RefreshUserCertEntriesL() );
- }
- else if(mCertView == EDeviceView)
- {
- QT_TRAP_THROWING( mCertDataContainer->RefreshDeviceCertEntriesL() );
- }
- }
- catch(const std::exception& exception)
- {
- QString error(exception.what());
- if ( error.toInt() == KErrCorrupt )
- {
- QT_TRAP_THROWING(mCertDataContainer->ShowErrorNoteL( error.toInt()) );
- User::Exit( KErrNone );
- }
- // have to call straight away the Exit
- // showing any error notes would corrupt the display
- User::Exit( error.toInt() );
- }
- } // for
- // Refresh current view
- QT_TRAP_THROWING(refreshView(refreshListL()));
- delete mNote;
- mNote = NULL;
- RDEBUG("0", 0);
- }
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpmoduleview.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +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:
-*
-*/
-
-#include <mctauthobject.h>
-#include <mctkeystore.h>
-
-#include <qstringlist.h>
-#include <qgraphicslinearlayout.h>
-
-#include <hblineedit.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbmessagebox.h>
-#include <hblistwidget.h>
-#include <hblistwidgetitem.h>
-#include <hbgroupbox.h>
-#include <hbpushbutton.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hbmainwindow.h>
-#include <hbabstractviewitem.h>
-
-#include <memory>
-#include <../../inc/cpsecplugins.h>
-#include "cpmoduleview.h"
-#include "cpsecmodmodel.h"
-#include "cpsecmodview.h"
-
-CpModuleView::CpModuleView( CpSecModView::TSecModViews currentView,
- CSecModUIModel& secModUIModel,
- QGraphicsItem *parent /*= 0*/ )
-: CpBaseSettingView(0,parent),
- mCurrentView(currentView),
- mSecModUIModel(secModUIModel)
- {
- RDEBUG("0", 0);
- QString title = mSecModUIModel.TokenLabelForTitle();
- setTitle(title);
-
- mContextMenu = (q_check_ptr(new HbMenu()));
-
- if(currentView == CpSecModView::EAccessView)
- {
- showAccessView();
- }
- else if(currentView == CpSecModView::ESignatureView)
- {
- showSignatureView(ETrue);
- }
- }
-
-CpModuleView::~CpModuleView()
- {}
-
-void CpModuleView::showAccessView()
- {
- RDEBUG("0", 0);
- HbMenu* menu = this->menu();
- std::auto_ptr<HbAction> endAction(q_check_ptr(new HbAction("Module Info")));
- connect(endAction.get(), SIGNAL(triggered()), this, SLOT(saveProv()));
-
- menu->addAction(endAction.get());
- endAction.release();
-
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
-
- std::auto_ptr<HbDataForm> form(q_check_ptr(new HbDataForm()));
- std::auto_ptr<HbDataFormModel> formModel(q_check_ptr(new HbDataFormModel()));
- form->setModel(formModel.get());
- formModel.release();
-
- QString titleName;
- if (mSecModUIModel.KeyStoreUID() == KTokenTypeFileKeystore)
- {
- titleName = "Phone key store code";
- }
- else
- {
- const TDesC& label = mSecModUIModel.AuthObj(KPinGSettIndex).Label();
- titleName = QString((QChar*)label.Ptr(), label.Length());
- }
- RDEBUG("0", 0);
- HbListWidget* accessDetails = q_check_ptr(new HbListWidget(this));
-
- std::auto_ptr<HbListWidgetItem> codeLabel(q_check_ptr(new HbListWidgetItem()));
- codeLabel->setText(titleName);
- accessDetails->addItem(codeLabel.get());
- codeLabel.release();
-
- std::auto_ptr<HbListWidgetItem> codeText(q_check_ptr(new HbListWidgetItem()));
- codeText->setText("****");
- accessDetails->addItem(codeText.get());
- codeText.release();
-
- std::auto_ptr<HbListWidgetItem> requestLabel(q_check_ptr(new HbListWidgetItem()));
- requestLabel->setText("Access Code Request");
- accessDetails->addItem(requestLabel.get());
- requestLabel.release();
-
- TUint32 status = mSecModUIModel.AuthStatus(KPinGSettIndex);
- std::auto_ptr<HbListWidgetItem> requestText(q_check_ptr(new HbListWidgetItem()));
- requestText->setText("Off");
- if (status & EEnabled)
- {
- requestText->setText("On");
- }
- accessDetails->addItem(requestText.get());
- requestText.release();
- RDEBUG("0", 0);
- std::auto_ptr<HbListWidgetItem> statusLabel(q_check_ptr(new HbListWidgetItem()));
- statusLabel->setText("Status");
- accessDetails->addItem(statusLabel.get());
- statusLabel.release();
-
- std::auto_ptr<HbListWidgetItem> statusText(q_check_ptr(new HbListWidgetItem()));
- QString pinStatus = mSecModUIModel.PINStatus(KPinGSettIndex, ETrue);
- statusText->setText(pinStatus);
- accessDetails->addItem(statusText.get());
- statusText.release();
-
- connect(accessDetails, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF)));
- connect(formModel.get(), SIGNAL(activated(QModelIndex)), this, SLOT(handleAccessView(QModelIndex)));
-
- layout->addItem(accessDetails);
- layout->addItem(form.get());
- form.release();
- setLayout(layout.get());
- layout.release();
- RDEBUG("0", 0);
- }
-
-void CpModuleView::showSignatureView(TBool showBlockedNote)
- {
- RDEBUG("0", 0);
- mCurrentView = CpSecModView::ESignatureView;
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
- std::auto_ptr<HbDataForm> form(q_check_ptr(new HbDataForm()));
- std::auto_ptr<HbDataFormModel> formModel(q_check_ptr(new HbDataFormModel()));
-
- QVector< QPair<QString, TUint32> > authDetails = mSecModUIModel.AuthDetails();
- QVectorIterator< QPair<QString, TUint32> > authDetailsIter(authDetails);
-
- HbListWidget* accessDetails = q_check_ptr(new HbListWidget(this));
-
- while(authDetailsIter.hasNext())
- {
- QPair<QString, TUint32> pair = authDetailsIter.next();
- QString label = pair.first;
- TUint32 status = pair.second;
- QString blockedDetails = NULL;
- if ( status & EAuthObjectBlocked)
- {
- if (showBlockedNote)
- {
- QString totalBlocked(" is blocked. PUK code is needed to unblock the code");
- if (status & EUnblockDisabled)
- {
- totalBlocked = " totalblocked, contact your module vendor.";
- }
- totalBlocked.prepend(label);
- HbMessageBox::information(totalBlocked);
- }
- blockedDetails = label.append(" Blocked");
- RDEBUG("0", 0);
- std::auto_ptr<HbListWidgetItem> statusLabel(q_check_ptr(new HbListWidgetItem()));
- statusLabel->setText(tr("Status"));
- accessDetails->addItem(statusLabel.get());
- statusLabel.release();
-
- std::auto_ptr<HbListWidgetItem> statusText(q_check_ptr(new HbListWidgetItem()));
- QString pinStatus = mSecModUIModel.PINStatus(KPinNrSettIndex, ETrue);
- statusText->setText(pinStatus);
- accessDetails->addItem(statusText.get());
- statusText.release();
- }
- else
- {
- std::auto_ptr<HbListWidgetItem> unblockedLabel(q_check_ptr(new HbListWidgetItem()));
- unblockedLabel->setText(label);
- accessDetails->addItem(unblockedLabel.get());
- unblockedLabel.release();
-
- std::auto_ptr<HbListWidgetItem> unblockedText(q_check_ptr(new HbListWidgetItem()));
- unblockedText->setText("****");
- accessDetails->addItem(unblockedText.get());
- unblockedText.release();
- }
- }
- form->setModel(formModel.get());
- formModel.release();
- layout->addItem(accessDetails);
-
- connect(accessDetails, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF)));
- connect(formModel.get(), SIGNAL(activated(QModelIndex)), this, SLOT(handleSigView()));
-
- layout->addItem(form.get());
- form.release();
- setLayout(layout.get());
- layout.release();
- RDEBUG("0", 0);
- }
-
-void CpModuleView::indicateLongPress(HbAbstractViewItem *item,QPointF coords)
- {
- RDEBUG("0", 0);
- try
- {
- mContextMenu->clearActions();
- mPos = item->modelIndex().row();
-
- if(mCurrentView == CpSecModView::EAccessView)
- {
- if( mPos == EIndexCodeLabel && mSecModUIModel.PinChangeable(KPinGSettIndex)
- || mPos == EIndexCodeRequest && mSecModUIModel.PinRequestChangeable(KPinGSettIndex)
- || mPos == EIndexCodeStatus )
- {
- std::auto_ptr<HbAction> changePIN(q_check_ptr(new HbAction("Change")));
- connect(changePIN.get(), SIGNAL(triggered()), this, SLOT( handleAccessView()));
- mContextMenu->addAction(changePIN.get());
- changePIN.release();
- }
- if( mSecModUIModel.PinUnblockable(KPinGSettIndex) )
- {
- std::auto_ptr<HbAction> unblockPIN(q_check_ptr(new HbAction("Unblock")));
- connect(unblockPIN.get(), SIGNAL(triggered()), this, SLOT( handleAccessView()));
- mContextMenu->addAction(unblockPIN.get());
- unblockPIN.release();
- }
- if( mSecModUIModel.PinOpen(KPinGSettIndex) )
- {
- std::auto_ptr<HbAction> closePIN(q_check_ptr(new HbAction("Close")));
- connect(closePIN.get(), SIGNAL(triggered()), this, SLOT( handleAccessView()));
- mContextMenu->addAction(closePIN.get());
- closePIN.release();
- }
- }
- else if(mCurrentView == CpSecModView::ESignatureView)
- {
- if (mSecModUIModel.PinChangeable(KPinNrSettIndex))
- {
- std::auto_ptr<HbAction> changePIN(q_check_ptr(new HbAction("Change")));
- connect(changePIN.get(), SIGNAL(triggered()), this, SLOT( handleSigViewCommand()));
- mContextMenu->addAction(changePIN.get());
- changePIN.release();
- }
- if (mSecModUIModel.PinUnblockable(KPinNrSettIndex))
- {
- std::auto_ptr<HbAction> unblockPIN(q_check_ptr(new HbAction("Unblock")));
- connect(unblockPIN.get(), SIGNAL(triggered()), this, SLOT( handleSigViewCommand()));
- mContextMenu->addAction(unblockPIN.get());
- unblockPIN.release();
- }
- }
-
- mContextMenu->setPreferredPos(coords);
- mContextMenu->open();
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- RDEBUG("0", 0);
- }
-
-void CpModuleView::handleAccessView( const QModelIndex& modelIndex )
- {
- RDEBUG("0", 0);
- try
- {
- mPos = modelIndex.row();
- handleAccessView();
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpModuleView::handleAccessView()
- {
- RDEBUG("0", 0);
- try
- {
- if(mPos == EIndexCodeLabel)
- {
- QT_TRAP_THROWING(mSecModUIModel.ChangeOrUnblockPinL(KPinGSettIndex));
- }
- else if(mPos == EIndexCodeRequest)
- {
- if (KErrCancel == mSecModUIModel.ChangeCodeRequest(KPinGSettIndex))
- {
- return;
- }
- }
- else if ( mPos == EIndexCodeStatus)
- {
- QT_TRAP_THROWING(mSecModUIModel.CloseAuthObjL(KPinGSettIndex));
- }
- showAccessView();
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpModuleView::handleSigView()
- {
- RDEBUG("0", 0);
- try
- {
- QT_TRAP_THROWING(mSecModUIModel.ChangeOrUnblockPinL(KPinNrSettIndex));
- showSignatureView(EFalse);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpModuleView::handleSigViewCommand()
- {
- RDEBUG("0", 0);
- try
- {
- switch(mPos)
- {
- case ESecModUICmdChange:
- QT_TRAP_THROWING(mSecModUIModel.ChangePinNrL(mPos));
- showSignatureView(EFalse);
- break;
- case ESecModUICmdUnblock:
- QT_TRAP_THROWING(mSecModUIModel.UnblockPinNrL(mPos));
- showSignatureView(EFalse);
- break;
- };
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpsecmodmodel.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,935 +0,0 @@
-/*
-* Copyright (c) 2005-2009 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 the CSecModUIModel class
-*
-*/
-
-#include <unifiedkeystore.h>
-#include <mctauthobject.h>
-#include <mctkeystore.h>
-#include <securityerr.h>
-
-#include <qvector.h>
-#include <qpair.h>
-#include <qlabel.h>
-#include <qerrormessage.h>
-#include <qstring.h>
-
-#include <hbmessagebox.h>
-#include <../../inc/cpsecplugins.h>
-#include "cpsecmodmodel.h"
-#include "cpsecmodsyncwrapper.h"
-
-const TInt KWIMStoreUid ( 0x101F79D9 );
-_LIT(KSecModUIPanic, "Security Module UI panic");
-
-// ============================= LOCAL FUNCTIONS ===============================
-GLDEF_C void Panic(TInt aPanic)
- {
- User::Panic(KSecModUIPanic, aPanic);
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::NewL()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSecModUIModel* CSecModUIModel::NewL()
- {
- RDEBUG("0", 0);
- CSecModUIModel* self = new( ELeave ) CSecModUIModel();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::CSecModUIModel
-// C++ default constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-CSecModUIModel::CSecModUIModel()
- {}
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::~CSecModUIModel
-// C++ destructor
-// -----------------------------------------------------------------------------
-//
-
-CSecModUIModel::~CSecModUIModel()
- {
- delete iWrapper;
- ResetAndDestroyCTObjects();
- }
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ResetAndDestroyCTObjects(): Cleans up all objects referenced
-// through the crypto token framework.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ResetAndDestroyCTObjects()
- {
- ResetAndDestroyAOs();
- iAOKeyStores.Reset();
- delete iUnifiedKeyStore;
- iUnifiedKeyStore = NULL;
- iKeyStore = NULL;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ResetAndDestroyAOs(): Cleans up the list of auth objects.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ResetAndDestroyAOs()
- {
- RDEBUG("0", 0);
- if (iAOList)
- {
- iAOList->Release();
- iAOList = NULL;
- }
- if (iAOArray.Count() > 0 &&
- iAOArray[0]->Token().TokenType().Type().iUid == KTokenTypeFileKeystore)
- {
- iAOArray.Reset();
- }
- else
- {
- iAOArray.Close();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ConstructL()
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ConstructL()
- {
- InitializeKeyStoreL();
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::InitializeKeyStoreL()
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::InitializeKeyStoreL()
- {
- RDEBUG("0", 0);
- ResetAndDestroyCTObjects();
-
- // Ensure that file server session is succesfully created
- User::LeaveIfError( iRfs.Connect() );
-
- iUnifiedKeyStore = CUnifiedKeyStore::NewL(iRfs);
-
- if (iWrapper == NULL)
- {
- iWrapper = CSecModUISyncWrapper::NewL();
- }
-
- TInt err = iWrapper->Initialize(*iUnifiedKeyStore);
-
- ShowErrorNote(err);
- if (KErrNone != err && KErrHardwareNotAvailable != err)
- {
- User::Leave(err);
- }
- TInt keyStoreCount = iUnifiedKeyStore->KeyStoreCount();
- if (0 >= keyStoreCount)
- {
- return;
- }
-
- RMPointerArray<CCTKeyInfo> keyInfos;
- CleanupClosePushL(keyInfos);
- TCTKeyAttributeFilter filter;
- TInt keyInfoCount = 0;
- filter.iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
-
- for (TInt i = 0; i < keyStoreCount; i++)
- {
- err = iWrapper->ListKeys(iUnifiedKeyStore->KeyStore(i), keyInfos, filter);
- User::LeaveIfError(err);
- //If list ok, append the AO, otherwise go next
- keyInfoCount = keyInfos.Count();
- for (TInt j = 0; j < keyInfoCount; j++)
- {
- // Check that keystore has at least one AO.
- if (NULL != keyInfos[j]->Protector())
- {
- // If keystore has AO, add it to the array.
- User::LeaveIfError(
- iAOKeyStores.Append(&(iUnifiedKeyStore->KeyStore(i))));
- break;
- }
- }
- }
- CleanupStack::PopAndDestroy(&keyInfos);
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::LoadTokenLabelsL()
-// Retrieves the description and location of all tokens.
-// -----------------------------------------------------------------------------
-//
-QMap<QString,QString> CSecModUIModel::LoadTokenLabelsL()
- {
- RDEBUG("0", 0);
- TInt keyStoreCount = iAOKeyStores.Count();
- QMap<QString, QString> labelList;
-
- if (0 == keyStoreCount)
- {
- return labelList;
- }
-
- for (TInt i = 0; i < keyStoreCount; i++)
- {
- QString keystoreLabel = 0;
- if (iAOKeyStores[i]->Token().TokenType().Type().iUid == KTokenTypeFileKeystore )
- {
- keystoreLabel = "Phone keystore";
- }
- else if(iAOKeyStores[i]->Token().TokenType().Type().iUid == KWIMStoreUid )
- {
- const TDesC& label = iAOKeyStores[i]->Token().Label();
- keystoreLabel = QString( (QChar*) label.Ptr(), label.Length());
- }
- else
- {
- continue;
- }
- QString location = Location(iAOKeyStores[i]->Token().TokenType().Type());
- labelList.insert(keystoreLabel,location);
- }
- return labelList;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::Location()
-// Identifies the location of the keystore based on the Uid.
-// -----------------------------------------------------------------------------
-//
-QString CSecModUIModel::Location( TUid aUid ) const
- {
- RDEBUG("0", 0);
- QString location = 0;
-
- switch ( aUid.iUid )
- {
- case KTokenTypeFileKeystore:
- {
- location = "\nPhone memory";
- break;
- }
- case KWIMStoreUid:
- {
- location = "\nSmart card";
- break;
- }
- default:
- {
- break;
- }
- }
- return location;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ShowErrorNote(TInt aError) const
-// Displays appropriate error message based on the error code.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ShowErrorNote(TInt aError) const
- {
- QString sError;
- RDEBUG("aError", aError);
- switch (aError)
- {
- case KErrCancel:
- case KErrLocked:
- case KErrNone:
- {
- break;
- }
- case KErrInUse:
- {
- sError = "Key is currently in use. Unable to delete. Close applications and try again.";
- break;
- }
- case KErrBadPassphrase:
- {
- sError = "Code incorrect";
- break;
- }
- case KErrHardwareNotAvailable: // flow thru
- default:
- {
- sError = "Security module internal error";
- break;
- }
- }
-
- if ( sError.length() != 0 )
- {
- HbMessageBox::information(sError);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::OpenTokenL(TInt aTokenIndex)
-// Retrieves the appropriate token based on the index.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::OpenTokenL(TInt aTokenIndex)
- {
- RDEBUG("0", 0);
- ResetAndDestroyAOs();
- iKeyStore = iAOKeyStores[aTokenIndex];
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::CheckCodeViewStringsL()
-// Initialize the auth objects and return the total count.
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUIModel::CheckCodeViewStringsL()
- {
- InitAuthObjectsL();
- ListAuthObjectsL();
- return iAOArray.Count();
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::InitAuthObjectsL()
-// Retrieve the authentication object associated with the appropriate key store
-// implementation.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::InitAuthObjectsL()
- {
- RDEBUG("0", 0);
- TInt err = KErrNone;
- // Symbian's file key store does not support
- // MCTAuthenticationObjectList interface, so we need to use
- // other way to get AO.
- if (iKeyStore->Token().TokenType().Type().iUid == KTokenTypeFileKeystore)
- {
- if (iAOArray.Count()==0)
- {
- RMPointerArray<CCTKeyInfo> keyInfos;
- CleanupClosePushL(keyInfos);
- TCTKeyAttributeFilter filter;
- TInt keyInfoCount = 0;
- filter.iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
- err = iWrapper->ListKeys(*iKeyStore, keyInfos, filter);
- ShowErrorNote(err);
- User::LeaveIfError(err);
- keyInfoCount = keyInfos.Count();
- for (TInt j = 0; j < keyInfoCount; j++)
- {
- // Check that keystore has at least one AO.
- if (NULL != keyInfos[j]->Protector())
- {
- // If keystore has AO, add it to the array.
- User::LeaveIfError(iAOArray.Append(keyInfos[j]->Protector()));
- break;
- }
- }
- CleanupStack::PopAndDestroy(&keyInfos); //keyInfos
- }
- }
- else
- {
- if (NULL == iAOList)
- {
- MCTTokenInterface* tokenInterface = NULL;
- err = iWrapper->GetAuthObjectInterface(
- iKeyStore->Token(), tokenInterface);
- if ( KErrNone != err || NULL == tokenInterface )
- {
- ShowErrorNote(err);
- User::Leave(err);
- }
- iAOList = (MCTAuthenticationObjectList*)tokenInterface;
- }
- }
- }
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ListAuthObjectsL()
-// list the auth objects.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ListAuthObjectsL()
- {
- RDEBUG("0", 0);
- if (0 >= iAOArray.Count())
- {
- __ASSERT_ALWAYS(iAOList, Panic(EPanicNullPointer));
- TInt err = iWrapper->ListAuthObjects(*iAOList, iAOArray);
- if (err)
- {
- ShowErrorNote(err);
- User::Leave(err);
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::TokenLabelForTitle() const
-// Retrieves description of the token based on UID of the current active keystore.
-// -----------------------------------------------------------------------------
-//
-QString CSecModUIModel::TokenLabelForTitle() const
- {
- QString qLabel;
- if (iKeyStore->Token().TokenType().Type().iUid
- == KTokenTypeFileKeystore)
- {
- qLabel = "Phone keystore";
- }
- else
- {
- const TDesC& label = iKeyStore->Token().Label();
- qLabel = QString((QChar*)label.Ptr(),label.Length());
- }
- return qLabel;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::AuthStatus(TInt aIndex) const
-// Returns status of the selected auth object.
-// -----------------------------------------------------------------------------
-//
-TUint32 CSecModUIModel::AuthStatus(TInt aIndex) const
- {
- return iAOArray[aIndex]->Status();
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::PINStatus( TInt aIndex, TBool aShowBlockedNote ) const
-// Returns status of the auth object based on its persistent properties set
-// by security module implementation.
-// -----------------------------------------------------------------------------
-//
-QString CSecModUIModel::PINStatus( TInt aIndex, TBool aShowBlockedNote ) const
- {
- RDEBUG("0", 0);
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- QString pinStatus;
- TUint32 status = iAOArray[aIndex]->Status();
-
- if (status & EAuthObjectBlocked)
- {
- if (aShowBlockedNote)
- {
- QString information = 0;
- if (status & EUnblockDisabled)
- {
- information = " totalblocked, contact your module vendor.";
- }
- else
- {
- information = " is blocked. PUK code is needed to unblock the code";
- }
- information.prepend(QString( (QChar*)(iAOArray[aIndex]->Label()).Ptr(),iAOArray[aIndex]->Label().Length() ) );
- HbMessageBox::information(information);
- }
- pinStatus = "Blocked";
- }
- else if ( PinOpen(aIndex) )
- {
- pinStatus = "Open";
- }
- else
- {
- pinStatus = "Closed";
- }
- return pinStatus;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::PinOpen(TInt aIndex) const
-// Checks whether the Pin is still available.
-// -----------------------------------------------------------------------------
-//
-TBool CSecModUIModel::PinOpen(TInt aIndex) const
- {
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TInt timeRemaining = 0;
- TInt err = iWrapper->TimeRemaining(*(iAOArray[aIndex]), timeRemaining);
- TBool ret = ETrue;
- if ( 0 < timeRemaining )
- {
- ret = ETrue;
- }
- else if( timeRemaining == -1 )
- {
- ret = ETrue;
- }
- else
- {
- ret = EFalse;
- }
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ChangeOrUnblockPinL(TInt aIndex)
-// Based on the property of auth object the pin can be changed or unblocked.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ChangeOrUnblockPinL(TInt aIndex)
- {
- RDEBUG("0", 0);
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TUint32 status = iAOArray[aIndex]->Status();
-
- if ((status & EAuthObjectBlocked) && (status & EUnblockDisabled))
- {
- return; // We cannot do anything. PIN is total bolcked.
- }
- else if (status & EAuthObjectBlocked)
- {
- // Let's unblock the PIN
- UnblockPinL(aIndex);
- }
- else if (status & EEnabled)
- {
- // PIN is enabled. Let's change the PIN.
- ChangePinL(aIndex);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::UnblockPinL(TInt aIndex)
-// Unblocks PIN.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::UnblockPinL(TInt aIndex)
- {
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TInt err = iWrapper->UnblockAuthObject(*(iAOArray[aIndex]));
- if (KErrNone == err)
- {
- HbMessageBox::information("Code unblocked");
- }
- else
- {
- ShowErrorNote(err);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ChangePinL(TInt aIndex)
-// Changes the value of the PIN.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ChangePinL(TInt aIndex)
- {
- RDEBUG("0", 0);
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TInt err = KErrNone;
-
- err = iWrapper->ChangeReferenceData(*(iAOArray[aIndex]));
- if (err)
- {
- ShowErrorNote(err);
- }
- else
- {
- HbMessageBox::information("Code changed");
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ChangeCodeRequestL(TInt aIndex)
-// Toggles the value of auth object if possible.
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUIModel::ChangeCodeRequest(TInt aIndex)
- {
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TUint32 status = iAOArray[aIndex]->Status();
- TInt err = KErrNone;
- if (status & EDisableAllowed && !(status & EAuthObjectBlocked))
- {
- if ( status & EEnabled )
- {
- err = iWrapper->DisableAuthObject(*(iAOArray[aIndex]));
- }
- else
- {
- err = iWrapper->EnableAuthObject(*(iAOArray[aIndex]));
- }
- ShowErrorNote(err);
- }
- return err;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::CloseAuthObjL(TInt aIndex)
-// If the auth object is open then closes it.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::CloseAuthObjL(TInt aIndex)
- {
- if (PinOpen(aIndex))
- {
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TInt err = iWrapper->CloseAuthObject(*(iAOArray[aIndex]));
- if (err)
- {
- ShowErrorNote(err);
- User::Leave(err);
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::DeleteKeysL(TInt aTokenIndex)
-// Deletes key from the appropriate keystore.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::DeleteKeysL(TInt aTokenIndex)
- {
- RDEBUG("0", 0);
- __ASSERT_ALWAYS(aTokenIndex < iAOKeyStores.Count(), Panic(EPanicIndexOutOfRange));
- RMPointerArray<CCTKeyInfo> keyInfos;
- CleanupClosePushL(keyInfos);
- TCTKeyAttributeFilter filter;
- filter.iPolicyFilter = TCTKeyAttributeFilter::EAllKeys;
- TInt err = iWrapper->ListKeys(*iAOKeyStores[aTokenIndex], keyInfos, filter);
- ShowErrorNote(err);
- User::LeaveIfError(err);
- for (TInt i = 0; i < keyInfos.Count(); ++i)
- {
- err = iWrapper->DeleteKey(*iUnifiedKeyStore, keyInfos[i]->Handle());
- ShowErrorNote(err);
-
- if (KErrHardwareNotAvailable == err )
- {
- break; // Break the loop, if keystore not available
- }
- }
- CleanupStack::PopAndDestroy(&keyInfos); //keyInfos
- ResetAndDestroyCTObjects();
- InitializeKeyStoreL();
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::SecModDetailsL(TInt aTokenIndex)
-// Retrieve security module details and cleansup all currently held auth objects.
-// -----------------------------------------------------------------------------
-//
-QVector< QPair<QString,QString> > CSecModUIModel::SecModDetailsL(TInt aTokenIndex)
- {
- iKeyStore = iAOKeyStores[aTokenIndex];
- InitAuthObjectsL();
- ListAuthObjectsL();
- QVector< QPair<QString,QString> > securityDetails = GetSecModDetailsL();
- iKeyStore = NULL; // not owned
- if (iAOList)
- {
- iAOList->Release();
- iAOList = NULL;
- }
- iAOArray.Reset();
- return securityDetails;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::GetSecModDetailsL()
-// Retrieve security module details.
-// -----------------------------------------------------------------------------
-//
-QVector< QPair<QString,QString> > CSecModUIModel::GetSecModDetailsL()
- {
- RDEBUG("0", 0);
- MCTToken& token = iKeyStore->Token();
- QVector< QPair<QString,QString> > securityModDetails;
-
- if (token.TokenType().Type().iUid == KTokenTypeFileKeystore)
- {
- QPair<QString,QString> name("Name:","Phone keystore");
- securityModDetails.append(name);
- }
- else
- {
- QPair<QString,QString> name("Name:","(No label)");
- securityModDetails.append(name);
- }
-
- AppendItem(securityModDetails, "Version:", token.Information( MCTToken::EVersion ), "(Not defined)" );
- AppendLocation(securityModDetails, token.TokenType().Type(), QString("Security module location:"));
-
- if (token.TokenType().Type().iUid == KTokenTypeFileKeystore)
- {
- QPair<QString,QString> accessCode("Access code:","Phone keystore code");
- securityModDetails.append(accessCode);
- }
- else
- {
- AppendItem(securityModDetails, "Access code:", iAOArray[0]->Label(), "Access code:" );
- }
-
- AppendPinNRs(securityModDetails);
-
- AppendItem( securityModDetails, "Serial number:",
- token.Information( MCTToken::ESerialNo),
- "(Not defined)");
-
- AppendItem( securityModDetails, "Manufacturer:",
- token.Information( MCTToken::EManufacturer),
- "(Not defined)");
- return securityModDetails;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::AppendLocation()
-// Appends the location of the keystore.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::AppendLocation( QVector< QPair<QString,QString> >& aSecModDetails,
- TUid aLocUid,
- QString aCertDisplayDetails )
- {
- QString locationDetails = "(Not defined)";
-
- switch ( aLocUid.iUid )
- {
- case KTokenTypeFileKeystore:
- locationDetails = "Phone memory";
- break;
-
- case KWIMStoreUid:
- locationDetails = "Smart card";
- break;
-
- default:
- break;
- }
- aSecModDetails.append(QPair<QString,QString>(aCertDisplayDetails, locationDetails));
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::AppendItem()
-// Appends the value of a label if present otherwise appends empty descriotion.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::AppendItem( QVector< QPair<QString,QString> >& aSecModDetails,
- QString aLabel,
- const TDesC& aValue,
- QString aNullDescription)
- {
- RDEBUG("0", 0);
- if( aValue.Length() == 0 )
- {
- aSecModDetails.append(QPair<QString,QString>(aLabel, aNullDescription));
- }
- else
- {
- QString value = QString((QChar*) aValue.Ptr(),aValue.Length());
- aSecModDetails.append(QPair<QString,QString>(aLabel, value));
- }
- }
-
-// -------------------------------------------------------------------------------
-// CSecModUIModel::AppendPinNRs(QVector< QPair<QString,QString> >& aSecModDetails)
-// Generate details of signing security module.
-// -------------------------------------------------------------------------------
-//
-void CSecModUIModel::AppendPinNRs(QVector< QPair<QString,QString> >& aSecModDetails)
- {
- TInt pinCount = iAOArray.Count();
- TInt j = 0;
-
- for (TInt i=1; i<pinCount; i++)
- {
- QString noLabelDetails = "Signing code ";
- const TDesC& label = iAOArray[i]->Label();
- if(label.Length() == 0)
- {
- noLabelDetails.append(++j);
- }
- QString signingCode = "Signing code:";
- AppendItem(aSecModDetails, signingCode , iAOArray[i]->Label(), noLabelDetails);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::AuthDetails() const
-// Return the list of pair of description and status of each auth object.
-// -----------------------------------------------------------------------------
-//
-QVector<QPair<QString, TUint32> > CSecModUIModel::AuthDetails()
- {
- QVector<QPair<QString, TUint32> > authDetails;
-
- // Here is assumed that the first AO is always PIN-G
- for (TInt i = 1; i < iAOArray.Count(); i++)
- {
- const TDesC& label = iAOArray[i]->Label();
- TUint32 status = iAOArray[i]->Status();
- QString sLabel = QString((QChar*) label.Ptr(), label.Length());
- QPair<QString, TUint32> pair(sLabel, status);
- authDetails.append(pair);
- }
- return authDetails;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::ChangePinNrL(TInt aIndex)
-// Change the pin value for the singing module.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::ChangePinNrL(TInt aIndex)
- {
- RDEBUG("0", 0);
- ChangePinL(aIndex+1);
- }
-
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::UnblockPinNrL(TInt aIndex)
-// Unblock the value for the signing code module.
-// -----------------------------------------------------------------------------
-//
-void CSecModUIModel::UnblockPinNrL(TInt aIndex)
- {
- UnblockPinL(aIndex+1);
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::KeyStoreUID()
-// Retrieves the UID of the current active keystore.
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUIModel::KeyStoreUID()
- {
- return iKeyStore->Token().TokenType().Type().iUid;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::AuthObj(TInt aIndex)
-// Retrieves the auth object at the speficied index.
-// -----------------------------------------------------------------------------
-//
-const MCTAuthenticationObject& CSecModUIModel::AuthObj(TInt aIndex)
- {
- return *iAOArray[aIndex];
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::PinChangeable(TInt aIndex) const
-// Returns the status accordingly if the pin is changeable or not.
-// -----------------------------------------------------------------------------
-//
-TBool CSecModUIModel::PinChangeable(TInt aIndex) const
- {
- RDEBUG("0", 0);
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TUint32 status = iAOArray[aIndex]->Status();
- TBool ret = ETrue;
- if ( (status & EAuthObjectBlocked) || (status & EChangeDisabled) )
- {
- ret = EFalse;
- }
- else if ( status & EEnabled )
- {
- ret = ETrue;
- }
- else // PIN is disabled;
- {
- ret = EFalse;
- }
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::PinUnblockable(TInt aIndex) const
-// Returns the status accordingly if the pin is unblockable or not.
-// -----------------------------------------------------------------------------
-//
-TBool CSecModUIModel::PinUnblockable(TInt aIndex) const
- {
- TUint32 status = iAOArray[aIndex]->Status();
- TBool ret = ETrue;
- if ( status & EUnblockDisabled )
- {
- ret = EFalse;
- }
- else if ( status & EAuthObjectBlocked )
- {
- ret = ETrue;
- }
- else // PIN is not blocked;
- {
- ret = EFalse;
- }
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::PinRequestChangeable(TInt aIndex) const
-// Returns the status accordingly if the pin is changeable or not.
-// -----------------------------------------------------------------------------
-//
-TBool CSecModUIModel::PinRequestChangeable(TInt aIndex) const
- {
- RDEBUG("0", 0);
- __ASSERT_ALWAYS(aIndex < iAOArray.Count(), Panic(EPanicIndexOutOfRange));
- TUint32 status = iAOArray[aIndex]->Status();
- TBool ret = EFalse;
- if ( status & EAuthObjectBlocked )
- {
- ret = EFalse;
- }
- else if ( status & EDisableAllowed )
- {
- ret = ETrue;
- }
- else // Disable not allowed;
- {
- ret = EFalse;
- }
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::IsTokenDeletable(TInt aTokenIndex)
-// Returns the status accordingly if the token is deletable or not.
-// -----------------------------------------------------------------------------
-//
-TBool CSecModUIModel::IsTokenDeletable(TInt aTokenIndex)
- {
- __ASSERT_ALWAYS(aTokenIndex < iAOKeyStores.Count(), Panic(EPanicIndexOutOfRange));
- TBool ret = EFalse;
- if (iAOKeyStores[aTokenIndex]->Token().TokenType().Type().iUid
- == KTokenTypeFileKeystore)
- {
- ret = ETrue;
- }
- else
- {
- ret = EFalse;
- }
- return ret;
- }
-
-// End of File
-
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpsecmodsyncwrapper.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,401 +0,0 @@
-/*
-* Copyright (c) 2005-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 the CSecModUISyncWrapper class
-* Implements a synchronous wrapper for easier use of Symbian's
-* Security Frameworks's API's.
-*
-*/
-
-
-#include "cpsecmodsyncwrapper.h"
-#include <ct/ccttokentypeinfo.h>
-#include <ct/mcttokentype.h>
-#include <ct/ccttokentype.h>
-#include <ct/tcttokenobjecthandle.h>
-#include <mctauthobject.h>
-#include <unifiedkeystore.h>
-#include <mctkeystore.h>
-#include <../../inc/cpsecplugins.h>
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::CSecModUISyncWrapper()
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CSecModUISyncWrapper::CSecModUISyncWrapper() : CActive( EPriorityStandard )
- {
- CActiveScheduler::Add(this);
- }
-
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSecModUISyncWrapper* CSecModUISyncWrapper::NewLC()
- {
- CSecModUISyncWrapper* wrap = new (ELeave) CSecModUISyncWrapper();
- CleanupStack::PushL(wrap);
- return wrap;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSecModUISyncWrapper* CSecModUISyncWrapper::NewL()
- {
- RDEBUG("0", 0);
- CSecModUISyncWrapper* wrap = CSecModUISyncWrapper::NewLC();
- CleanupStack::Pop(wrap);
- return wrap;
- }
-
-// Destructor
-CSecModUISyncWrapper::~CSecModUISyncWrapper()
- {
- Cancel();
- iOperation = EOperationNone;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::Initialize(CUnifiedKeyStore& aKeyStore)
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-
-TInt CSecModUISyncWrapper::Initialize(CUnifiedKeyStore& aKeyStore)
- {
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationInit;
- iObject = STATIC_CAST(TAny*, &aKeyStore);
- aKeyStore.Initialize(iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::GetAuthObjectInterface(...)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::GetAuthObjectInterface(
- MCTToken& aToken, MCTTokenInterface*& aTokenInterface)
- {
- RDEBUG("0", 0);
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationGetAOInterface;
- iObject = STATIC_CAST(TAny*, &aToken);
- const TUid KUidInterfaceAO = { KCTInterfaceAuthenticationObject };
- aToken.GetInterface(KUidInterfaceAO, aTokenInterface, iStatus);
- iOperation = EOperationGetAOInterface;
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::ListAuthObjects(...)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::ListAuthObjects(
- MCTAuthenticationObjectList& aAuthObjList,
- RMPointerArray<MCTAuthenticationObject>& aAuthObjects)
- {
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationListAOs;
- iObject = STATIC_CAST(TAny*, &aAuthObjList);
- aAuthObjList.List( aAuthObjects, iStatus );
- iOperation = EOperationListAOs;
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::ListKeys(...)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::ListKeys(
- MCTKeyStore& aKeyStore,
- RMPointerArray<CCTKeyInfo>& aKeysInfos,
- const TCTKeyAttributeFilter& aFilter)
- {
- RDEBUG("0", 0);
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationListKeys;
- iObject = STATIC_CAST(TAny*, &aKeyStore);
- aKeyStore.List(aKeysInfos, aFilter, iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::DeleteKey(...)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::DeleteKey(
- CUnifiedKeyStore& aKeyStore,
- TCTTokenObjectHandle aHandle)
- {
- RDEBUG("0", 0);
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationDelKey;
- iObject = STATIC_CAST(TAny*, &aKeyStore);
- aKeyStore.DeleteKey(aHandle, iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::ChangeReferenceData(MCTAuthenticationObject& aAuthObject)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::ChangeReferenceData(
- MCTAuthenticationObject& aAuthObject)
- {
- RDEBUG("0", 0);
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationChangeReferenceData;
- iObject = STATIC_CAST(TAny*, &aAuthObject);
- aAuthObject.ChangeReferenceData(iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::UnblockAuthObject(MCTAuthenticationObject& aAuthObject)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::UnblockAuthObject(
- MCTAuthenticationObject& aAuthObject)
- {
- RDEBUG("0", 0);
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationUnblockAO;
- iObject = STATIC_CAST(TAny*, &aAuthObject);
- aAuthObject.Unblock(iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::EnableAuthObject(MCTAuthenticationObject& aAuthObject)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::EnableAuthObject(
- MCTAuthenticationObject& aAuthObject)
- {
- RDEBUG("0", 0);
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationEnableAO;
- iObject = STATIC_CAST(TAny*, &aAuthObject);
- aAuthObject.Enable(iStatus);
- iOperation = EOperationUnblockAO;
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::DisableAuthObject(MCTAuthenticationObject& aAuthObject)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::DisableAuthObject(
- MCTAuthenticationObject& aAuthObject)
- {
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationDisableAO;
- iObject = STATIC_CAST(TAny*, &aAuthObject);
- aAuthObject.Disable(iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::CloseAuthObject(MCTAuthenticationObject& aAuthObject)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::CloseAuthObject(
- MCTAuthenticationObject& aAuthObject)
- {
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationCloseAO;
- iObject = STATIC_CAST(TAny*, &aAuthObject);
- aAuthObject.Close(iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUIModel::TimeRemaining(...)
-// -----------------------------------------------------------------------------
-//
-TInt CSecModUISyncWrapper::TimeRemaining(
- MCTAuthenticationObject& aAuthObject,
- TInt& aStime )
- {
- RDEBUG("0", 0);
- if( !IsActive() && !iWait.IsStarted() )
- {
- iOperation = EOperationTimeRemAO;
- iObject = STATIC_CAST(TAny*, &aAuthObject);
- aAuthObject.TimeRemaining(aStime, iStatus);
- SetActive();
- iWait.Start();
- iOperation = EOperationNone;
- return iStatus.Int();
- }
- return KErrInUse;
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::DoCancel
-// Cancels the ongoing operation if possible.
-// -----------------------------------------------------------------------------
-//
-void CSecModUISyncWrapper::DoCancel()
- {
- RDEBUG("iOperation", iOperation);
- switch ( iOperation )
- {
- case EOperationInit:
- {
- STATIC_CAST(CUnifiedKeyStore*, iObject)->CancelInitialize();
- break;
- }
- case EOperationGetAOInterface:
- {
- STATIC_CAST(MCTToken*, iObject)->CancelGetInterface();
- break;
- }
- case EOperationListAOs:
- {
- STATIC_CAST(MCTAuthenticationObjectList*, iObject)->CancelList();
- break;
- }
- case EOperationListKeys:
- {
- STATIC_CAST(MCTKeyStore*, iObject)->CancelList();
- break;
- }
- case EOperationDelKey:
- {
- STATIC_CAST(CUnifiedKeyStore*, iObject)->CancelDeleteKey();
- break;
- }
- case EOperationChangeReferenceData:
- {
- STATIC_CAST(MCTAuthenticationObject*, iObject)->
- CancelChangeReferenceData();
- break;
- }
- case EOperationUnblockAO:
- {
- STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelUnblock();
- break;
- }
- case EOperationEnableAO:
- {
- STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelEnable();
- break;
- }
- case EOperationDisableAO:
- {
- STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelDisable();
- break;
- }
- case EOperationCloseAO:
- {
- STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelClose();
- break;
- }
- case EOperationTimeRemAO:
- {
- STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelTimeRemaining();
- break;
- }
- default:
- {
- break;
- }
- }
- if (iWait.IsStarted())
- {
- iWait.AsyncStop();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CSecModUISyncWrapper::RunL
-// If no errors happened, stop. Show an error note if needed.
-// -----------------------------------------------------------------------------
-//
-void CSecModUISyncWrapper::RunL()
- {
- iWait.AsyncStop();
- }
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpsecmoduleinfoview.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +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:
-*
-*/
-
-#include <QStringList>
-#include <QGraphicsLinearLayout>
-#include <QModelIndex>
-
-#include <hblineedit.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbmessagebox.h>
-#include <HbListWidget>
-#include <HbListWidgetItem>
-#include <HbGroupBox>
-#include <hbpushbutton.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hbabstractviewitem.h>
-#include <hbtextitem.h>
-#include <hbmainwindow.h>
-#include <hblistview.h>
-#include <QStandardItemModel>
-#include <QModelIndexList>
-
-#include <memory>
-#include <../../inc/cpsecplugins.h>
-#include "cpsecmoduleinfoview.h"
-
-
-CpSecmoduleInfoView::CpSecmoduleInfoView(const QVector< QPair<QString,QString> >& securityDetails, QGraphicsItem *parent /*= 0*/)
- : CpBaseSettingView(0,parent)
- {
- RDEBUG("0", 0);
- setTitle(tr("Module info"));
-
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
- HbListWidget* listSecurityDetails = q_check_ptr(new HbListWidget(this));
-
- QVectorIterator< QPair<QString, QString> > secDetIter(securityDetails);
- while(secDetIter.hasNext())
- {
- QPair<QString,QString> pair = secDetIter.next();
-
- std::auto_ptr<HbListWidgetItem> label(q_check_ptr(new HbListWidgetItem()));
- label->setText(pair.first);
- listSecurityDetails->addItem(label.get());
- label.release();
-
- std::auto_ptr<HbListWidgetItem> description(q_check_ptr(new HbListWidgetItem()));
- description->setText(pair.second);
- listSecurityDetails->addItem(description.get());
- description.release();
- }
-
- layout->addItem(listSecurityDetails);
- setLayout(layout.get());
- layout.release();
- RDEBUG("0", 0);
- }
-
-CpSecmoduleInfoView::~CpSecmoduleInfoView()
- {}
-
-// End of file
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpsecmodview.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +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:
-*
-*/
-
-#include <mctauthobject.h>
-
-
-#include <qstringlist.h>
-#include <qgraphicslinearlayout.h>
-
-#include <hblineedit.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbmessagebox.h>
-#include <hblistwidget.h>
-#include <hblistwidgetitem.h>
-#include <hbgroupbox.h>
-#include <hbpushbutton.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hbabstractviewitem.h>
-#include <hbmainwindow.h>
-#include <HbMessageBox>
-
-#include <memory>
-#include <../../inc/cpsecplugins.h>
-#include "cpsecmodview.h"
-#include "cpsecmodmodel.h"
-#include "cpmoduleview.h"
-
-CpSecModView::CpSecModView(TInt currentPos, CSecModUIModel& secModUIModel, QGraphicsItem *parent /*= 0*/)
-: CpBaseSettingView(0,parent),
- mSecModUIModel(secModUIModel),
- mPos(currentPos),
- mCurrentView(EAccessView),
- mAccessView(NULL),
- mPrevView(NULL)
- {
- RDEBUG("0", 0);
- try
- {
- QT_TRAP_THROWING(mSecModUIModel.OpenTokenL(mPos));
- QString title = mSecModUIModel.TokenLabelForTitle();
- setTitle(title);
-
- TInt count = 0;
- // display code view
- QT_TRAP_THROWING(count = mSecModUIModel.CheckCodeViewStringsL());
-
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
- HbListWidget* listSecView = q_check_ptr(new HbListWidget(this));
-
- std::auto_ptr<HbListWidgetItem> moduleWidget(q_check_ptr(new HbListWidgetItem()));
- moduleWidget->setText("\tModule PIN");
- listSecView->addItem(moduleWidget.get());
- moduleWidget.release();
- RDEBUG("count", count);
- if( count == 2 )
- {
- std::auto_ptr<HbListWidgetItem> signingWidget(q_check_ptr(new HbListWidgetItem()));
- signingWidget->setText("\tSigning PIN");
- listSecView->addItem(signingWidget.get());
- signingWidget.release();
- }
-
- connect(listSecView, SIGNAL(activated(QModelIndex)), this, SLOT(showNextView(QModelIndex)));
-
- layout->addItem(listSecView);
- setLayout(layout.get());
- layout.release();
- }
- catch(const std::exception& exception)
- {
- QString error(exception.what());
- HbMessageBox::information(error);
- QT_RETHROW;
- }
- }
-
-CpSecModView::~CpSecModView()
- {
- if(mAccessView)
- {
- mAccessView->deleteLater();
- mAccessView = NULL;
- }
- if(mPrevView)
- {
- mPrevView->deleteLater();
- mPrevView = NULL;
- }
- }
-
-
-void CpSecModView::showNextView( const QModelIndex& modelIndex )
- {
- RDEBUG("0", 0);
- try
- {
- mAccessView = q_check_ptr(new CpModuleView((TSecModViews)modelIndex.row(),mSecModUIModel));
- QObject::connect(mAccessView , SIGNAL(aboutToClose()), this, SLOT(displayPrevious()));
- mPrevView = mainWindow()->currentView(); //suppose iPreView is member variable of CpSecurityView
- mainWindow()->addView(mAccessView);
- mainWindow()->setCurrentView(mAccessView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecModView::displayPrevious()
- {
- RDEBUG("0", 0);
- try
- {
- mainWindow()->removeView(mAccessView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
--- a/cpsecplugins/cpadvancedsecplugin/src/cpsecurityview.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +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:
-*
-*/
-
-#include <QStringList>
-#include <QGraphicsLinearLayout>
-#include <qlist.h>
-#include <qstring.h>
-#include <qvector.h>
-#include <qpair.h>
-
-#include <hblineedit.h>
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbmessagebox.h>
-#include <HbListWidget>
-#include <HbListWidgetItem>
-#include <HbGroupBox>
-#include <hbpushbutton.h>
-#include <hbmainwindow.h>
-#include <hbabstractviewitem.h>
-#include <HbMessageBox>
-
-#include <memory>
-
-#include <../../inc/cpsecplugins.h>
-
-#include "cpsecurityview.h"
-#include "cpsecmodview.h"
-#include "cpcertview.h"
-#include "cpsecmodmodel.h"
-#include "cpsecmoduleinfoview.h"
-
-CpSecurityView::CpSecurityView(QGraphicsItem *parent /*= 0*/)
- : CpBaseSettingView(0,parent),
- mSecModUIModel(NULL),
- mSecModView(NULL),
- mPreView(NULL),
- mCertView(NULL),
- mCurrentView(NULL),
- mPos(0),
- mNote(NULL), mOkAction(NULL)
- {
- RDEBUG("0", 0);
- setTitle(hbTrId("txt_certificate_manager_setlabel_advanced_security"));
-
- std::auto_ptr<QGraphicsLinearLayout> layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical)));
- HbListWidget* listCertView = q_check_ptr(new HbListWidget(this));
-
- std::auto_ptr<HbListWidgetItem> authcert(q_check_ptr(new HbListWidgetItem()));
- authcert->setText(hbTrId("txt_certificate_manager_list_authority_certificate"));
-
- std::auto_ptr<HbListWidgetItem> trustedsitecert(q_check_ptr(new HbListWidgetItem()));
- trustedsitecert->setText(hbTrId("txt_certificate_manager_list_trusted_site_certific"));
-
- std::auto_ptr<HbListWidgetItem> personalcert(q_check_ptr(new HbListWidgetItem()));
- personalcert->setText(hbTrId("txt_certificate_manager_list_personal_certificates"));
-
- std::auto_ptr<HbListWidgetItem> devicecert(q_check_ptr(new HbListWidgetItem()));
- devicecert->setText(hbTrId("txt_certificate_manager_list_device_certificates"));
-
- listCertView->addItem(authcert.get());
- authcert.release();
- listCertView->addItem(trustedsitecert.get());
- trustedsitecert.release();
- listCertView->addItem(personalcert.get());
- personalcert.release();
- listCertView->addItem(devicecert.get());
- devicecert.release();
-
- connect(listCertView, SIGNAL(released(QModelIndex)), this, SLOT(displayCert(QModelIndex)));
-
- HbListWidget* listSecView = q_check_ptr(new HbListWidget(this));
- QMap<QString,QString> keystoreLabels;
- RDEBUG("0", 0);
- try
- {
- QT_TRAP_THROWING(
- mSecModUIModel = CSecModUIModel::NewL();
- keystoreLabels = mSecModUIModel->LoadTokenLabelsL(); )
- }
- catch(const std::exception& exception)
- {
- QString error(exception.what());
- HbMessageBox::information(error);
- QT_RETHROW;
- }
-
- QMapIterator<QString, QString> labelIter(keystoreLabels);
- if(keystoreLabels.count() != 0)
- {
- while(labelIter.hasNext())
- {
- labelIter.next();
- std::auto_ptr<HbListWidgetItem> widget(q_check_ptr(new HbListWidgetItem()));
- widget->setText(labelIter.key());
- widget->setSecondaryText(labelIter.value());
- listSecView->addItem(widget.get());
- widget.release();
- }
- connect(listSecView, SIGNAL(activated(QModelIndex)), this, SLOT(showCodeView(QModelIndex)));
- connect(listSecView, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF)));
- }
- else
- {
- std::auto_ptr<HbListWidgetItem> emptyWidget(q_check_ptr(new HbListWidgetItem()));
- emptyWidget->setText("(no security modules)");
- listSecView->addItem(emptyWidget.get());
- emptyWidget.release();
- }
- RDEBUG("0", 0);
- std::auto_ptr<HbGroupBox> certificatesList(q_check_ptr(new HbGroupBox()));
- certificatesList->setHeading(hbTrId("txt_certificate_manager_setlabel_certificates"));
- certificatesList->setContentWidget(listCertView);
- certificatesList->setCollapsed(true);
- layout->addItem(certificatesList.get());
- certificatesList.release();
-
- std::auto_ptr<HbGroupBox> protectedContentList(q_check_ptr(new HbGroupBox()));
- protectedContentList->setHeading("Protected Content");
- protectedContentList->setCollapsed(true);
- layout->addItem(protectedContentList.get());
- protectedContentList.release();
-
- std::auto_ptr<HbGroupBox> securityModuleList(q_check_ptr(new HbGroupBox()));
- securityModuleList->setHeading("Security Module");
- securityModuleList->setContentWidget(listSecView);
- securityModuleList->setCollapsed(true);
- layout->addItem(securityModuleList.get());
- securityModuleList.release();
-
- mContextMenu = q_check_ptr(new HbMenu());
-
- setLayout(layout.get());
- layout.release();
- }
-
-
-CpSecurityView::~CpSecurityView()
- {
- if(mSecModView)
- {
- mSecModView->deleteLater();
- }
-
- if(mPreView)
- {
- mPreView->deleteLater();
- }
-
- if(mCertView)
- {
- mCertView->deleteLater();
- }
-
- if(mCurrentView)
- {
- mCurrentView->deleteLater();
- }
-
- delete mSecModUIModel;
-
- delete mNote;
- delete mContextMenu;
- }
-
-void CpSecurityView::showCodeView()
- {
- RDEBUG("0", 0);
- try
- {
- mSecModView = q_check_ptr(new CpSecModView(mPos, *mSecModUIModel));
- QObject::connect(mSecModView , SIGNAL(aboutToClose()), this, SLOT(viewDone()));
- mPreView = mainWindow()->currentView(); //suppose mPreView is member variable of CpSecurityView
- mainWindow()->addView(mSecModView);
- mainWindow()->setCurrentView(mSecModView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecurityView::showCodeView( const QModelIndex& aModelIndex)
- {
- mPos = aModelIndex.row();
- showCodeView();
- }
-
-void CpSecurityView::showWIMview()
- {
- RDEBUG("0", 0);
- try
- {
- QObject::connect(mSecModView , SIGNAL(aboutToClose()), this, SLOT(viewDone()));
- mPreView = mainWindow()->currentView(); //suppose mPreView is member variable of CpSecurityView
- mainWindow()->addView(mSecModView);
- mainWindow()->setCurrentView(mSecModView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecurityView::viewDone()
- {
- try
- {
- mainWindow()->removeView(mSecModView);
- mSecModView->deleteLater();
- mSecModView= NULL;
- mainWindow()->setCurrentView(mPreView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecurityView::displayCert(const QModelIndex& modelIndex)
- {
- RDEBUG("0", 0);
- try
- {
- mCertView = q_check_ptr(new CpCertView(modelIndex));
- connect(mCertView , SIGNAL(aboutToClose()), this, SLOT(displayPrevious()));
- mPreView = mainWindow()->currentView();
- mainWindow()->addView(mCertView);
- mainWindow()->setCurrentView(mCertView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecurityView::displayPrevious()
- {
- RDEBUG("0", 0);
- try
- {
- mainWindow()->removeView(mCertView);
- mCertView->deleteLater();
- mCertView= NULL;
- mainWindow()->setCurrentView(mPreView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecurityView::indicateLongPress(HbAbstractViewItem *item,QPointF coords)
- {
- RDEBUG("0", 0);
- try
- {
- mContextMenu->clearActions();
- mPos = item->modelIndex().row();
-
- std::auto_ptr<HbAction> openModule(q_check_ptr(new HbAction("Open")));
- connect(openModule.get(), SIGNAL(triggered()), this, SLOT( showCodeView()));
- mContextMenu->addAction(openModule.get());
- openModule.release();
-
- if(mSecModUIModel->IsTokenDeletable(mPos))
- {
- std::auto_ptr<HbAction> deleteModule(q_check_ptr(new HbAction("Delete")));
- connect(deleteModule.get(), SIGNAL(triggered()), this, SLOT( deleteModule()));
- mContextMenu->addAction(deleteModule.get());
- deleteModule.release();
- }
-
- std::auto_ptr<HbAction> moduleInfo(q_check_ptr(new HbAction("Module Info")));
- connect(moduleInfo.get(), SIGNAL(triggered()), this, SLOT( moduleDetails()));
- mContextMenu->addAction(moduleInfo.get());
- moduleInfo.release();
-
- mContextMenu->setPreferredPos(coords);
- mContextMenu->open();
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecurityView::deleteModule()
- {
- RDEBUG("0", 0);
- try
- {
-
- delete mNote;
- mNote = NULL;
-
- mNote = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
- mNote->setHeadingWidget(q_check_ptr(new HbLabel(tr("Delete..."))));
- mNote->setText("Delete keystore and password?");
- mNote->clearActions();
- mOkAction = q_check_ptr(new HbAction("Yes"));
- mNote->addAction(mOkAction);
- HbAction* cancelAction = q_check_ptr(new HbAction("No"));
- mNote->addAction(cancelAction);
- mNote->setTimeout(HbPopup::NoTimeout);
- mNote->setIconVisible (EFalse);
- mNote->open(this,SLOT(dialogClosed(HbAction*)));
- }
- catch(const std::exception& exception)
- {
- HbMessageBox *box = new HbMessageBox(exception.what());
- box->setAttribute(Qt::WA_DeleteOnClose);
- box->open();
- }
-
-}
-void CpSecurityView::dialogClosed(HbAction* action)
-{
- RDEBUG("0", 0);
- if (action != mOkAction)
- {
- return;
- }
-
- try
- {
- QT_TRAP_THROWING(mSecModUIModel->DeleteKeysL(mPos));
- }
- catch(const std::exception& exception)
- {
- HbMessageBox *box = new HbMessageBox(exception.what());
- box->setAttribute(Qt::WA_DeleteOnClose);
- box->open();
- }
- }
-
-void CpSecurityView::moduleDetails()
- {
- RDEBUG("0", 0);
- try
- {
- QVector< QPair<QString,QString> > securityDetails;
- QT_TRAP_THROWING(securityDetails = mSecModUIModel->SecModDetailsL(mPos));
- mModuleinfoView = q_check_ptr(new CpSecmoduleInfoView(securityDetails));
-
- connect(mModuleinfoView , SIGNAL(aboutToClose()), this, SLOT(displayPreviousFromModInfo()));
- mPreView = mainWindow()->currentView();
- mainWindow()->addView(mModuleinfoView);
- mainWindow()->setCurrentView(mModuleinfoView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
-void CpSecurityView::displayPreviousFromModInfo()
- {
- RDEBUG("0", 0);
- try
- {
- mainWindow()->removeView(mModuleinfoView);
- mCertView->deleteLater();
- mCertView= NULL;
- mainWindow()->setCurrentView(mPreView);
- }
- catch(const std::exception& exception)
- {
- HbMessageBox::information(exception.what());
- }
- }
-
--- a/cpsecplugins/cpsecplugins.pro Thu Oct 07 14:07:34 2010 +0300
+++ b/cpsecplugins/cpsecplugins.pro Thu Oct 14 13:56:11 2010 +0300
@@ -16,7 +16,7 @@
TEMPLATE = subdirs
-# temporarilly skip, because too many deprecations
SUBDIRS += devicelockplugin/devicelockplugin.pro
SUBDIRS += simpincodeplugin/pincodeplugin.pro
-SUBDIRS += cpadvancedsecplugin/group/advancedsecplugin.pro
+SUBDIRS += cpadvancedsecplugin/cpadvancedsecplugin.pro
+
--- a/layers.sysdef.xml Thu Oct 07 14:07:34 2010 +0300
+++ b/layers.sysdef.xml Thu Oct 14 13:56:11 2010 +0300
@@ -18,9 +18,6 @@
<module name="">
<unit unitID="sedo.securitysrv.pkiutilities.Certificates" bldFile="&layer_real_source_path;/pkiutilities/Certificates/group" mrp="" filter="sf_build" name="sedo_securitysrv_pkiutilities_Certificates" />
</module>
- <module name="">
- <unit unitID="sedo.securitysrv.pkiutilities.Certificates_OEM" bldFile="&layer_real_source_path;/pkiutilities/Certificates_OEM/group" mrp="" filter="oem_build" name="sedo_securitysrv_pkiutilities_Certificates_OEM" />
- </module>
</layer>
<layer name="api_test_layer">
<module name="securitysrv_test">
--- a/package_definition.xml Thu Oct 07 14:07:34 2010 +0300
+++ b/package_definition.xml Thu Oct 14 13:56:11 2010 +0300
@@ -134,6 +134,12 @@
<component id="securitynotifier" filter="s60,build_as_app" name="Security Notifier">
<unit bldFile="securitydialogs/securitynotifier/group"/>
</component>
+ <component id="secuidialognotifier" filter="s60,build_as_app" introduced="^4" name="SecUi Dialog Notifier">
+ <unit bldFile="securitydialogs/secuidialognotifier/group"/>
+ </component>
+ <component id="secuidialognotifiersrv" filter="s60,build_as_app" introduced="^4" name="SecUi Dialog Notifier Server">
+ <unit bldFile="securitydialogs/secuidialognotifiersrv/group"/>
+ </component>
<component id="lockclient" filter="s60,build_as_app" name="Lock Client" introduced="^3">
<unit bldFile="securitydialogs/lockclient/group" qt:proFile="lockclient.pro"/>
</component>
@@ -162,8 +168,8 @@
<component id="simpincodeplugin" name="SIM PIN Code Plugin" introduced="^4" filter="s60,build_as_app" class="plugin">
<unit bldFile="cpsecplugins/simpincodeplugin" qt:proFile="pincodeplugin.pro"/>
</component>
- <component id="cpadvancedsecplugin" name="Advanced Security Plugin" introduced="^4" filter="s60,build_as_app" class="plugin">
- <unit bldFile="cpsecplugins/cpadvancedsecplugin/group" qt:proFile="advancedsecplugin.pro"/>
+ <component id="cpadvancedsecplugin" name="Advanced Security Settings Plugin" introduced="^4" filter="s60,build_as_app" class="plugin">
+ <unit bldFile="cpsecplugins/cpadvancedsecplugin" qt:proFile="cpadvancedsecplugin.pro"/>
</component>
</collection>
<collection id="boottimeintegritycheck" name="Boot Time Integrity Check" level="plugin">
--- a/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperserverauthfail.h Thu Oct 07 14:07:34 2010 +0300
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperserverauthfail.h Thu Oct 14 13:56:11 2010 +0300
@@ -86,6 +86,7 @@
RMPointerArray<CCTCertInfo> iCertInfos;
TInt iRetrieveCertIndex;
HBufC8* iRetrievedCertBuffer;
+ TPtr8 iRetrievedCertBufPtr;
enum {
EInitialiseCertStore,
--- a/pkiutilities/securitydialognotifiersrv/src/securitydialogoperserverauthfail.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/pkiutilities/securitydialognotifiersrv/src/securitydialogoperserverauthfail.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -212,7 +212,8 @@
//
CServerAuthFailOperation::CServerAuthFailOperation(
MSecurityDialogOperationObserver& aObserver, const RMessage2& aMessage,
- TInt aReplySlot ) : CSecurityDialogOperation( aObserver, aMessage, aReplySlot )
+ TInt aReplySlot ) : CSecurityDialogOperation( aObserver, aMessage, aReplySlot ),
+ iRetrievedCertBufPtr(0, 0)
{
TRACE( "CServerAuthFailOperation::CServerAuthFailOperation" );
}
@@ -457,9 +458,9 @@
iRetrievedCertBuffer = NULL;
}
iRetrievedCertBuffer = HBufC8::NewL( cert.Size() );
- TPtr8 buffer = iRetrievedCertBuffer->Des();
+ iRetrievedCertBufPtr.Set( iRetrievedCertBuffer->Des() );
- iTrustedSiteCertStore->Retrieve( cert, buffer, iStatus );
+ iTrustedSiteCertStore->Retrieve( cert, iRetrievedCertBufPtr, iStatus );
iMode = ERetrieveTrustedSiteCert;
SetActive();
}
--- a/securitydialogs/Autolock/Autolock.pro Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/Autolock/Autolock.pro Thu Oct 14 13:56:11 2010 +0300
@@ -41,6 +41,7 @@
LIBS += -ltstaskmonitorclient # for TsTaskSettings
LIBS += -lavkon # for KeySounds
LIBS += -lapgrfx # for CApaWindowGroupName
+LIBS += -lscpclient # SCP server
SERVICE.FILE = service_conf.xml
SERVICE.OPTIONS = embeddable
--- a/securitydialogs/Autolock/src/Autolock.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/Autolock/src/Autolock.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -1,39 +1,29 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License as published by
-* the Free Software Foundation, version 2.1 of the License.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with this program. If not,
-* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
-*
-* Description:
-*
-*/
-
-// #include "xqservicelog.h"
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 2.1 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not,
+ * see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+ *
+ * Description:
+ *
+ */
#include <QCoreApplication>
#include <QKeyEvent>
#include <QEvent>
-#include <QLabel>
-#include <QVBoxLayout>
-#include <QStackedWidget>
-#include <QImageReader>
#include <QTimer>
-#include <QPushButton>
-#include <QLineEdit>
-#include <QListView>
#include <QMessageBox>
-#include <QToolButton>
#include <QSymbianEvent>
#include <QMainWindow>
#include <qvaluespacesubscriber.h>
@@ -46,28 +36,22 @@
#include <lockappclientserver.h>
-#include <xqsharablefile.h>
-
-#include <QGraphicsLinearLayout>
-
-#include <hblabel.h>
-
#include "Autolock.h"
#include <xqserviceutil.h>
-
#include "autolockuseractivityservice.h"
-
-#include <settingsinternalcrkeys.h> // CenRep keys
+#include <settingsinternalcrkeys.h> // CenRep keys
#include <w32std.h>
#include <eikenv.h>
+#include <aknsoundsystem.h>
#include <secuisecuritysettings.h>
#include <secui.h>
#include <secuisecurityhandler.h>
#include <etelmm.h>
#include <rmmcustomapi.h>
-
+#include <keylockpolicyapi.h>
#include <qvaluespacesubscriber.h>
+#include <SCPClient.h>
#include <hwrmlightdomaincrkeys.h>
#include <ProfileEngineSDKCRKeys.h>
@@ -76,90 +60,107 @@
#include "../PubSub/securityuisprivatepskeys.h"
#include <avkondomainpskeys.h>
#include <hwrmdomainpskeys.h>
+#include <ctsydomainpskeys.h>
+
+#include <startupdomainpskeys.h>
#include <hbdevicedialog.h>
+// handled now directly but screensaver
+// #include <power_save_display_mode.h>
const TInt KPhoneIndex(0);
const TInt KTriesToConnectServer(2);
const TInt KTimeBeforeRetryingServerConnection(50000);
-
-#define ESecUiTypeLock 0x00100000
-
+#define ESecUiTypeDeviceLock 0x00100000
+#define ESecUiTypeKeyguard 0x00200000
_LIT( KMmTsyModuleName, "PhoneTsy");
+// Constant definitions to control screensaver view types
+static const char *KSnsrViewTypeKey = "view_type";
+enum TSnsrViewType
+ {
+ ESnsrViewTypeInitial = 0, // default initial state, depends on the configuration
+ ESnsrViewTypeActive,
+ ESnsrViewTypeStandby,
+ ESnsrViewTypeDisabled,
+ };
+static const char *KSnsrCmdUnlock = "unlock";
+static const char *KSnsrCmdSwitchLights = "switch_lights";
+static const char *KSnsrCmdSwitchLowPower = "switch_low_power";
+
Autolock::Autolock(QWidget *parent, Qt::WFlags f) :
- QWidget(parent, f), mService(NULL)
+ QWidget(parent, f),
+ mService(NULL),
+ mPowerKeyCaptureHandle(0),
+ mApplicationKeyCaptureHandle(0),
+ mApplicationLongKeyCaptureHandle(0),
+ mEKeyDeviceFCaptureHandle(0),
+ mEKeyBellCaptureHandle(0),
+ mEKeyYesCaptureHandle(0),
+ mEKeyNoCaptureHandle(0),
+ iLockCodeQueryInDisplay(false),
+ mScreensaverModeTimer(0)
+
{
RDEBUG("start autolock", 0);
- // The very first thing is to define the properties, so that others can use them.
+ // The very first thing is to define the properties, so that others can use them.
TSecurityPolicy readPolicy(ECapabilityReadDeviceData);
TSecurityPolicy writePolicy(ECapabilityWriteDeviceData);
- TInt ret = RProperty::Define(KPSUidSecurityUIs,
- KSecurityUIsSecUIOriginatedQuery, RProperty::EInt, readPolicy,
- writePolicy);
+ TInt ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, RProperty::EInt, readPolicy, writePolicy);
RDEBUG("defined KSecurityUIsSecUIOriginatedQuery", ret);
- ret = RProperty::Define(KPSUidSecurityUIs,
- KSecurityUIsQueryRequestCancel, RProperty::EInt, readPolicy,
- writePolicy);
+ ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, RProperty::EInt, readPolicy, writePolicy);
RDEBUG("defined KSecurityUIsQueryRequestCancel", ret);
-
_LIT_SECURITY_POLICY_PASS( KReadPolicy);
_LIT_SECURITY_POLICY_C1(KWritePolicy, ECapabilityWriteDeviceData);
- ret = RProperty::Define(KPSUidCoreApplicationUIs,
- KCoreAppUIsAutolockStatus, RProperty::EInt, KReadPolicy,
- KWritePolicy);
+ ret = RProperty::Define(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, RProperty::EInt, KReadPolicy, KWritePolicy);
RDEBUG("defined KCoreAppUIsAutolockStatus", ret);
-
+
// This is important: we set the status through a property
TInt autolockState;
- RProperty::Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, autolockState);
+ ret = RProperty::Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, autolockState);
RDEBUG("Get KCoreAppUIsAutolockStatus", ret);
RDEBUG("autolockState", autolockState);
- if(autolockState==EAutolockStatusUninitialized)
- {
- autolockState = EAutolockOff; // not-initialized means taht the unlock-query hasn't been displayed. Therefore the device should not stay locked.
- }
- ret = RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus,
- autolockState); // this might re-set it. That's not bad. It will re-notify all listeners.
+ if (autolockState == EAutolockStatusUninitialized)
+ {
+ autolockState = EAutolockOff; // not-initialized means taht the unlock-query hasn't been displayed. Therefore the device should not stay locked.
+ }
+ ret = RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, autolockState); // this might re-set it. That's not bad. It will re-notify all listeners.
RDEBUG("Set KCoreAppUIsAutolockStatus", ret);
- ret = RProperty::Define(KPSUidAvkonDomain, KAknKeyguardStatus,
- RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass),
- KWritePolicy);
+ ret = RProperty::Define(KPSUidAvkonDomain, KAknKeyguardStatus, RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass), KWritePolicy);
RDEBUG("defined KAknKeyguardStatus", ret);
- ret = RProperty::Define(KPSUidSecurityUIs,
- KSecurityUIsLockInitiatorUID, RProperty::EInt, readPolicy,
- writePolicy);
+ ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsLockInitiatorUID, RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass), writePolicy);
RDEBUG("defined KSecurityUIsLockInitiatorUID", ret);
- ret = RProperty::Define(KPSUidSecurityUIs,
- KSecurityUIsLockInitiatorTimeHigh, RProperty::EInt, readPolicy,
- writePolicy);
+ ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeHigh, RProperty::EInt, readPolicy, writePolicy);
RDEBUG("defined KSecurityUIsLockInitiatorTimeHigh", ret);
- ret = RProperty::Define(KPSUidSecurityUIs,
- KSecurityUIsLockInitiatorTimeLow, RProperty::EInt, readPolicy,
- writePolicy);
+ ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeLow, RProperty::EInt, readPolicy, writePolicy);
RDEBUG("defined KSecurityUIsLockInitiatorTimeLow", ret);
- ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsLights,
- RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass),
- TSecurityPolicy(TSecurityPolicy::EAlwaysPass));
+ ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsLights, RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass), TSecurityPolicy(TSecurityPolicy::EAlwaysPass));
RDEBUG("defined KAknKeyguardStatus", ret);
- ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsDismissDialog,
- RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass),
- TSecurityPolicy(TSecurityPolicy::EAlwaysPass));
+ ret = RProperty::Define(KPSUidSecurityUIs, KSecurityUIsDismissDialog, RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass), TSecurityPolicy(
+ TSecurityPolicy::EAlwaysPass));
RDEBUG("defined KSecurityUIsDismissDialog", ret);
-
+ // call TARM so that it verifies that configuration is in sync. This might internally accept the (default) lock code, but doesn't dismiss the query.
+ // Note: this is fast : 0.02 seconds
+ RSCPClient scpClientConfiguration;
+ User::LeaveIfError( scpClientConfiguration.Connect() );
+ CleanupClosePushL( scpClientConfiguration );
+ RDEBUG("call CheckConfiguration KSCPComplete", KSCPComplete);
+ TInt finalConfStatus = scpClientConfiguration.CheckConfiguration( KSCPComplete );
+ RDEBUG("finalConfStatus", finalConfStatus);
+ CleanupStack::PopAndDestroy(); // scpClientConfiguration
mService = new AutolockService(this);
/* Adjust the palette */
#if defined(Q_WS_S60)
- // this is defined.
+ // this is defined.
RDEBUG( "Q_WS_S60", 1 );
QPalette p = qApp->palette();
QColor color(192,192,192);
@@ -178,8 +179,8 @@
RDEBUG("connect", 1);
-
#if defined(Q_WS_X11) || defined(Q_WS_WIN)
+ RDEBUG( "Q_WS_X11", 1 );
setFixedSize(QSize(360,640)); // nHD
#elif defined(Q_WS_S60)
// this doesn't work well
@@ -194,10 +195,14 @@
TInt lightsTimeout = 0;
CRepository* repository = NULL;
TInt cRresult = 0;
+ iLockCodeQueryInDisplay = EFalse;
+ Q_UNUSED(cRresult);
+ TInt err = 0;
+ iProcessingEvent = -1;
iLockStatusPrev = ELockNotActive;
iLockStatus = ELockNotActive;
- QT_TRAP_THROWING( repository = CRepository::NewL(KCRUidSecuritySettings) );
+ QT_TRAP_THROWING(repository = CRepository::NewL(KCRUidSecuritySettings));
cRresult = repository->Get(KSettingsAutolockStatus, lockValue);
RDEBUG("KSettingsAutolockStatus", KSettingsAutolockStatus);
RDEBUG("cRresult", cRresult);
@@ -208,91 +213,113 @@
adjustInactivityTimers(0);
- QT_TRAP_THROWING( repository = CRepository::NewL(KCRUidProfileEngine) );
+ QT_TRAP_THROWING(repository = CRepository::NewL(KCRUidProfileEngine));
cRresult = repository->Get(KProEngActiveProfile, lightsTimeout);
// this value is not used for now
delete repository;
- QT_TRAP_THROWING( repository = CRepository::NewL(KCRUidLightSettings) );
+ QT_TRAP_THROWING(repository = CRepository::NewL(KCRUidLightSettings));
cRresult = repository->Get(KDisplayLightsTimeout, lightsTimeout);
// this value is not used for now
delete repository;
// subscribe to settings changes
- subscriberKSettingsAutolockStatus = new QValueSpaceSubscriber(
- "/KCRUidSecuritySettings/KSettingsAutolockStatus", this);
- connect(subscriberKSettingsAutolockStatus, SIGNAL(contentsChanged()),
- this, SLOT(subscriberKSettingsAutolockStatusChanged()));
- subscriberKSettingsAutoLockTime = new QValueSpaceSubscriber(
- "/KCRUidSecuritySettings/KSettingsAutoLockTime", this);
- connect(subscriberKSettingsAutoLockTime, SIGNAL(contentsChanged()), this,
- SLOT(subscriberKSettingsAutoLockTimeChanged()));
- subscriberKSettingsAutomaticKeyguardTime = new QValueSpaceSubscriber(
- "/KCRUidSecuritySettings/KSettingsAutomaticKeyguardTime", this);
- connect(subscriberKSettingsAutomaticKeyguardTime, SIGNAL(
- contentsChanged()), this, SLOT(
- subscriberKSettingsAutomaticKeyguardTimeChanged()));
- subscriberKDisplayLightsTimeout = new QValueSpaceSubscriber(
- "/KCRUidLightSettings/KDisplayLightsTimeout", this);
- connect(subscriberKDisplayLightsTimeout, SIGNAL(contentsChanged()), this,
- SLOT(subscriberKDisplayLightsTimeoutChanged()));
- subscriberKProEngActiveProfile = new QValueSpaceSubscriber(
- "/KCRUidProfileEngine/KProEngActiveProfile", this);
- connect(subscriberKProEngActiveProfile, SIGNAL(contentsChanged()), this,
- SLOT(subscriberKProEngActiveProfileChanged()));
+ subscriberKSettingsAutolockStatus = new QValueSpaceSubscriber("/KCRUidSecuritySettings/KSettingsAutolockStatus", this);
+ err = connect(subscriberKSettingsAutolockStatus, SIGNAL(contentsChanged()), this, SLOT(subscriberKSettingsAutolockStatusChanged()));
+ RDEBUG("err", err);
+ subscriberKSettingsAutoLockTime = new QValueSpaceSubscriber("/KCRUidSecuritySettings/KSettingsAutoLockTime", this);
+ err = connect(subscriberKSettingsAutoLockTime, SIGNAL(contentsChanged()), this, SLOT(subscriberKSettingsAutoLockTimeChanged()));
+ RDEBUG("err", err);
+ subscriberKSettingsAutomaticKeyguardTime = new QValueSpaceSubscriber("/KCRUidSecuritySettings/KSettingsAutomaticKeyguardTime", this);
+ err = connect(subscriberKSettingsAutomaticKeyguardTime, SIGNAL(contentsChanged()), this, SLOT(subscriberKSettingsAutomaticKeyguardTimeChanged()));
+ RDEBUG("err", err);
+ subscriberKDisplayLightsTimeout = new QValueSpaceSubscriber("/KCRUidLightSettings/KDisplayLightsTimeout", this);
+ err = connect(subscriberKDisplayLightsTimeout, SIGNAL(contentsChanged()), this, SLOT(subscriberKDisplayLightsTimeoutChanged()));
+ RDEBUG("err", err);
+ subscriberKProEngActiveProfile = new QValueSpaceSubscriber("/KCRUidProfileEngine/KProEngActiveProfile", this);
+ err = connect(subscriberKProEngActiveProfile, SIGNAL(contentsChanged()), this, SLOT(subscriberKProEngActiveProfileChanged()));
+ RDEBUG("err", err);
+
+ subscriberKSecurityUIsDismissDialog = new QValueSpaceSubscriber("/KPSUidSecurityUIs/KSecurityUIsDismissDialog", this);
+ err = connect(subscriberKSecurityUIsDismissDialog, SIGNAL(contentsChanged()), this, SLOT(subscriberKSecurityUIsDismissDialogChanged()));
+ RDEBUG("err", err);
// subscribe to environment changes
- subscriberKHWRMGripStatus = new QValueSpaceSubscriber(
- "/KPSUidHWRM/KHWRMGripStatus");
- connect(subscriberKHWRMGripStatus, SIGNAL(contentsChanged()), this,
- SLOT(subscriberKHWRMGripStatusChanged()));
+ subscriberKHWRMGripStatus = new QValueSpaceSubscriber("/KPSUidHWRM/KHWRMGripStatus", this);
+ err = connect(subscriberKHWRMGripStatus, SIGNAL(contentsChanged()), this, SLOT(subscriberKHWRMGripStatusChanged()));
+ RDEBUG("err", err);
+
+ subscriberKAknKeyguardStatus = new QValueSpaceSubscriber("/KPSUidAvkonDomain/KAknKeyguardStatus", this);
+ err = connect(subscriberKAknKeyguardStatus, SIGNAL(contentsChanged()), this, SLOT(subscriberKAknKeyguardStatusChanged()));
+ RDEBUG("err", err);
- subscriberKAknKeyguardStatus = new QValueSpaceSubscriber(
- "/KPSUidAvkonDomain/KAknKeyguardStatus");
- connect(subscriberKAknKeyguardStatus, SIGNAL(contentsChanged()), this,
- SLOT(subscriberKAknKeyguardStatusChanged()));
+ subscriberKCoreAppUIsAutolockStatus = new QValueSpaceSubscriber("/KPSUidCoreApplicationUIs/KCoreAppUIsAutolockStatus", this);
+ err = connect(subscriberKCoreAppUIsAutolockStatus, SIGNAL(contentsChanged()), this, SLOT(subscriberKCoreAppUIsAutolockStatusChanged()));
+ RDEBUG("err", err);
- subscriberKCoreAppUIsAutolockStatus = new QValueSpaceSubscriber(
- "/KPSUidCoreApplicationUIs/KCoreAppUIsAutolockStatus");
- connect(subscriberKCoreAppUIsAutolockStatus, SIGNAL(contentsChanged()), this,
- SLOT(subscriberKCoreAppUIsAutolockStatusChanged()));
+ subscriberKCTsyCallState = new QValueSpaceSubscriber("/KPSUidCtsyCallInformation/KCTsyCallState", this);
+ err = connect(subscriberKCTsyCallState, SIGNAL(contentsChanged()), this, SLOT(subscriberKCTsyCallStateChanged()));
+ RDEBUG("err", err);
+ subscriberKSecurityUIsTestCode = new QValueSpaceSubscriber("/KPSUidSecurityUIs/KSecurityUIsTestCode", this);
+ err = connect(subscriberKSecurityUIsTestCode, SIGNAL(contentsChanged()), this, SLOT(subscriberKSecurityUIsTestCodeChanged()));
+ RDEBUG("err", err);
// inactivity
connect(serviceKeyguard, SIGNAL(active()), this, SLOT(activeKeyguard()));
- connect(serviceKeyguard, SIGNAL(notActive()), this, SLOT(
- notActiveKeyguard()));
- connect(serviceDevicelock, SIGNAL(active()), this, SLOT(
- activeDevicelock()));
- connect(serviceDevicelock, SIGNAL(notActive()), this, SLOT(
- notActiveDevicelock()));
+ connect(serviceKeyguard, SIGNAL(notActive()), this, SLOT(notActiveKeyguard()));
+ connect(serviceDevicelock, SIGNAL(active()), this, SLOT(activeDevicelock()));
+ connect(serviceDevicelock, SIGNAL(notActive()), this, SLOT(notActiveDevicelock()));
RWindowGroup& groupWin = CEikonEnv::Static()->RootWin();
RDEBUG("got groupWin", 1);
- // TODO if I want to release, I should do: mKeyCaptureHandle = env->RootWin().CaptureKey(EKeyBackspace, 0, 0);
- groupWin.CaptureKey(EKeyBackspace, 0, 0);
- groupWin.CaptureKey(EKeyDeviceF, 0, 0);
- groupWin.CaptureKey(EKeyBell, 0, 0);
- groupWin.CaptureKey(EKeyTab, 0, 0);
- groupWin.CaptureKey(EKeyInsert, 0, 0);
+ // if I want to release, I should do: mKeyCaptureHandle = env->RootWin().CaptureKey(EKeyBackspace, 0, 0);
+ mEKeyDeviceFCaptureHandle = groupWin.CaptureKey(EKeyDeviceF, 0, 0);
+ RDEBUG("mEKeyDeviceFCaptureHandle", mEKeyDeviceFCaptureHandle);
+ mEKeyBellCaptureHandle = groupWin.CaptureKey(EKeyBell, 0, 0);
+ RDEBUG("mEKeyBellCaptureHandle", mEKeyBellCaptureHandle);
RDEBUG("got mKeyCaptureHandle", 1);
+ iTempDisableOnlyKeyguardBecauseIncomingCall=0;
+
iSecQueryUiCreated = -1;
- iDeviceDialogCreated = -1;
- // TODO for now, always starts unlocked
+ setDeviceDialogStatus( EDeviceDialogUninitialized );
+ iDeviceDialog = NULL;
+ // for now, always starts unlocked. This is correct because if locked, the unlock-query (from starter) is on top
// TryChangeStatus(iLockStatus);
TryChangeStatus( ELockNotActive);
lower();
hide();
- // not needed: new AutolockService(this);
+
+ iDeviceDialog = new HbDeviceDialog(HbDeviceDialog::NoFlags, this);
+ connect(iDeviceDialog, SIGNAL(dataReceived(QVariantMap)), SLOT(handleMessageFromScreensaver(QVariantMap)), Qt::QueuedConnection); // Qt::QueuedConnection needed to avoid deadlock at waitForClosed
+ connect(iDeviceDialog, SIGNAL(deviceDialogClosed()), SLOT(handleScreensaverClosed()));
+
+ // screensaver standby mode timer
+ mScreensaverModeTimer = new QTimer(this);
+ mScreensaverModeTimer->setInterval(5 * 1000); // milliseconds, TODO: read from cenrep
+ connect(mScreensaverModeTimer, SIGNAL(timeout()), SLOT(switchScreensaverToPowerSaveMode()));
+ // screensaver AMOLED low power mode support
+
+ // handled now directly but screensaver
+ // mScreensaverPowerSave = CPowerSaveDisplayMode::NewL();
+ // mScreensaverPowerSavePixelBuffer = HBufC16::NewL(360 * 640);
+ // mScreensaverPowerSavePixelBuffer->Des().Fill(0);
+ RDEBUG("99", 0x99);
}
+// destructor
Autolock::~Autolock()
{
RDEBUG("0", 0);
delete mService;
+ // handled now directly but screensaver
+ // delete mScreensaverPowerSave;
+ // delete mScreensaverPowerSavePixelBuffer;
+ RDEBUG("99", 0x99);
}
+// when detected some settings change, syncronize all of them
void Autolock::adjustInactivityTimers(int aReason)
{
RDEBUG("aReason", aReason);
@@ -300,46 +327,100 @@
TInt lockTime = 0;
CRepository* repository = NULL;
TInt cRresult = 0;
+ Q_UNUSED(cRresult);
- QT_TRAP_THROWING( repository = CRepository::NewL(KCRUidSecuritySettings) );
- cRresult = repository->Get(KSettingsAutomaticKeyguardTime, keyguardTime); // in seconds
+ QT_TRAP_THROWING(repository = CRepository::NewL(KCRUidSecuritySettings));
+ cRresult = repository->Get(KSettingsAutomaticKeyguardTime, keyguardTime); // in seconds
RDEBUG("KSettingsAutomaticKeyguardTime", KSettingsAutomaticKeyguardTime);
RDEBUG("cRresult", cRresult);
RDEBUG("keyguardTime", keyguardTime);
- if (keyguardTime > 0 && keyguardTime < 1000)
+ if (keyguardTime > 2 && keyguardTime < 24 * 60 * 60) // limit it to 1 day
{
serviceKeyguard->setInactivityPeriod(keyguardTime);
}
else
{
- serviceKeyguard->setInactivityPeriod(12 * 31 * 24 * 60 * 60);
+ serviceKeyguard->setInactivityPeriod(12 * 31 * 24 * 60 * 60); // if not set, fake it to 1 year
}
- cRresult = repository->Get(KSettingsAutoLockTime, lockTime); // in minutes, handled internally as seconds
+ cRresult = repository->Get(KSettingsAutoLockTime, lockTime); // in minutes, handled internally as seconds
lockTime *= 60;
RDEBUG("KSettingsAutoLockTime", KSettingsAutoLockTime);
RDEBUG("cRresult", cRresult);
RDEBUG("lockTime", lockTime);
- if(lockTime == 65535*60) // Special setting "lock at same time as keyguard" at CpDeviceLockPluginView::GetAutoLockIndex which uses this magic number
- lockTime = keyguardTime-2; // lock 2 seconds before before, to avoid keyguard->devicelock sequence
- if (lockTime > 60 && lockTime < 24*60*60) // lock timer can't be bigger than 1 day
+ if (lockTime == 65535 * 60) // Special setting "lock at same time as keyguard" at CpDeviceLockPluginView::GetAutoLockIndex which uses this magic number
+ {
+ lockTime = keyguardTime - 2; // lock 2 seconds before keyguard, to avoid keyguard->devicelock sequence
+ if(lockTime<=2)
+ lockTime=2;
+ RDEBUG("new lockTime", lockTime);
+ }
+ if (lockTime >= 2 && lockTime < 24 * 60 * 60) // lock timer can't be bigger than 1 day
{
+ RDEBUG("setInactivityPeriod lockTime", lockTime);
serviceDevicelock->setInactivityPeriod(lockTime);
}
else
{
- serviceDevicelock->setInactivityPeriod(12 * 31 * 24 * 60 * 60); // 0x1ea6e00
+ RDEBUG("setInactivityPeriod infinite", lockTime);
+ serviceDevicelock->setInactivityPeriod(12 * 31 * 24 * 60 * 60); // 0x1ea6e00 = 1 year
}
+ delete repository;
+ RDEBUG("99", 0x99);
+ }
- delete repository;
- }
+// Some external says to quit. It should not happen, but it helps to validate memory leaks
void Autolock::quit()
{
RDEBUG("0", 0);
qApp->quit();
}
+// Inform P&S listeners thatthe screensaver is created/hidden/dismissed . In particular, HbDeviceDialogs needs this to display other pending notes.
+int Autolock::setDeviceDialogStatus(int aStatus)
+ {
+ RDEBUG("aStatus", aStatus);
+ RDEBUG("prev iDeviceDialogStatus", iDeviceDialogStatus);
+ TInt lPSStatus;
+ TInt err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsScreenSaverStatus, lPSStatus);
+ RDEBUG("err", err);
+ RDEBUG("lPSStatus", lPSStatus);
+ if(aStatus>=EDeviceDialogLastValue)
+ {
+ RDEBUG("EDeviceDialogLastValue exceeded by aStatus", aStatus);
+ }
+ else
+ {
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsScreenSaverStatus, aStatus);
+ iDeviceDialogStatus = aStatus;
+ RDEBUG("err", err);
+ }
+ return aStatus;
+ }
+// Adjust the lights. It uses P&S, honoured by SysAp
+int Autolock::TurnLights(int aMode, int aReason, int aCaller)
+ {
+ RDEBUG("aMode", aMode);
+ RDEBUG("aReason", aReason);
+ RDEBUG("aCaller", aCaller);
+ TInt err = 0;
+ if(aMode!=ESecurityUIsLightsLockOffRequest && aMode!=ELockAppDisableKeyguard)
+ {
+ RDEBUG("KLightsSSForcedLightsOn", KLightsSSForcedLightsOn);
+ err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsSSForcedLightsOn, 30);
+ }
+ else
+ {
+ RDEBUG("skip KLightsSSForcedLightsOn because aMode", aMode);
+ }
+ RDEBUG("err", err);
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLights, aMode);
+ RDEBUG("KSecurityUIsLights err", err);
+ return err;
+ }
+
+// When locked, ask for the code. Returns KErrNone or KErrCancel. In other words: this keeps asking until correct code.
int Autolock::AskValidSecCode(int aReason)
{
RDEBUG("aReason", aReason);
@@ -349,19 +430,16 @@
return KErrNone;
#endif
-
TInt err(KErrGeneral);
+ Q_UNUSED(err);
TBool validCode(EFalse);
TInt thisTry(0);
RTelServer iTelServer;
- err = RProperty::Set(KPSUidSecurityUIs,
- KSecurityUIsLights, ESecurityUIsLightsQueryOnRequest);
- RDEBUG("KSecurityUIsLights err", err);
+ TurnLights(ESecurityUIsLightsQueryOnRequest, aReason, 0x10);
RMmCustomAPI iCustomPhone;
- while ((err = iTelServer.Connect()) != KErrNone && (thisTry++)
- <= KTriesToConnectServer)
+ while ((err = iTelServer.Connect()) != KErrNone && (thisTry++) <= KTriesToConnectServer)
{
User::After( KTimeBeforeRetryingServerConnection);
}
@@ -382,18 +460,18 @@
if (aReason == ELockAppDisableDevicelock)
{
RDEBUG("calling AskSecCodeInAutoLockL", 0);
- QT_TRAP_THROWING( validCode = handler->AskSecCodeInAutoLockL() ); // this returns true/false
+ iLockCodeQueryInDisplay = ETrue;
+ QT_TRAP_THROWING(validCode = handler->AskSecCodeInAutoLockL()); // this returns true/false
+ iLockCodeQueryInDisplay = EFalse;
// TODO should this also do iPhone.SetLockSetting(status, lockType, lockChange); ???
}
else if (aReason == ELockAppEnableDevicelock)
{
// check whether code is really needed
- RMobilePhone::TMobilePhoneLock lockType =
- RMobilePhone::ELockPhoneDevice;
+ RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
- RMobilePhone::TMobilePhoneLockSetting lockChange(
- RMobilePhone::ELockSetDisabled);
+ RMobilePhone::TMobilePhoneLockSetting lockChange(RMobilePhone::ELockSetDisabled);
TRequestStatus status = KRequestPending;
TInt ret = KErrNone;
RDEBUG("GetLockInfo", 0);
@@ -403,7 +481,7 @@
ret = status.Int();
RDEBUG("WaitForRequest ret", ret);
#ifdef __WINS__
- if(ret==KErrTimedOut)
+ if (ret == KErrTimedOut)
{
ret = KErrNone;
lockInfo.iSetting = RMobilePhone::ELockSetDisabled; // ask password only if there's no timeout.
@@ -430,11 +508,11 @@
#else
RDEBUG("! OLD_METHOD", 0);
CWait *iWait = NULL;
- QT_TRAP_THROWING( iWait = CWait::NewL() );
+ QT_TRAP_THROWING(iWait = CWait::NewL());
iWait->SetRequestType(EMobilePhoneSetLockSetting);
iPhone.SetLockSetting(iWait->iStatus, lockType, lockChange); // ask for PassPhraseRequiredL
RDEBUG("WaitForRequestL", 0);
- QT_TRAP_THROWING( ret = iWait->WaitForRequestL() );
+ QT_TRAP_THROWING(ret = iWait->WaitForRequestL());
RDEBUG("WaitForRequestL ret", ret);
if (iWait)
{
@@ -451,8 +529,8 @@
RDEBUG("WaitForRequestL ret", ret);
#ifdef __WINS__
- if(ret==KErrTimedOut)
- ret = KErrNone;
+ if (ret == KErrTimedOut)
+ ret = KErrNone;
#endif
if (ret == KErrNone)
validCode = 1;
@@ -460,145 +538,184 @@
validCode = 0;
}
else
- {
- RDEBUG("RMobilePhone::ELockSetEnabled", RMobilePhone::ELockSetEnabled);
- RDEBUG("lockInfo.iSetting = RMobilePhone::ELockSetEnabled", RMobilePhone::ELockSetEnabled);
+ {
+ RDEBUG("RMobilePhone::ELockSetEnabled", RMobilePhone::ELockSetEnabled);
+ RDEBUG("lockInfo.iSetting = RMobilePhone::ELockSetEnabled", RMobilePhone::ELockSetEnabled);
validCode = 0x20;
- }
+ }
}
else
{
RDEBUG("Error: ret", ret);
validCode = 0x21;
- }
+ }
/* Alternative way to ask for password
RMobilePhone::TMobilePhoneSecurityEvent iEvent;
TInt result = KErrNone;
iEvent = RMobilePhone::EPhonePasswordRequired;
RDEBUG( "calling HandleEventL", 0 );
- handler->HandleEventL(iEvent, result); // this is supposed to wait
+ handler->HandleEventL(iEvent, result); // this is supposed to wait
validCode = false;
if(result)
validCode = true;
RDEBUG( "result", result );
*/
}
- // TODO this doesn't wait on WINS , so how do I get the Acceptation?
RDEBUG("validCode", validCode);
- if (validCode>0)
+ if (validCode > 0)
return KErrNone;
- // no valid code -> switch off the lights
- err = RProperty::Set(KPSUidSecurityUIs,
- KSecurityUIsLights, ESecurityUIsLightsLockOffRequest);
- RDEBUG("KSecurityUIsLights err", err);
+ // no valid code -> switch off the lights
+ TurnLights(ESecurityUIsLightsLockOffRequest, aReason, 0x12);
return KErrCancel;
}
+// The API client might inform that it got our answer. Nothing to do.
void Autolock::handleAnswerDelivered()
{
RDEBUG("0", 0);
// quit();
}
-
+// This was used when Autolock-debug had a label to display the request. Not in use any more
void Autolock::setLabelNumber(QString label, QString number)
{
RDEBUG("0", 0);
}
+// Used on debug environment for printing the Request in understandable format
void Autolock::DebugRequest(int aReason)
{
switch (aReason)
{
case ELockAppEnableKeyguard:
- RDEBUG("ELockAppEnableKeyguard", aReason);
+ RDEBUG("ELockAppEnableKeyguard", aReason)
+ ;
break;
case ELockAppDisableKeyguard:
- RDEBUG("ELockAppDisableKeyguard", aReason);
+ RDEBUG("ELockAppDisableKeyguard", aReason)
+ ;
break;
case ELockAppEnableDevicelock:
- RDEBUG("ELockAppEnableDevicelock", aReason);
+ RDEBUG("ELockAppEnableDevicelock", aReason)
+ ;
break;
case ELockAppDisableDevicelock:
- RDEBUG("ELockAppDisableDevicelock", aReason);
+ RDEBUG("ELockAppDisableDevicelock", aReason)
+ ;
break;
case ELockAppOfferKeyguard:
- RDEBUG("ELockAppOfferKeyguard", aReason);
+ RDEBUG("ELockAppOfferKeyguard", aReason)
+ ;
break;
case ELockAppOfferDevicelock:
- RDEBUG("ELockAppOfferDevicelock", aReason);
+ RDEBUG("ELockAppOfferDevicelock", aReason)
+ ;
break;
case ELockAppShowKeysLockedNote:
- RDEBUG("ELockAppShowKeysLockedNote", aReason);
+ RDEBUG("ELockAppShowKeysLockedNote", aReason)
+ ;
break;
default:
- RDEBUG("default", aReason);
+ RDEBUG("default", aReason)
+ ;
break;
}
}
+// Used on debug environment for printing the Status in understandable format
void Autolock::DebugStatus(int aReason)
{
switch (aReason)
{
case ELockNotActive:
- RDEBUG("ELockNotActive", aReason);
+ RDEBUG("ELockNotActive", aReason)
+ ;
break;
case EKeyguardActive:
- RDEBUG("EKeyguardActive", aReason);
+ RDEBUG("EKeyguardActive", aReason)
+ ;
break;
case EDevicelockActive:
- RDEBUG("EDevicelockActive", aReason);
+ RDEBUG("EDevicelockActive", aReason)
+ ;
break;
default:
- RDEBUG("default", aReason);
+ RDEBUG("default", aReason)
+ ;
break;
}
}
+// Used on debug environment for printing the Error in understandable format
void Autolock::DebugError(int aReason)
{
switch (aReason)
{
case KErrNone:
- RDEBUG("KErrNone", aReason);
+ RDEBUG("KErrNone", aReason)
+ ;
break;
- case KErrPermissionDenied: // caller doesn't have enough capabilities
- RDEBUG("KErrPermissionDenied", aReason);
+ case KErrPermissionDenied: // caller doesn't have enough capabilities
+ RDEBUG("KErrPermissionDenied", aReason)
+ ;
break;
- case KErrAlreadyExists: // this particular lock is already enabled
- RDEBUG("KErrAlreadyExists", aReason);
+ case KErrAlreadyExists: // this particular lock is already enabled
+ RDEBUG("KErrAlreadyExists", aReason)
+ ;
break;
- case KErrInUse: // the dialog is already shown
- RDEBUG("KErrInUse", aReason);
+ case KErrInUse: // the dialog is already shown
+ RDEBUG("KErrInUse", aReason)
+ ;
+ break;
+ case KErrLocked: // never happens
+ RDEBUG("KErrLocked", aReason)
+ ;
break;
default:
- RDEBUG("default", aReason);
+ RDEBUG("default", aReason)
+ ;
break;
}
}
-
+// Check whether the future status is valid.
+// Typical reasons for failure include: not correct status for this operation, lack of capabilities.
+// Note that other things are handled in specific places: Active call, grip open, query on top
int Autolock::CheckIfLegal(int aReason)
{
RDEBUG("aReason", aReason);
- // check whether a dialog is already displayed. This is to prevent timeout-lock and timeout-keyguard for activated on top of a PIN query, in particular at boot-up (TODO Starter)
+ // check whether a dialog is already displayed. This is to prevent timeout-lock and timeout-keyguard activated on top of a PIN query, in particular at boot-up (TODO check for Starter)
TInt secUiOriginatedQuery(ESecurityUIsSecUIOriginatedUninitialized);
- TInt err = RProperty::Get(KPSUidSecurityUIs,
- KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
+ TInt err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
RDEBUG("err", err);
RDEBUG("secUiOriginatedQuery", secUiOriginatedQuery);
+
+ TInt startupValue(EStartupUiPhaseUninitialized);
+ err = RProperty::Get(KPSUidStartup, KPSStartupUiPhase, startupValue);
+ RDEBUG("err", err);
+ RDEBUG("startupValue", startupValue);
+
+ TInt simStatusValue(0);
+ err = RProperty::Get(KPSUidStartup, KPSSimStatus, simStatusValue);
+ RDEBUG("err", err);
+ RDEBUG("simStatusValue", simStatusValue);
+ if(startupValue<EStartupUiPhaseAllDone && aReason!=ELockAppDisableKeyguard && aReason!=ELockAppDisableDevicelock )
+ {
+ // before bootup, it can't be manually nor automatically keyguarded/locked
+ RDEBUG("before bootup, it can't be manually nor automatically keyguarded/locked KErrInUse", KErrInUse);
+ return KErrInUse;
+ }
+
switch (aReason)
{
case ELockAppEnableKeyguard:
{
RDEBUG("ELockAppEnableKeyguard iLockStatus", iLockStatus);
- if (secUiOriginatedQuery
- != ESecurityUIsSecUIOriginatedUninitialized)
+ if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized)
return KErrInUse; // PIN on top. Don't keyguard
switch (iLockStatus)
{
case ELockNotActive:
- if (1 == 0) // !CKeyLockPolicyApi::KeyguardAllowed() )
+ if (!CKeyLockPolicyApi::KeyguardAllowed())
return KErrPermissionDenied;
else
return KErrNone;
@@ -627,10 +744,7 @@
case ELockAppEnableDevicelock:
{
RDEBUG("ELockAppEnableDevicelock iLockStatus", iLockStatus);
- if (secUiOriginatedQuery
- != ESecurityUIsSecUIOriginatedUninitialized
- && secUiOriginatedQuery
- != ESecurityUIsSystemLockOriginated)
+ if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized && secUiOriginatedQuery != ESecurityUIsSystemLockOriginated)
return KErrInUse; // PIN on top. Don't devicelock
switch (iLockStatus)
{
@@ -646,12 +760,12 @@
case ELockAppDisableDevicelock:
{
RDEBUG("ELockAppDisableDevicelock iLockStatus", iLockStatus);
- if (secUiOriginatedQuery
- != ESecurityUIsSecUIOriginatedUninitialized
- && secUiOriginatedQuery
- != ESecurityUIsSystemLockOriginated)
+ if (iLockCodeQueryInDisplay)
{
// PIN on top and trying to display unlock-code. This is valid
+ // but needs to turn on lights because SysAp switches them off even if query is present
+ TurnLights(ESecurityUIsLightsQueryOnRequest, aReason, 0x13);
+ return KErrAlreadyExists;
}
switch (iLockStatus)
{
@@ -667,10 +781,7 @@
case ELockAppOfferKeyguard:
{
RDEBUG("ELockAppOfferKeyguard iLockStatus", iLockStatus);
- if (secUiOriginatedQuery
- != ESecurityUIsSecUIOriginatedUninitialized
- && secUiOriginatedQuery
- != ESecurityUIsSystemLockOriginated)
+ if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized && secUiOriginatedQuery != ESecurityUIsSystemLockOriginated)
return KErrInUse; // PIN on top. Don't offer
switch (iLockStatus)
{
@@ -686,10 +797,7 @@
case ELockAppOfferDevicelock:
{
RDEBUG("ELockAppOfferDevicelock iLockStatus", iLockStatus);
- if (secUiOriginatedQuery
- != ESecurityUIsSecUIOriginatedUninitialized
- && secUiOriginatedQuery
- != ESecurityUIsSystemLockOriginated)
+ if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized && secUiOriginatedQuery != ESecurityUIsSystemLockOriginated)
return KErrInUse; // PIN on top. Don't offer
switch (iLockStatus)
{
@@ -705,10 +813,7 @@
case ELockAppShowKeysLockedNote:
{
RDEBUG("ELockAppShowKeysLockedNote iLockStatus", iLockStatus);
- if (secUiOriginatedQuery
- != ESecurityUIsSecUIOriginatedUninitialized
- && secUiOriginatedQuery
- != ESecurityUIsSystemLockOriginated)
+ if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized && secUiOriginatedQuery != ESecurityUIsSystemLockOriginated)
return KErrInUse; // PIN on top. Don't display
switch (iLockStatus)
{
@@ -716,7 +821,7 @@
return KErrPermissionDenied;
case EKeyguardActive:
return KErrNone;
- case EDevicelockActive:
+ case EDevicelockActive: // TODO confirm this. CMMKeyBearer::ReceivedKeyEvent expects KErrNone if keypad is locked
return KErrPermissionDenied;
}
}
@@ -731,32 +836,51 @@
return KErrPermissionDenied;
}
+// After a succesful status change, communicate it to the world, using P&S and CenRep
int Autolock::publishStatus(int aReason)
{
RDEBUG("aReason", aReason);
- TInt err;
+ Q_UNUSED(aReason);
+ TInt err = KErrNone;
+ Q_UNUSED(err);
// can't use include file because it's private file. However it gives permissions
- const TUid KCRUidCoreApplicationUIsSysAp = { 0x101F8765 };
+ const TUid KCRUidCoreApplicationUIsSysAp =
+ {
+ 0x101F8765
+ };
const TUint32 KSysApKeyguardActive = 0x00000001;
CRepository* repositoryDevicelock = NULL;
CRepository* repositoryKeyguard = NULL;
- QT_TRAP_THROWING( repositoryDevicelock = CRepository::NewL(KCRUidSecuritySettings) );
- QT_TRAP_THROWING( repositoryKeyguard = CRepository::NewL(KCRUidCoreApplicationUIsSysAp) );
+ QT_TRAP_THROWING(repositoryDevicelock = CRepository::NewL(KCRUidSecuritySettings));
+ QT_TRAP_THROWING(repositoryKeyguard = CRepository::NewL(KCRUidCoreApplicationUIsSysAp));
TInt cRresult = KErrNone;
+ Q_UNUSED(cRresult);
+
+ TInt autolockState;
+ err = RProperty::Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, autolockState);
+ RDEBUG("Get KCoreAppUIsAutolockStatus", err);
+ RDEBUG("autolockState", autolockState);
+
if (1 == 1) // this is a quick way to disable this functionality, for testing
{
RDEBUG("publishing", aReason);
if (aReason == ELockNotActive)
{
- err = RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus,
- EKeyguardNotActive);
+ err = RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus, EKeyguardNotActive);
RDEBUG("err", err);
- err = RProperty::Set(KPSUidCoreApplicationUIs,
- KCoreAppUIsAutolockStatus, EAutolockOff);
- RDEBUG("err", err);
- // lights are required ?
+ if(autolockState!=EAutolockOff)
+ {
+ err = RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOff);
+ RDEBUG("err", err);
+ }
+ else
+ {
+ RDEBUG("not set KCoreAppUIsAutolockStatus because already ", EAutolockOff);
+ }
+ // Not needed. SysAp turns the lights when keyguard is disabled
+ // TurnLights(ESecurityUIsLightsLockOnRequest, aReason, 0x14);
- // cRresult = repositoryDevicelock->Set(KSettingsAutolockStatus, 0); // the settings remains. Only ISA changes, as well as the P&S
+ // cRresult = repositoryDevicelock->Set(KSettingsAutolockStatus, 0); // the settings remains. Only ISA changes, as well as the P&S
cRresult = repositoryKeyguard->Set(KSysApKeyguardActive, 0);
RDEBUG("cRresult", cRresult);
}
@@ -764,30 +888,36 @@
{
if (aReason == EKeyguardActive)
{
- err = RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus,
- EKeyguardLocked);
- RDEBUG("KAknKeyguardStatus err", err);
- err = RProperty::Set(KPSUidCoreApplicationUIs,
- KCoreAppUIsAutolockStatus, EAutolockOff);
- RDEBUG("KCoreAppUIsAutolockStatus err", err);
- err = RProperty::Set(KPSUidSecurityUIs,
- KSecurityUIsLights, ESecurityUIsLightsLockOffRequest); // same for keyguard and devicelock
- RDEBUG("KSecurityUIsLights err", err);
+ err = RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus, EKeyguardLocked);
+ RDEBUG("KAknKeyguardStatus err", err);
+ if(autolockState!=EAutolockOff)
+ {
+ err = RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOff);
+ RDEBUG("KCoreAppUIsAutolockStatus err", err);
+ }
+ else
+ {
+ RDEBUG("not set KCoreAppUIsAutolockStatus because already ", EAutolockOff);
+ }
+ TurnLights(ESecurityUIsLightsLockOffRequest, aReason, 0x16); // same for keyguard and devicelock
// cRresult = repositoryDevicelock->Set(KSettingsAutolockStatus, 0);
cRresult = repositoryKeyguard->Set(KSysApKeyguardActive, 1);
RDEBUG("cRresult", cRresult);
}
else if (aReason >= EDevicelockActive)
{
- err = RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus,
- EKeyguardAutolockEmulation); // Other candidates might be: EKeyguardLocked and EKeyguardNotActive
- RDEBUG("KAknKeyguardStatus err", err);
- err = RProperty::Set(KPSUidCoreApplicationUIs,
- KCoreAppUIsAutolockStatus, EManualLocked);
- RDEBUG("KCoreAppUIsAutolockStatus err", err);
- err = RProperty::Set(KPSUidSecurityUIs,
- KSecurityUIsLights, ESecurityUIsLightsLockOffRequest);
- RDEBUG(" KSecurityUIsLights err", err);
+ err = RProperty::Set(KPSUidAvkonDomain, KAknKeyguardStatus, EKeyguardLocked); // previously EKeyguardAutolockEmulation, but then Telephone doesn't understand that it's keyguarded. Other candidates might be: EKeyguardLocked and EKeyguardNotActive
+ RDEBUG("KAknKeyguardStatus err", err);
+ if(autolockState!=EManualLocked)
+ {
+ err = RProperty::Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EManualLocked);
+ RDEBUG("KCoreAppUIsAutolockStatus err", err);
+ }
+ else
+ {
+ RDEBUG("not set KCoreAppUIsAutolockStatus because already ", EManualLocked);
+ }
+ TurnLights(ESecurityUIsLightsQueryOnRequest, aReason, 0x18);
// cRresult = repositoryDevicelock->Set(KSettingsAutolockStatus, 1);
cRresult = repositoryKeyguard->Set(KSysApKeyguardActive, 0); // keyguard disabled, so that user can type and DeviceF can be captured
RDEBUG("cRresult", cRresult);
@@ -802,11 +932,16 @@
RDEBUG("setting iLockStatus", iLockStatus);
return KErrNone;
}
-/********************/
+// Shows a note. This is used from the API to inform about actions. The side-switch-key and the automatic lock will not show notes.
int Autolock::showNoteIfRequested(int aReason)
{
RDEBUG("aReason", aReason);
-
+ // The notes are displayed. This is useful only for the API withNote, and ELockAppShowKeysLockedNote
+ // However, it has some inconvenients:
+ // - the screensaver already displays/hides
+ // - the notes are shown behing the icon because they have lower priorities
+ // - they are annoying
+ // TODO translate
if (aReason == ELockNotActive)
{
if (iShowKeyguardNote == 1)
@@ -819,6 +954,7 @@
if (iShowKeyguardNote == 1)
{
HbDeviceMessageBox::information("Keyguard activated");
+ // this already waits a bit because the lock-icon takes some time to display. So the note is visible before the lock-icon.
}
}
else if (aReason >= EDevicelockActive) // this doesn't happen, but we are prepared nevertheless
@@ -830,7 +966,9 @@
}
return KErrNone;
}
-/***********************/
+// Does the logic and actions for changing status.
+// This is the main function of this program.
+// On every status, the process is the same: continue with next step only if previous one is successful.
int Autolock::TryChangeStatus(int aReason)
{
RDEBUG("aReason", aReason);
@@ -838,10 +976,13 @@
int errorInProcess = KErrNone;
DebugRequest(ret);
- TInt err = RProperty::Set(KPSUidSecurityUIs,
- KSecurityUIsDismissDialog,
- ESecurityUIsDismissDialogOn);
- RDEBUG("err", err);
+ TInt err = KErrNone;
+ Q_UNUSED(err);
+ // this will NOT cancel any previous dialog, i.e. PIN query, or any previous code-request.
+ // not sure about the screensaver, but nevertheless will be cancelled when the status is changed.
+ RDEBUG("Not setting KSecurityUIsDismissDialog ESecurityUIsDismissDialogOn", ESecurityUIsDismissDialogOn);
+ //// err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsDismissDialog, ESecurityUIsDismissDialogOn);
+ RDEBUG("err", err);
switch (ret)
{
case ELockAppEnableKeyguard: // 1
@@ -850,11 +991,20 @@
DebugError(errorInProcess);
if (errorInProcess == KErrNone)
{
- setLabelIcon( EKeyguardActive);
+ showNoteIfRequested( EKeyguardActive);
+ setLabelIcon(EKeyguardActive);
updateIndicator(EKeyguardActive);
publishStatus(EKeyguardActive);
- showNoteIfRequested(EKeyguardActive);
+ setLockDialog(aReason, EDeviceDialogCreated);
}
+ // Telephone might want to re-enable only-keyguard after the call ends. Allow it. This means re-showing the screensaver, not more.
+ // Note: this is already done in CallStateChanged, so it's useless. Therefore it expects KErrLocked, which never happens
+ if (errorInProcess == KErrLocked && iTempDisableOnlyKeyguardBecauseIncomingCall==1)
+ {
+ RDEBUG("allowing telephone to re-enable keyguard . Call setLockDialog EDeviceDialogScreenSaverReDisplay", EDeviceDialogScreenSaverReDisplay);
+ setLockDialog(aReason, EDeviceDialogScreenSaverReDisplay);
+ iTempDisableOnlyKeyguardBecauseIncomingCall=0;
+ }
}
break;
case ELockAppDisableKeyguard: // 2
@@ -863,12 +1013,30 @@
DebugError(errorInProcess);
if (errorInProcess == KErrNone)
{
- setLabelIcon( ELockNotActive);
+ showNoteIfRequested( ELockNotActive);
+ setLabelIcon(ELockNotActive);
updateIndicator(ELockNotActive);
publishStatus(ELockNotActive);
- showNoteIfRequested(ELockNotActive);
+ setLockDialog(aReason, EDeviceDialogDestroyed);
}
}
+ RDEBUG("errorInProcess", errorInProcess);
+ // Telephone might want to disable only-keyguard during a call. Allow it. This means hiding the screensaver, not more.
+ // Note: this is already done in CallStateChanged, so it's useless. Therefore it expects KErrLocked, which never happens
+ if(errorInProcess==KErrLocked)
+ {
+ TInt aCallStatus=-1;
+ TInt err = RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, aCallStatus);
+ RDEBUG("err", err);
+ RDEBUG("aCallStatus", aCallStatus);
+ if (aCallStatus != EPSCTsyCallStateUninitialized && aCallStatus != EPSCTsyCallStateNone)
+ {
+ RDEBUG("allowing telephone to disable keyguard . Call setLockDialog EDeviceDialogScreenSaverHidden", EDeviceDialogScreenSaverHidden);
+ setLockDialog(aReason, EDeviceDialogScreenSaverHidden);
+ iTempDisableOnlyKeyguardBecauseIncomingCall=1;
+ errorInProcess=KErrNone;
+ }
+ }
break;
case ELockAppEnableDevicelock: // 3
{
@@ -885,7 +1053,7 @@
updateIndicator( EDevicelockActive);
publishStatus(EDevicelockActive);
setLabelIcon(EDevicelockActive);
- setLockDialog(aReason, 1);
+ setLockDialog(aReason, EDeviceDialogCreated);
}
// aParam1 is aReason : EDevicelockManual, EDevicelockRemote
// this never shows a note
@@ -903,30 +1071,54 @@
}
if (errorInProcess == KErrNone)
{
- setLockDialog(aReason, 0); // hide temporarilly because HbDeviceMessageBox doesn't get in top of the Lock-icon. Thus, dismiss it.
- RDEBUG("calling HbDeviceMessageBox::question", 0);
- bool value = HbDeviceMessageBox::question("Disable Lock?"); // this doesn't block other events, so after return everything might be messed up.
+ RDEBUG("skip setLockDialog", 0);
+ // No need to disable screensaver. Notes now can get on top. Also, this avoids the transition Screensaver->unlockQuery, which produces flicker on HomeScreen.
+ setLockDialog(aReason, EDeviceDialogScreenSaverHidden); // Hide temporarilly because HbDeviceMessageBox doesn't get in top of the Lock-icon. Thus, dismiss it.
+ // do I need to enable touch? it seems to work without it
+ // in any case, lights are needed
+ TurnLights(ESecurityUIsLightsQueryOnRequest, aReason, 0x20);
+ bool value = true;
+ // not sure whether this question is really needed. The UI doesn't say anything, so I remove it for now.
+ RDEBUG("not calling HbDeviceMessageBox::question", 0);
+ // value = HbDeviceMessageBox::question("Disable Lock?"); // this doesn't block other events, so after return everything might be messed up.
RDEBUG("value", value);
if (!value)
errorInProcess = KErrCancel;
}
if (errorInProcess == KErrNone)
{
- setLockDialog(aReason, 0); // hide temporarilly because AskValidSecCode doesn't get in top of the Lock-icon. Thus, dismiss it.
+ RDEBUG("skip setLockDialog", 0);
+ // No need to disable screensaver. Notes now can get on top. Also, this avoids the transition Screensaver->unlockQuery, which produces flicker on HomeScreen.
+ setLockDialog(aReason, EDeviceDialogScreenSaverHidden); // hide temporarilly because AskValidSecCode doesn't get in top of the Lock-icon. Thus, dismiss it.
RDEBUG("calling AskValidSecCode", 0);
errorInProcess = AskValidSecCode(ELockAppDisableDevicelock);
RDEBUG("errorInProcess", errorInProcess);
}
if (errorInProcess == KErrNone)
{
+ // code is correct. Time to destroy the lock-icon
setLabelIcon( ELockNotActive);
updateIndicator(ELockNotActive);
+ setLockDialog(aReason, EDeviceDialogDestroyed);
publishStatus(ELockNotActive);
}
- if (errorInProcess != KErrNone)
- { // re-lock. For example, if password is wrong
- if( iLockStatus >=EDevicelockActive) // this skips the case "unlocking although it wan't locked"
- setLockDialog(aReason, 1);
+ else // errorInProcess != KErrNone
+ { // re-lock. For example, if password is cancelled. Remember that this applies also for the case KErrPermissionDenied
+ TInt aCallStatus=-1;
+ TInt skipScreenSaver=0;
+ TInt err = RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, aCallStatus);
+ RDEBUG("err", err);
+ RDEBUG("aCallStatus", aCallStatus);
+ if (aCallStatus != EPSCTsyCallStateUninitialized && aCallStatus != EPSCTsyCallStateNone)
+ {
+ // if there's an active call and the query is cancelled, screensaver should not show.
+ skipScreenSaver=1; // if it's skipped, it will be set at CallStateChanged
+ RDEBUG("new skipScreenSaver", skipScreenSaver);
+ }
+ RDEBUG("skipScreenSaver", skipScreenSaver);
+ if (iLockStatus >= EDevicelockActive) // this skips the case "unlocking although it wasn't locked"
+ if(!skipScreenSaver)
+ setLockDialog(ELockAppEnableDevicelock, EDeviceDialogScreenSaverReDisplay);
}
// this never shows a note
}
@@ -937,14 +1129,20 @@
DebugError(errorInProcess);
if (errorInProcess == KErrNone)
{
- bool value = HbDeviceMessageBox::question("Enable Keyguard?"); // this doesn't block other events, so after return everything might be messed up.
- // TODO what about a nice icon?
+ // no need to dismiss screensaver, because it's not active
+ // what about any PIN-query, i.e. from settings ? In this case, the query will show after the PIN query is finished. somehow this is good because PIN is more important
+ bool value = HbDeviceMessageBox::question("Enable Keyguard?"); // this doesn't block other events, so after return everything might be messed up i.e. the time-out might have triggered.
+ // what about a nice icon?
RDEBUG("value", value);
if (!value)
errorInProcess = KErrCancel;
}
if (errorInProcess == KErrNone)
{
+ errorInProcess = CheckIfLegal(ret); // confirm that it's still possible to do it. For example, if API did a lock
+ }
+ if (errorInProcess == KErrNone)
+ {
errorInProcess = TryChangeStatus(ELockAppEnableKeyguard);
}
// this never shows a note
@@ -956,9 +1154,11 @@
DebugError(errorInProcess);
if (errorInProcess == KErrNone)
{
- setLockDialog(aReason, 0); // hide temporarilly because AskValidSecCode doesn't get in top of the Lock-icon. Thus, dismiss it.
- errorInProcess = AskValidSecCode(ELockAppEnableDevicelock);
- }
+ RDEBUG("skip setLockDialog", 0);
+ // No need to disable screensaver. Notes now can get on top. Also, this avoids the transition Screensaver->unlockQuery, which produces flicker on HomeScreen.
+ setLockDialog(aReason, EDeviceDialogScreenSaverHidden); // hide temporarilly because AskValidSecCode doesn't get in top of the Lock-icon. Thus, dismiss it.
+ errorInProcess = AskValidSecCode(ELockAppEnableDevicelock);
+ }
if (errorInProcess == KErrNone)
{
RDEBUG("ELockAppOfferDevicelock calling ELockAppEnableDevicelock", ELockAppEnableDevicelock);
@@ -967,75 +1167,150 @@
// this never shows a note. Perhaps ELockAppEnableDevicelock does.
}
break;
- case ELockAppShowKeysLockedNote: // 7
+ case ELockAppShowKeysLockedNote: // 7
{
- errorInProcess = CheckIfLegal(ret); // it will not be legal if the keyguard is not enabled and the devicelock is not enabled.
+ errorInProcess = CheckIfLegal(ret); // it will not be legal if the keyguard is not enabled and the devicelock is not enabled.
DebugError(errorInProcess);
if (errorInProcess == KErrNone)
{
iShowKeyguardNote = 1; // this is not sent as parameter, so we need to fake it: ON
- showNoteIfRequested( EKeyguardActive);
- }
+ showNoteIfRequested( EKeyguardActive);
+ }
}
break;
default:
+ {
RDEBUG("default", ret);
errorInProcess = KErrNotSupported;
+ }
break;
}
+ RDEBUG("errorInProcess", errorInProcess);
return errorInProcess;
}
-/**************************/
-int Autolock::setLockDialog(int aReason, int status)
+// Shows or hides the Screensaver/LockIcon
+int Autolock::setLockDialog(int aReason, int target)
{
RDEBUG("aReason", aReason);
- RDEBUG("status", status);
- RDEBUG("iDeviceDialogCreated", iDeviceDialogCreated);
+ RDEBUG("target", target);
+ RDEBUG("iDeviceDialogStatus", iDeviceDialogStatus);
TInt secUiOriginatedQuery(ESecurityUIsSecUIOriginatedUninitialized);
- TInt err = RProperty::Get(KPSUidSecurityUIs,
- KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
+ TInt err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
RDEBUG("err", err);
RDEBUG("secUiOriginatedQuery", secUiOriginatedQuery);
- if (status == 0) // hide
+ RWindowGroup& groupWin = CEikonEnv::Static()->RootWin();
+
+ if (target == EDeviceDialogDestroyed || target == EDeviceDialogScreenSaverHidden) // hide
{
+ RDEBUG("ReleaseContext", R_AVKON_DEFAULT_SKEY_LIST);
+ static_cast<CAknAppUi*>(CEikonEnv::Static()->EikAppUi())->KeySounds()->ReleaseContext();
+ RDEBUG("PopContext", 0x90);
+ static_cast<CAknAppUi*>(CEikonEnv::Static()->EikAppUi())->KeySounds()->PopContext();
+ RDEBUG("ReleaseContext done", 0x92);
+
+ // aReason is not important here, but let's check nevertheless
+ if (aReason != ELockAppDisableKeyguard && aReason != ELockAppDisableDevicelock && aReason != ELockAppOfferDevicelock)
+ {
+ RDEBUG("!!!!****!!!!! error. target=0 but aReason", aReason);
+ }
// secUiOriginatedQuery should be ESecurityUIsSystemLockOriginated . If not, this is not correctly setting it
- if (iDeviceDialogCreated > 0)
+ if (iDeviceDialogStatus >= EDeviceDialogCreated)
{
- iDeviceDialogCreated = 0;
- iDeviceDialog->cancel();
- err = iDeviceDialog->error();
- RDEBUG("err", err);
- TInt err = RProperty::Set(KPSUidSecurityUIs,
- KSecurityUIsSecUIOriginatedQuery,
- ESecurityUIsSecUIOriginatedUninitialized);
- RDEBUG("err", err);
+ if(mScreensaverModeTimer)
+ {
+ RDEBUG("mScreensaverModeTimer->stop()", 0);
+ mScreensaverModeTimer->stop();
+ }
+ if(target == EDeviceDialogDestroyed)
+ {
+ disconnect(iDeviceDialog, SIGNAL(dataReceived(QVariantMap)), this, SLOT(handleMessageFromScreensaver(QVariantMap)));
+ disconnect(iDeviceDialog, SIGNAL(deviceDialogClosed()), this, SLOT(handleScreensaverClosed()));
+ RDEBUG("signal disconnected", err);
+ // TODO this used to crash for EDeviceDialogScreenSaver. Not anymore.
+ err = iDeviceDialog->cancel();
+ RDEBUG("cancel (bool: 1= wellCancelled) err", err);
+ err = iDeviceDialog->error();
+ RDEBUG("err", err);
+ RDEBUG("calling iDeviceDialog->waitForClosed()", 0);
+ err = iDeviceDialog->waitForClosed();
+ RDEBUG("cancel (bool: 1= well waitForClosed) err", err);
+ err = iDeviceDialog->error();
+ RDEBUG("err", err);
+ handleScreensaverClosed();
+ RDEBUG("deleting iDeviceDialog", 0);
+ delete iDeviceDialog;
+ RDEBUG("deleted iDeviceDialog", 1);
+ iDeviceDialog = NULL;
+ }
+ else if(target == EDeviceDialogScreenSaverHidden)
+ {
+ RDEBUG("calling switchScreensaverMode", ESnsrViewTypeDisabled);
+ switchScreensaverMode( ESnsrViewTypeDisabled);
+ }
+
+ TInt err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginatedUninitialized);
+ RDEBUG("reset KSecurityUIsSecUIOriginatedQuery. err", err);
+
+ // Lights will be on by SysAp when screen is un-keyguarded
+ // TurnLights(ESecurityUIsLightsQueryOnRequest, aReason, 0x22); // let's bring light into HomeScreen
+ // Cancel power key and application key capturing
+ groupWin.CancelCaptureKey(mPowerKeyCaptureHandle);
+ groupWin.CancelCaptureKey(mApplicationKeyCaptureHandle);
+ groupWin.CancelCaptureLongKey(mApplicationLongKeyCaptureHandle);
+ RDEBUG("done CancelCaptureKey", 1);
+ if (mEKeyYesCaptureHandle)
+ {
+ RDEBUG("mEKeyYesCaptureHandle", mEKeyYesCaptureHandle);
+ groupWin.CancelCaptureKey(mEKeyYesCaptureHandle);
+ mEKeyYesCaptureHandle = NULL;
+ }
+ if (mEKeyNoCaptureHandle)
+ {
+ RDEBUG("mEKeyNoCaptureHandle", mEKeyNoCaptureHandle);
+ groupWin.CancelCaptureKey(mEKeyNoCaptureHandle);
+ mEKeyNoCaptureHandle = NULL;
+ }
+ setDeviceDialogStatus( target );
}
}
- else if (status == 1) // show
+ else if (target == EDeviceDialogCreated || target == EDeviceDialogScreenSaverReDisplay) // show
{
+ RDEBUG("PushContextL", R_AVKON_DEFAULT_SKEY_LIST);
+ static_cast<CAknAppUi*>(CEikonEnv::Static()->EikAppUi())->KeySounds()->PushContextL(R_AVKON_SILENT_SKEY_LIST);
+ RDEBUG("BringToForeground", 0x90);
+ static_cast<CAknAppUi*>(CEikonEnv::Static()->EikAppUi())->KeySounds()->BringToForeground();
+ RDEBUG("LockContext", 0x91);
+ static_cast<CAknAppUi*>(CEikonEnv::Static()->EikAppUi())->KeySounds()->LockContext();
+ RDEBUG("PushContextL Done", 0x92);
+
// secUiOriginatedQuery should be ESecurityUIsSecUIOriginatedUninitialized . If not, the validation is not correctly filtering it
QVariantMap params;
- TBool err;
-#define ESecUiTypeDeviceLock 0x00100000
-#define ESecUiTypeKeyguard 0x00200000
+ TBool err=EFalse;
- if (aReason == EKeyguardActive)
+ if (aReason == ELockAppEnableKeyguard)
params.insert("type", ESecUiTypeKeyguard);
- else if (aReason >= EDevicelockActive)
+ else if (aReason == ELockAppEnableDevicelock)
params.insert("type", ESecUiTypeDeviceLock);
else
{
- RDEBUG("error. status=1 but aReason", aReason);
+ RDEBUG("!!!!****!!!!! error. target=1 but aReason", aReason);
}
// no need for title. Icon should be explicit enough
// params.insert("title", "Locked");
- if (iDeviceDialogCreated <= 0)
+ if (iDeviceDialogStatus < EDeviceDialogCreated)
{
+ if (iDeviceDialog != NULL)
+ {
+ RDEBUG("!!!!!!*********!!!!!!!! error: iDeviceDialog != NULL", 0);
+ }
RDEBUG("creating iDeviceDialog", 0);
iDeviceDialog = new HbDeviceDialog(HbDeviceDialog::NoFlags, this);
- iDeviceDialogCreated = 1;
+ // in theory this is needed only for screensaver, not for LockIcon. But it doesn't harm
+ connect(iDeviceDialog, SIGNAL(dataReceived(QVariantMap)), SLOT(handleMessageFromScreensaver(QVariantMap)), Qt::QueuedConnection); // Qt::QueuedConnection needed to avoid deadlock at waitForClosed
+ connect(iDeviceDialog, SIGNAL(deviceDialogClosed()), SLOT(handleScreensaverClosed()));
+ setDeviceDialogStatus(EDeviceDialogCreated);
}
else
{
@@ -1043,42 +1318,91 @@
// confirm that dialog is present
err = iDeviceDialog->error();
RDEBUG("err", err);
- iDeviceDialogCreated = 2;
+ setDeviceDialogStatus( EDeviceDialogRaised );
}
- const QString KSecQueryUiDeviceDialog("com.nokia.secuinotificationdialog/1.0");
+ const QString KScreensaverDeviceDialog("com.nokia.screensaver.snsrdevicedialogplugin/1.0");
RDEBUG("pre show", aReason);
- err = iDeviceDialog->show(KSecQueryUiDeviceDialog, params); // and continue processing
- RDEBUG("post show. err", err);
+ TInt skipScreenSaver=0;
+ bool launchSuccesful = EFalse;
+
+ TInt aCallStatus=-1;
+ err = RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, aCallStatus);
+ RDEBUG("aCallStatus", aCallStatus);
+ // never create screensaver if active call.
+ if (aCallStatus != EPSCTsyCallStateUninitialized && aCallStatus != EPSCTsyCallStateNone && iLockStatus >= EDevicelockActive )
+ {
+ skipScreenSaver=1;
+ RDEBUG("new skipScreenSaver", skipScreenSaver);
+ }
+ RDEBUG("skipScreenSaver", skipScreenSaver);
+ if(!skipScreenSaver)
+ {
+ if(iDeviceDialogStatus == EDeviceDialogCreated)
+ {
+ launchSuccesful = iDeviceDialog->show(KScreensaverDeviceDialog, params); // and continue processing
+ RDEBUG("post show. bool launchSuccesful", launchSuccesful);
+ }
+ else if(iDeviceDialogStatus == EDeviceDialogScreenSaverHidden || iDeviceDialogStatus == EDeviceDialogRaised)
+ {
+ RDEBUG("calling switchScreensaverMode ESnsrViewTypeActive", ESnsrViewTypeActive);
+ switchScreensaverMode( ESnsrViewTypeActive);
+ launchSuccesful = ETrue;
+ }
+ }
+ RDEBUG("bool launchSuccesful", launchSuccesful);
+ err = iDeviceDialog->error();
+ RDEBUG("iDeviceDialog->error", err);
+ if (launchSuccesful) // TODO && !error ???
+ {
+ setDeviceDialogStatus( EDeviceDialogScreenSaver );
+ // TODO this is needed if creating dialog for first time? switchScreensaverToActiveMode(); // this is needed in case the dialog was existing.
+ // Start standy mode timer. The initial state may already be the standby
+ // mode but setting screensaver again to standby doesn't hurt.
+ mScreensaverModeTimer->start();
+ }
+ else if (!skipScreenSaver)// some err. Usually 3 (component not existing)
+ {
+ // screensaver has failed. Probably because it's not installed. Then, try the standard lock-icon
+ setDeviceDialogStatus( EDeviceDialogLockIcon );
+ const QString KSecQueryUiDeviceDialog("com.nokia.secuinotificationdialog/1.0");
+ err = iDeviceDialog->show(KSecQueryUiDeviceDialog, params); // and continue processing
+ RDEBUG("post show. err", err);
+ }
err = iDeviceDialog->error();
RDEBUG("err", err);
// This won't be needed when screensaver is in place, as the dialogs will be different, and therefore both can be present
// Somehow this should be handled by Orbit, but unfortunatelly they don't allow the same dialog twice
- err = RProperty::Set(KPSUidSecurityUIs,
- KSecurityUIsSecUIOriginatedQuery,
- ESecurityUIsSecUIOriginatedUninitialized); // TODO this should be ESecurityUIsSystemLockOriginated ?
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginatedUninitialized); // this could also be ESecurityUIsSystemLockOriginated
RDEBUG("err", err);
-
+ // Capture power and application keys while screen saver is open. Also works for LockIcon
+ mPowerKeyCaptureHandle = groupWin.CaptureKey(EKeyDevice2, 0, 0);
+ mApplicationKeyCaptureHandle = groupWin.CaptureKey(EKeyApplication0, 0, 0);
+ mApplicationLongKeyCaptureHandle = groupWin.CaptureLongKey(EKeyApplication0, EKeyApplication0, 0, 0, 0, ELongCaptureShortEventImmediately | ELongCaptureRepeatEvents);
+ mEKeyYesCaptureHandle = groupWin.CaptureKey(EKeyYes, 0, 0);
+ mEKeyNoCaptureHandle = groupWin.CaptureKey(EKeyNo, 0, 0);
+ RDEBUG("keys captured", err);
}
else
{
- RDEBUG("unknown status", status);
+ RDEBUG("unknown target", target);
return KErrNotSupported;
}
return KErrNone;
}
+// Updates the icon. This is not used anymore
void Autolock::setLabelIcon(int aReason)
{
RDEBUG("aReason", aReason);
if (aReason == ELockNotActive)
{
- setLockDialog(aReason, 0); // TODO isn't this done already at TryChangeStatus ???
+ // setLockDialog(aReason, 0); // This is done already at TryChangeStatus
lower();
hide();
}
else if (aReason == EKeyguardActive)
{
- setLockDialog(aReason, 1);
+ // setLockDialog(aReason, 1); // This is done already at TryChangeStatus
// this shows the Autolock Application. not needed
}
else if (aReason == EDevicelockActive)
@@ -1089,7 +1413,7 @@
RDEBUG("error: aReason", aReason);
}
}
-
+// Update idicator in HomeScreen. This is a small key icon in the top-left
int Autolock::updateIndicator(int aReason)
{
RDEBUG("aReason", aReason);
@@ -1101,135 +1425,347 @@
HbIndicator indicator;
bool success;
if (aReason == ELockNotActive)
- success = indicator.deactivate(
- "com.nokia.hb.indicator.autolock.autolock_8/1.0"); // maybe it's already deactivated. Not a problem
+ success = indicator.deactivate("com.nokia.hb.indicator.autolock.autolock_8/1.0"); // maybe it's already deactivated. Not a problem
else if (aReason == EKeyguardActive)
- success = indicator.activate(
- "com.nokia.hb.indicator.autolock.autolock_8/1.0");
+ success = indicator.activate("com.nokia.hb.indicator.autolock.autolock_8/1.0");
else if (aReason == EDevicelockActive)
- success = indicator.activate(
- "com.nokia.hb.indicator.autolock.autolock_8/1.0"); // same. We have just 1 indicator
+ success = indicator.activate("com.nokia.hb.indicator.autolock.autolock_8/1.0"); // same. We have just 1 indicator
else
success = 0;
RDEBUG("success", success);
return success;
}
-
+// activity while keyguarded.
void Autolock::activeKeyguard()
{
- // activity while keyguarded. Nothing to do
RDEBUG("0", 0);
+ // Nothing to do
+ RDEBUG("99", 0x99);
}
+// inactivity. Keyguard should be activated
void Autolock::notActiveKeyguard()
{
- // inactivity. Keyguard should be activated
RDEBUG("0", 0);
int ret = KErrNone;
DebugStatus( iLockStatus);
if (iLockStatus == ELockNotActive) // not possible if it's keyguarded, or locked
{
- ret = TryChangeStatus(ELockAppEnableKeyguard);
+ TInt callState = EPSCTsyCallStateNone;
+ int err = RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, callState);
+ RDEBUG("err", err);
+ RDEBUG("callState", callState);
+ // if there's an active call, don't auto-keyguard (manual is still possible)
+ if (callState <= EPSCTsyCallStateNone)
+ {
+ ret = TryChangeStatus(ELockAppEnableKeyguard);
+ RDEBUG("ret", ret);
+ }
+ else
+ {
+ RDEBUG("not ELockAppEnableKeyguard because callState", callState);
+ }
+ }
+ else
+ {
+ // restart screensaver. The scenario is: keyguard->screensaver->CriticalNote->lightsOn . Therefore we need lightsOff
+ // this is done when keyguard can't be enabled because it's already enabled
+ // Note that this happens only once, so it's fine to show the screensaver in full light.
+ if (ret == KErrAlreadyExists) // this could also be iLockStatus == EKeyguardActive
+ switchScreensaverMode( ESnsrViewTypeInitial);
+ }
+ RDEBUG("ret", ret);
+ }
+// Some activity detected while the deviceLock is enabled
+void Autolock::activeDevicelock()
+ {
+ RDEBUG("0", 0);
+ // nothing to do
+ RDEBUG("99", 0x99);
+ }
+
+// inactivity. Devicelock should be activated
+void Autolock::notActiveDevicelock()
+ {
+ RDEBUG("0", 0);
+ int ret = KErrNone;
+ Q_UNUSED(ret);
+ DebugStatus( iLockStatus);
+ if (iLockStatus == ELockNotActive || iLockStatus == EKeyguardActive) // not possible if it's locked
+ {
+ // this is independent of the call status
+ ret = TryChangeStatus(ELockAppEnableDevicelock);
}
RDEBUG("ret", ret);
}
-/* Some activity detected while the deviceLock is enabled */
-void Autolock::activeDevicelock()
+// Update the screensaver. Show, hide, or sleep
+void Autolock::switchScreensaverMode(int mode)
{
- // nothing to do
+ RDEBUG("mode", mode);
+ if (iDeviceDialog)
+ {
+ // maybe this can be used to tell the dialog to dismiss itself?
+ RDEBUG("got iDeviceDialog. iDeviceDialogStatus", iDeviceDialogStatus);
+ QVariantMap params;
+ // this is for LockIcon. Doesn't harm screensaver
+ // need to send again so that the existing dialog still knows what is its type
+ if (iLockStatus == EKeyguardActive)
+ params.insert("type", ESecUiTypeKeyguard);
+ else if (iLockStatus >= EDevicelockActive)
+ params.insert("type", ESecUiTypeDeviceLock);
+
+ // this is for screensaver. Doesn't harm LockIcon
+ params.insert(KSnsrViewTypeKey, mode);
+ iDeviceDialog->update(params);
+
+ if (mScreensaverModeTimer)
+ {
+ if (mode == ESnsrViewTypeStandby || mode == ESnsrViewTypeDisabled)
+ {
+ RDEBUG("stop mScreensaverModeTimer", 0);
+ mScreensaverModeTimer->stop();
+ }
+ else
+ {
+ RDEBUG("start mScreensaverModeTimer", 0);
+ mScreensaverModeTimer->start();
+ }
+ }
+ }
+ RDEBUG("99", 0x99);
+ }
+
+void Autolock::switchScreensaverToPowerSaveMode()
+ {
RDEBUG("0", 0);
+ // This crashes IVE3. TODO : restore when it works again.
+ //switchScreensaverMode( ESnsrViewTypeStandby);
+ RDEBUG("99", 0x99);
}
-void Autolock::notActiveDevicelock()
+void Autolock::handleMessageFromScreensaver(const QVariantMap &data)
{
- // inactivity. Devicelock should be activated
RDEBUG("0", 0);
- int ret = KErrNone;
- DebugStatus( iLockStatus);
- if (iLockStatus == ELockNotActive || iLockStatus == EKeyguardActive) // not possible if it's locked
+ RDEBUG("iLockStatus", iLockStatus);
+ QVariantMap::const_iterator it = data.find(KSnsrCmdUnlock);
+ if (it != data.end() && iLockStatus != ELockNotActive)
+ {
+ RDEBUG("calling handleLockSwitch", 0);
+ handleLockSwitch();
+ }
+
+ it = data.find(KSnsrCmdSwitchLights);
+ if (it != data.end())
+ {
+ int lightStatus = it.value().toInt();
+ RDEBUG("switching screen lights . lightStatus", lightStatus);
+ int err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsSSForcedLightsOn, lightStatus);
+ RDEBUG("err", err);
+ }
+
+ it = data.find(KSnsrCmdSwitchLowPower);
+ if (it != data.end())
{
- ret = TryChangeStatus(ELockAppEnableDevicelock);
+ QVariantList lowPowerLimits = it.value().toList();
+ if (lowPowerLimits.count() == 2)
+ {
+ // switch on screen power save mode when start and end lines are given
+ int startRow = lowPowerLimits.at(0).toInt();
+ int endRow = lowPowerLimits.at(1).toInt();
+ // TODO: The pixel buffer passed to CPowerSaveDisplayMode is supposed to
+ // contain the pixels shown in the active area of the screen. Currently, we
+ // pass a buffer filled with 0s, and this works fine on the reference
+ // hardware. However, according to display driver people, this doesn't
+ // work if the display component of the device doesn't have internal memory
+ // which may be the case in some of our target devices.
+
+ // handled now directly by screensaver
+ /*
+ TUint16 *ptr = const_cast<TUint16 *> (mScreensaverPowerSavePixelBuffer->Ptr());
+ RDEBUG("switching screen power save on, number of visible rows", endRow-startRow);
+ int err = mScreensaverPowerSave->Set(startRow, endRow, ptr);
+ RDEBUG("err", err);
+ */
+ }
+ else
+ {
+ // any other case is interpreted as an order to switch off the power save and
+ // return to the normal mode
+ RDEBUG("switching screen power save off 0", 0);
+ // handled now directly by screensaver
+ // int err = mScreensaverPowerSave->Exit();
+ // RDEBUG("err", err);
+ }
}
- RDEBUG("ret", ret);
+ RDEBUG("99", 0x99);
+ }
+
+void Autolock::handleScreensaverClosed()
+ {
+ RDEBUG("0", 0);
+ int err(0);
+ // Screensaver (usually) cannot send anymore any commands when
+ // it's being closed. Thus, we need to ensure here that screen has lights and
+ // full-power mode once screensaver is closed.
+ // handled now directly by screensaver
+ /*
+ if (mScreensaverPowerSave)
+ {
+ RDEBUG("switching screen power save off", 0);
+ err = mScreensaverPowerSave->Exit();
+ RDEBUG("error=", err);
+ }
+ */
+ RDEBUG("switching screen lights on", 1);
+ // Not needed because SysAp turns on the lights when keyguard is disabled
+ // err = RProperty::Set(KPSUidCoreApplicationUIs, KLightsSSForcedLightsOn, 30);
+ RDEBUG("err", err);
}
// some key is pressed
+// TODO perhaps need a way to stop switch-key while asking unlock-code?
+// Not clear what to do here. dismiss query?
bool Autolock::event(QEvent *ev)
{
if (ev)
{
int isSwitchKey = 0;
- // on device, this doesn't seem to get the EKeyDeviceF key: only 1ffffff
- if (ev->type() == QEvent::KeyPress)
+ if (ev->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *> (ev);
RDEBUG("KeyPress", keyEvent->key());
RDEBUG("KeyPress nativeScanCode", keyEvent->nativeScanCode());
RDEBUG("EStdKeyDeviceF", EStdKeyDeviceF);
+ RDEBUG("EKeyDeviceF", EKeyDeviceF);
RDEBUG("keyEvent->isAutoRepeat()", keyEvent->isAutoRepeat());
- if( !keyEvent->isAutoRepeat() )
- {
- if ((keyEvent->key() & 0xFF) == (EKeyInsert & 0xFF))
- {
- RDEBUG("EKeyInsert", EKeyInsert);
- // only reacts on release, not on press
- isSwitchKey = 1;
- }
- if ((keyEvent->key() & 0xFF) == (EKeyDeviceF & 0xFF))
- {
- RDEBUG("EKeyDeviceF", EKeyDeviceF);
- }
- if (keyEvent->key() == 0x1ffffff)
- {
- RDEBUG("0x1ffffff", 0x1ffffff); // som unknown key is received. Nothing to do
- }
- if (keyEvent->nativeScanCode() == EStdKeyDeviceF)
- {
- RDEBUG("got EStdKeyDeviceF", EStdKeyDeviceF);
- isSwitchKey = 1;
- }
- }
- else if (ev->type() == QEvent::KeyRelease)
- {
- QKeyEvent *keyEvent = static_cast<QKeyEvent *> (ev);
- RDEBUG("KeyRelease", keyEvent->key());
- RDEBUG("KeyRelease native", keyEvent->nativeScanCode());
- if (keyEvent->nativeScanCode() == EStdKeyDeviceF && !keyEvent->isAutoRepeat())
- {
- RDEBUG("released EStdKeyDeviceF", 1);
- // isSwitchKey=1; this should happen is pressed was not processed (hint: if it is/was in background)
- }
- }
- }
+ // note that the key was EKeyApplication0 and EKeyDevice2
+ // yes=0xc4 app=0xb4 no=0xa6
+ if (keyEvent->nativeScanCode() == EStdKeyApplication0 || keyEvent->nativeScanCode() == EStdKeyDevice2 || keyEvent->nativeScanCode() == EStdKeyYes
+ || keyEvent->nativeScanCode() == EStdKeyNo)
+ {
+ // switch to active screensaver if application key or power key pressed while screensaver active
+ // This key can be repeated, so that the screensaver remains as long as key is pushed
+ // TODO what happens when holding Power key ?
+ switchScreensaverMode( ESnsrViewTypeActive);
+ TurnLights(ESecurityUIsLightsQueryOnRequest, 0x22 /*aReason*/, 0x24);
+ }
+ else if (!keyEvent->isAutoRepeat())
+ {
+ if (keyEvent->key() == EKeyInsert)
+ {
+ // on WINS, this is handled with the "Ins" key in the numeric keypad
+ RDEBUG("EKeyInsert", EKeyInsert);
+ // only reacts on release, not on press
+ isSwitchKey = 1;
+ }
+ else if (keyEvent->key() == EKeyDeviceF)
+ {
+ // this never seem to happen. Nevertheless we are not doing anything
+ RDEBUG("EKeyDeviceF", EKeyDeviceF);
+ }
+ else if (keyEvent->nativeScanCode() == EStdKeyDeviceF)
+ {
+ RDEBUG("got EStdKeyDeviceF", EStdKeyDeviceF);
+ isSwitchKey = 1;
+ }
+ else if (keyEvent->nativeScanCode() == EKeyBell) // this might be sent by others, i.e. PCFW
+ {
+ RDEBUG("got EKeyBell", EKeyBell);
+ isSwitchKey = 1;
+ }
+ else if (keyEvent->key() == 0x1ffffff)
+ {
+ RDEBUG("0x1ffffff", 0x1ffffff); // some unknown key is received. Nothing to do
+ }
+ }
+ }
+ else if (ev->type() == QEvent::KeyRelease)
+ {
+ QKeyEvent *keyEvent = static_cast<QKeyEvent *> (ev);
+ RDEBUG("KeyRelease", keyEvent->key());
+ RDEBUG("KeyRelease native", keyEvent->nativeScanCode());
+ if (keyEvent->nativeScanCode() == EStdKeyDeviceF && !keyEvent->isAutoRepeat())
+ {
+ RDEBUG("released EStdKeyDeviceF", 1);
+ // isSwitchKey=1; this should happen is pressed was not processed (hint: if it is/was in background)
+ }
+ }
RDEBUG("isSwitchKey", isSwitchKey);
if (isSwitchKey)
{
- int ret = KErrNone;
- DebugStatus( iLockStatus);
- if (iLockStatus == ELockNotActive)
- {
- iShowKeyguardNote = 1; // note on enable keyguard
- ret = TryChangeStatus(ELockAppEnableKeyguard); // this should not ask confirmation
- }
- else if (iLockStatus == EKeyguardActive)
- {
- iShowKeyguardNote = 1; // note on disable keyguard
- ret = TryChangeStatus(ELockAppDisableKeyguard);
- }
- else if (iLockStatus == EDevicelockActive)
- {
- ret = TryChangeStatus(ELockAppDisableDevicelock);
- }
- else
- {
- RDEBUG("unknown iLockStatus", iLockStatus);
- }
- RDEBUG("ret", ret);
+ handleLockSwitch();
+ RDEBUG("0", 0);
} // isSwitchKey
} // ev
// Process if not done before. For example, redraw or quit
- return QWidget::event(ev);
+ TBool widgetEventSuccesful = QWidget::event(ev);
+ RDEBUG("99", 0x99);
+ return widgetEventSuccesful;
+ }
+// The side-switch-key is pressed. Un-keyguard if keyguarded ; AskCode if locked.
+int Autolock::handleLockSwitch()
+ {
+ RDEBUG("0", 0);
+ int ret = KErrNone;
+ RDEBUG("iProcessingEvent", iProcessingEvent);
+ RDEBUG("iLockStatus", iLockStatus);
+ // iProcessingEvent is used to avoid concurrent processing, i.e. 2 side-switch presses; because it needs time to create (and dismiss) the dialog
+ // However this disallows keyguard during unlock-quey.
+ if(iProcessingEvent < 1)
+ {
+ iProcessingEvent = 1;
+ Q_UNUSED(ret);
+ DebugStatus( iLockStatus);
+ if (iLockStatus == ELockNotActive)
+ {
+ iShowKeyguardNote = 0; // no note on enable keyguard
+ callerHasECapabilityWriteDeviceData = 1;
+ // TODO ELockAppEnableDevicelock
+ CRepository *repository = 0;
+ int deviceLock = 0;
+ QT_TRAP_THROWING(repository = CRepository::NewL(KCRUidSecuritySettings));
+ repository->Get(KSettingsAutoLockTime, deviceLock);
+ delete repository;
+ if (65535 == deviceLock) {
+ // Setting says "When keys& screen locked". Therefore device is also locked when screen is manually locked.
+ // TODO what about the API for screen lock?
+ ret = TryChangeStatus(ELockAppEnableDevicelock); // this should not ask confirmation
+ } else {
+ ret = TryChangeStatus(ELockAppEnableKeyguard); // this should not ask confirmation
+ }
+
+ }
+ else if (iLockStatus == EKeyguardActive)
+ {
+ iShowKeyguardNote = 0; // no note on disable keyguard
+ callerHasECapabilityWriteDeviceData = 1;
+ ret = TryChangeStatus(ELockAppDisableKeyguard);
+ }
+ else if (iLockStatus == EDevicelockActive)
+ {
+ callerHasECapabilityWriteDeviceData = 1;
+ ret = TryChangeStatus(ELockAppDisableDevicelock);
+ }
+ else
+ {
+ RDEBUG("unknown iLockStatus", iLockStatus);
+ }
+ iProcessingEvent = 0;
+ }
+ else
+ {
+ // user presses side-switch while another is in process, most probably a unlock-query. Thus, re-switch on the lights
+ iProcessingEvent++; // just to know how many processes we missed
+ if(iProcessingEvent>=10)
+ iProcessingEvent=0; // if user really insists, then try again
+ if (iLockStatus == EDevicelockActive)
+ {
+ TurnLights(ESecurityUIsLightsQueryOnRequest, ELockAppEnableDevicelock, 0x26);
+ }
+ }
+ RDEBUG("ret", ret);
+ return ret;
}
bool Autolock::eventFilter(QObject *o, QEvent *ev)
@@ -1242,88 +1778,157 @@
void Autolock::subscriberKSettingsAutolockStatusChanged()
{
RDEBUG("0", 0);
- QVariant v = subscriberKSettingsAutolockStatus->value(
- "/KCRUidSecuritySettings/KSettingsAutolockStatus");
+ QVariant v = subscriberKSettingsAutolockStatus->value("/KCRUidSecuritySettings/KSettingsAutolockStatus");
adjustInactivityTimers( KSettingsAutolockStatus);
}
void Autolock::subscriberKSettingsAutoLockTimeChanged()
{
RDEBUG("0", 0);
- QVariant v = subscriberKSettingsAutoLockTime->value(
- "/KCRUidSecuritySettings/KSettingsAutoLockTime");
+ QVariant v = subscriberKSettingsAutoLockTime->value("/KCRUidSecuritySettings/KSettingsAutoLockTime");
adjustInactivityTimers( KSettingsAutoLockTime);
}
void Autolock::subscriberKSettingsAutomaticKeyguardTimeChanged()
{
RDEBUG("0", 0);
- QVariant v = subscriberKSettingsAutomaticKeyguardTime->value(
- "/KCRUidSecuritySettings/KSettingsAutomaticKeyguardTime");
+ QVariant v = subscriberKSettingsAutomaticKeyguardTime->value("/KCRUidSecuritySettings/KSettingsAutomaticKeyguardTime");
adjustInactivityTimers( KSettingsAutoLockTime);
}
void Autolock::subscriberKDisplayLightsTimeoutChanged()
{
RDEBUG("0", 0);
- QVariant v = subscriberKDisplayLightsTimeout->value(
- "/KCRUidLightSettings/KDisplayLightsTimeout");
+ QVariant v = subscriberKDisplayLightsTimeout->value("/KCRUidLightSettings/KDisplayLightsTimeout");
// nothing to do
}
void Autolock::subscriberKProEngActiveProfileChanged()
{
RDEBUG("0", 0);
- QVariant v = subscriberKProEngActiveProfile->value(
- "/KCRUidProfileEngine/KProEngActiveProfile");
+ QVariant v = subscriberKProEngActiveProfile->value("/KCRUidProfileEngine/KProEngActiveProfile");
// nothing to do
}
// some environment changed
void Autolock::subscriberKAknKeyguardStatusChanged()
{
RDEBUG("Error only Autolock should be able to change it", 0);
- }
+ }
void Autolock::subscriberKCoreAppUIsAutolockStatusChanged()
{
RDEBUG("Error only Autolock should be able to change it", 0);
- }
+ }
void Autolock::subscriberKHWRMGripStatusChanged()
{
- TInt ret;
+ TInt ret = KErrNone;
+ Q_UNUSED(ret);
RDEBUG("0", 0);
TInt aGripStatus;
- TInt err = RProperty::Get(KPSUidHWRM, KHWRMGripStatus, aGripStatus );
+ TInt err = RProperty::Get(KPSUidHWRM, KHWRMGripStatus, aGripStatus);
RDEBUG("err", err);
RDEBUG("value", aGripStatus);
- if( aGripStatus == EPSHWRMGripOpen )
- {
- if (iLockStatus == EKeyguardActive)
- {
- iShowKeyguardNote = 1; // note on disable keyguard
- ret = TryChangeStatus(ELockAppDisableKeyguard);
- }
- else if (iLockStatus == EDevicelockActive)
- {
- ret = TryChangeStatus(ELockAppDisableDevicelock);
- }
- }
- else if( aGripStatus == EPSHWRMGripClosed )
- {
- if (iLockStatus == ELockNotActive)
- {
- iShowKeyguardNote = 1; // note on enable keyguard
- ret = TryChangeStatus(ELockAppEnableKeyguard);
- }
- }
+ if (aGripStatus == EPSHWRMGripOpen)
+ {
+ if (iLockStatus == EKeyguardActive)
+ {
+ iShowKeyguardNote = 0; // no note on disable keyguard
+ callerHasECapabilityWriteDeviceData = 1;
+ ret = TryChangeStatus(ELockAppDisableKeyguard);
+ }
+ else if (iLockStatus == EDevicelockActive)
+ {
+ callerHasECapabilityWriteDeviceData = 1;
+ ret = TryChangeStatus(ELockAppDisableDevicelock);
+ }
+ }
+ else if (aGripStatus == EPSHWRMGripClosed)
+ {
+ if (iLockStatus == ELockNotActive)
+ {
+ iShowKeyguardNote = 0; // no note on enable keyguard
+ callerHasECapabilityWriteDeviceData = 1;
+ ret = TryChangeStatus(ELockAppEnableKeyguard);
+ }
+ }
+ RDEBUG("ret", ret);
+ }
+/**************/
+void Autolock::subscriberKCTsyCallStateChanged()
+ {
+ RDEBUG("0", 0);
+ TInt aCallStatus;
+ TInt err = RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, aCallStatus);
+ RDEBUG("err", err);
+ RDEBUG("aCallStatus", aCallStatus);
+ RWindowGroup& groupWin = CEikonEnv::Static()->RootWin();
+ RDEBUG("iLockStatus", iLockStatus);
+ if (aCallStatus == EPSCTsyCallStateUninitialized || aCallStatus == EPSCTsyCallStateNone)
+ {
+ // Telephone might want to re-enable only-keyguard after the call ends. Allow it. This means re-showing the screensaver, not more.
+ RDEBUG("call is inactive", aCallStatus);
+ if(iLockStatus == EDevicelockActive)
+ setLockDialog(ELockAppEnableKeyguard, 1);
+
+ if (iLockStatus == EKeyguardActive || iLockStatus == EDevicelockActive)
+ {
+ if (!mEKeyYesCaptureHandle)
+ mEKeyYesCaptureHandle = groupWin.CaptureKey(EKeyYes, 0, 0);
+ if (!mEKeyNoCaptureHandle)
+ mEKeyNoCaptureHandle = groupWin.CaptureKey(EKeyNo, 0, 0);
+ }
+ }
+ else
+ {
+ RDEBUG("call is active", aCallStatus);
+
+ RDEBUG("allowing telephone to disable keyguard . Call setLockDialog 0", 0);
+ if(iLockStatus == EDevicelockActive)
+ setLockDialog(ELockAppDisableKeyguard, 0);
+
+ // Telephone should be on top, but nevertheless we give End/Send to them
+ // This should be done only if locked, but it doesn't harm
+ if (mEKeyYesCaptureHandle)
+ {
+ RDEBUG("mEKeyYesCaptureHandle", mEKeyYesCaptureHandle);
+ groupWin.CancelCaptureKey(mEKeyYesCaptureHandle);
+ mEKeyYesCaptureHandle = NULL;
+ }
+ if (mEKeyNoCaptureHandle)
+ {
+ RDEBUG("mEKeyNoCaptureHandle", mEKeyNoCaptureHandle);
+ groupWin.CancelCaptureKey(mEKeyNoCaptureHandle);
+ mEKeyNoCaptureHandle = NULL;
+ }
+ // it seems that Telephone doesn't turn-on the lights when an incoming call on deviceLock. It's done here.
+ TurnLights(ESecurityUIsLightsQueryOnRequest, ELockAppDisableKeyguard, 0x28);
+ }
+ RDEBUG("99", 0x99);
+ }
+// SecUiNotificationDialog::subscriberKSecurityUIsDismissDialogChanged()
+// A way for Autolock to dismiss any possible PIN dialog
+// ----------------------------------------------------------------------------
+//
+void Autolock::subscriberKSecurityUIsDismissDialogChanged()
+ {
+ RDEBUG("0", 0);
+ TInt aDismissDialog = ESecurityUIsDismissDialogUninitialized;
+ TInt err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsDismissDialog, aDismissDialog);
+ RDEBUG("err", err);
+ RDEBUG("aDismissDialog", aDismissDialog);
}
+void Autolock::subscriberKSecurityUIsTestCodeChanged()
+ {
+ RDEBUG("0", 0);
+ TInt aTestCode = -1;
+ TInt err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsTestCode, aTestCode);
+ RDEBUG("err", err);
+ RDEBUG("aTestCode", aTestCode);
+ }
// ----------AutolockService---------------
AutolockService::AutolockService(Autolock* parent) :
- XQServiceProvider(QLatin1String(
- "com.nokia.services.Autolock.Autolock"), parent),
- mAutolock(parent), mAsyncReqId(-1), mAsyncAnswer(false)
+ XQServiceProvider(QLatin1String("com.nokia.services.Autolock.Autolock"), parent), mAutolock(parent), mAsyncReqId(-1), mAsyncAnswer(false)
{
RDEBUG("0", 0);
publishAll();
- connect(this, SIGNAL(returnValueDelivered()), parent, SLOT(
- handleAnswerDelivered()));
+ connect(this, SIGNAL(returnValueDelivered()), parent, SLOT(handleAnswerDelivered()));
}
AutolockService::~AutolockService()
@@ -1340,8 +1945,7 @@
}
// got API request from lockaccessextension
-int AutolockService::service(const QString& number,
- const QString& aParam1, const QString& aParam2)
+int AutolockService::service(const QString& number, const QString& aParam1, const QString& aParam2)
{
RDEBUG("0", 0);
TInt err = KErrNone;
@@ -1375,22 +1979,32 @@
myTime.HomeTime();
TInt myTimeHigh = 0;
TInt myTimeLow = 0;
- err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeHigh, myTimeHigh );
+ err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeHigh, myTimeHigh);
RDEBUG("err", err);
RDEBUG("myTimeHigh", myTimeHigh);
- err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeLow, myTimeLow );
+ err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeLow, myTimeLow);
RDEBUG("err", err);
RDEBUG("myTimeLow", myTimeLow);
-
+
myTimeHigh = I64HIGH( myTime.Int64() );
myTimeLow = I64LOW( myTime.Int64() );
RDEBUG("myTimeHigh", myTimeHigh);
RDEBUG("myTimeLow", myTimeLow);
- err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeHigh, myTimeHigh );
- err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeLow, myTimeLow );
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeHigh, myTimeHigh);
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLockInitiatorTimeLow, myTimeLow);
ret = mAutolock->TryChangeStatus(ret);
RDEBUG("ret", ret);
+
+ TInt myInitiatorUID = 0;
+ err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsLockInitiatorUID, myInitiatorUID);
+ RDEBUG("ret", ret);
+ RDEBUG("myInitiatorUID", myInitiatorUID);
+ myInitiatorUID = info.clientSecureId();
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLockInitiatorUID, myInitiatorUID);
+ RDEBUG("ret", ret);
+ RDEBUG("myInitiatorUID", myInitiatorUID);
+
return ret;
}
@@ -1399,7 +2013,7 @@
RDEBUG("0", 0);
// Just quit service application if client ends
mAsyncAnswer = false;
- RDEBUG("0", 0);
+ RDEBUG("99", 0x99);
// mAutolock->quit();
}
--- a/securitydialogs/Autolock/src/Autolock.h Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/Autolock/src/Autolock.h Thu Oct 14 13:56:11 2010 +0300
@@ -34,7 +34,6 @@
#include <QMap>
#include <QStringList>
#include <xqserviceprovider.h>
-#include <xqsharablefile.h>
#include <QToolButton>
#include <qmobilityglobal.h>
@@ -65,8 +64,24 @@
EDevicelockTimer
};
+enum TDeviceDialogCreated
+ {
+ EDeviceDialogUninitialized = -1,
+ EDeviceDialogDestroyed = 0,
+ EDeviceDialogCreated = 1,
+ EDeviceDialogRaised = 2,
+ EDeviceDialogScreenSaverHidden = 0x10,
+ EDeviceDialogScreenSaverReDisplay = 0x11,
+ EDeviceDialogScreenSaver = 0x12,
+ EDeviceDialogLockIcon= 0x20,
+ EDeviceDialogLastValue
+ };
+
+class QTimer;
class AutolockService;
+// handled now directly but screensaver
+// class CPowerSaveDisplayMode;
class Autolock : public QWidget
{
@@ -84,11 +99,13 @@
void DebugStatus(int value);
void adjustInactivityTimers(int aReason);
int updateIndicator(int aReason);
+ int TurnLights(int aMode, int aReason, int aCaller);
int AskValidSecCode(int aReason);
int publishStatus(int aReason);
int TryChangeStatus(int aReason);
int setLockDialog(int aReason, int status);
int showNoteIfRequested(int aReason);
+ int setDeviceDialogStatus(int aStatus);
bool event(QEvent *event);
bool eventFilter(QObject *, QEvent *);
@@ -109,12 +126,21 @@
void subscriberKAknKeyguardStatusChanged();
void subscriberKCoreAppUIsAutolockStatusChanged();
void subscriberKHWRMGripStatusChanged();
+ void subscriberKCTsyCallStateChanged();
+ void subscriberKSecurityUIsDismissDialogChanged();
+ void subscriberKSecurityUIsTestCodeChanged();
private slots:
void activeKeyguard();
void notActiveKeyguard();
void activeDevicelock();
void notActiveDevicelock();
+ void switchScreensaverMode( int mode );
+ void switchScreensaverToPowerSaveMode();
+ void handleMessageFromScreensaver( const QVariantMap &data );
+ void handleScreensaverClosed();
+private:
+ int handleLockSwitch();
private:
AutolockService* mService;
@@ -128,6 +154,9 @@
QValueSpaceSubscriber *subscriberKAknKeyguardStatus;
QValueSpaceSubscriber *subscriberKCoreAppUIsAutolockStatus;
QValueSpaceSubscriber *subscriberKHWRMGripStatus;
+ QValueSpaceSubscriber *subscriberKCTsyCallState;
+ QValueSpaceSubscriber *subscriberKSecurityUIsDismissDialog;
+ QValueSpaceSubscriber *subscriberKSecurityUIsTestCode;
AutolockUserActivityService* serviceKeyguard;
AutolockUserActivityService* serviceDevicelock;
@@ -135,9 +164,23 @@
int iLockStatus;
int iLockStatusPrev;
CSecQueryUi *iSecQueryUi;
- int iSecQueryUiCreated;
+ int iSecQueryUiCreated; // not used
HbDeviceDialog *iDeviceDialog;
- int iDeviceDialogCreated;
+ int iDeviceDialogStatus;
+ TInt32 mPowerKeyCaptureHandle;
+ TInt32 mApplicationKeyCaptureHandle;
+ TInt32 mApplicationLongKeyCaptureHandle;
+ TInt32 mEKeyDeviceFCaptureHandle;
+ TInt32 mEKeyBellCaptureHandle;
+ TInt32 mEKeyYesCaptureHandle;
+ TInt32 mEKeyNoCaptureHandle;
+ TBool iLockCodeQueryInDisplay;
+ QTimer *mScreensaverModeTimer;
+ // these two are handled now directly by screensaver
+ // CPowerSaveDisplayMode *mScreensaverPowerSave;
+ // HBufC16 *mScreensaverPowerSavePixelBuffer;
+ TInt32 iProcessingEvent;
+ int iTempDisableOnlyKeyguardBecauseIncomingCall;
};
class AutolockService : public XQServiceProvider
--- a/securitydialogs/Autolock/src/main.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/Autolock/src/main.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -24,25 +24,62 @@
#include <QApplication>
#include "Autolock.h"
+#include "../PubSub/securityuisprivatepskeys.h"
#include <hbapplication.h>
#include <hbmainwindow.h>
+#include <apgwgnam.h>
+#include <eikenv.h>
int main(int argc, char **argv)
{
// qInstallMsgHandler(XQSERVICEMESSAGEHANDLER);
// XQSERVICE_DEBUG_PRINT(" ================== xxxx Autolock::main");
qDebug() << "================== xxxx QApplication Autolock::main";
+
+
+ // Need to check whether process is already running. This happens if it's started from Stater, and
+ // before fully initialized, it's started by API through QtHighway
+ TSecurityPolicy readPolicy(ECapabilityReadDeviceData);
+ TSecurityPolicy writePolicy(ECapabilityWriteDeviceData);
+ int ret = RProperty::Define(KPSUidSecurityUIs,
+ KSecurityUIsLockInitiatorUID, RProperty::EInt, TSecurityPolicy(TSecurityPolicy::EAlwaysPass),
+ writePolicy);
+ qDebug() << "KSecurityUIsLockInitiatorUID ret=" << ret;
+ int myInitiatorUID = 0;
+ int err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsLockInitiatorUID, myInitiatorUID);
+ qDebug() << "KSecurityUIsLockInitiatorUID err=" << err;
+ qDebug() << "KSecurityUIsLockInitiatorUID myInitiatorUID=" << myInitiatorUID;
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLockInitiatorUID, 0);
+
+ // it takes about 3 seconds to start it, on device
QApplication a( argc, argv );
+ // hide server from TaskSwitcher
+ CEikonEnv * env = CEikonEnv::Static();
+ if(env) {
+ env->RootWin().SetOrdinalPosition(0, ECoeWinPriorityNeverAtFront);
+
+ CApaWindowGroupName *wgName = CApaWindowGroupName::NewLC(env->WsSession());
+ wgName->SetHidden(ETrue); // hides us from FSW and protects us from OOM FW etc.
+ wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down
+ // wgName->SetCaptionL(KRunningAppServerName);
+ wgName->SetWindowGroupName(env->RootWin());
+ CleanupStack::PopAndDestroy(wgName);
+ }
+
Autolock *cl = new Autolock();
- // qDebug() << " ================== xxxx cl->show";
+ // qDebug() << " Autolock::main cl->show";
// cl->show();
- // qDebug() << " ================== xxxx cl->hide";
+ // qDebug() << " Autolock::main cl->hide";
cl->hide();
- // qDebug() << " ================== xxxx cl->lower";
+ // qDebug() << " Autolock::main cl->lower";
cl->lower();
+ qDebug() << " Autolock::main cl->lower";
+ err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsLockInitiatorUID, 1);
int rv = a.exec();
+ qDebug() << " Autolock::main cl->exec";
delete cl;
+ qDebug() << " Autolock::main cl->delete";
return rv;
}
--- a/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -716,6 +716,17 @@
isConditionSatisfied = ETrue;
}
+ // call TARM so that it verifies that configuration is in sync. This might internally accept the (default) lock code, but doesn't dismiss the query.
+ RDEBUG("isConditionSatisfied", isConditionSatisfied);
+ RSCPClient scpClientConfiguration;
+ User::LeaveIfError( scpClientConfiguration.Connect() );
+ CleanupClosePushL( scpClientConfiguration );
+ RDEBUG("call CheckConfiguration KSCPComplete", KSCPComplete);
+ TInt finalConfStatus = scpClientConfiguration.CheckConfiguration( KSCPComplete );
+ RDEBUG("finalConfStatus", finalConfStatus);
+ RDEBUG("isConditionSatisfied", isConditionSatisfied);
+ CleanupStack::PopAndDestroy(); // scpClientConfiguration
+
// Security code at bootup: No "cancel" softkey; Emergency calls enabled.
RMobilePhone::TMobilePhoneSecurityCode secCodeTypeToAsk = RMobilePhone::ESecurityCodePhonePassword;
RDEBUG("isConditionSatisfied", isConditionSatisfied);
--- a/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -538,6 +538,7 @@
* Series 60 Customer / ETel
* Series 60 ETel API
*****************************************************/
+ askChangeSimSecurityL:
RDEBUG("0", 0);
RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
@@ -577,6 +578,19 @@
}
RDEBUG("lockChangeSetting", lockChangeSetting);
+ RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+ CWait* newWait = NULL;
+ newWait = CWait::NewL();
+ RDEBUG("newWait SetLockSetting", 0);
+ iPhone.SetLockSetting(newWait->iStatus, lockType, lockChangeSetting); // this invokes the handler
+ RDEBUG("newWait WaitForRequestL",
+ 0);
+ status = newWait->WaitForRequestL();
+ RDEBUG("newWait WaitForRequestL status",
+ status);
+ delete newWait;
+
+/*
iWait->SetRequestType(EMobilePhoneSetLockSetting);
RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
RDEBUG("SetLockSetting", 0);
@@ -584,6 +598,7 @@
RDEBUG("WaitForRequestL", 0);
status = iWait->WaitForRequestL();
RDEBUG("WaitForRequestL status", status);
+*/
#ifdef __WINS__
if (status == KErrNotSupported || status == KErrTimedOut)
status = KErrNone;
@@ -598,17 +613,22 @@
break;
}
case KErrGsm0707IncorrectPassword:
+ {
+ // code was entered erroneously
+ RDEBUG("KErrGsm0707IncorrectPassword", KErrGsm0707IncorrectPassword);
+ goto askChangeSimSecurityL;
+ }
case KErrAccessDenied:
{
// code was entered erroneously
RDEBUG("KErrAccessDenied", KErrAccessDenied);
- return ChangeSimSecurityL();
+ goto askChangeSimSecurityL;
}
case KErrGsmSSPasswordAttemptsViolation:
case KErrLocked:
{
RDEBUG("KErrLocked", KErrLocked);
- return ChangeSimSecurityL();
+ goto askChangeSimSecurityL;
}
case KErrAbort:
{
@@ -619,7 +639,7 @@
{
RDEBUG("default", status);
ShowErrorNoteL(status);
- return ChangeSimSecurityL();
+ goto askChangeSimSecurityL;
}
}
@@ -2576,19 +2596,13 @@
RDEBUG("maxPeriod", maxPeriod);
if (FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw))
{
- TBool allow = ETrue;
-
if ((aPeriod == 0) && (maxPeriod > 0))
{
RDEBUG("The period is not allowed by TARM", aPeriod);
RDEBUG( "maxPeriod", maxPeriod );
- allow = EFalse;
ShowResultNoteL(R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE, CAknNoteDialog::EErrorTone);
- }
- if (!allow)
- {
- return ChangeAutoLockPeriodParamsL(aPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
- }
+ return R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE; // don't ask again. Settings will roll-back
+ }
}
if (aPeriod == 0)
--- a/securitydialogs/secuidialognotifier/inc/secuidialogstrace.h Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifier/inc/secuidialogstrace.h Thu Oct 14 13:56:11 2010 +0300
@@ -20,31 +20,11 @@
#include <e32debug.h> // RDebug
-
-// TODO: replace with OST tracing
#ifdef _DEBUG
-#define TRACE( a, ARGS... ) { RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 ); DebugPrint( _L( a ), ##ARGS ) ; };
+ #define RDEBUG( x, y ) RDebug::Printf( "%s %s (%u) %s=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, x, y );
#else
-#define TRACE( a, ARGS... )
+ #define RDEBUG( x, y )
#endif
-
-// ---------------------------------------------------------------------------
-// DebugPrint()
-// ---------------------------------------------------------------------------
-//
-#ifdef _DEBUG
-const TInt KMaxPrintSize = 256;
-inline void DebugPrint( TRefByValue<const TDesC> aFmt, ... )
- {
- VA_LIST list;
- VA_START( list, aFmt );
- TBuf<KMaxPrintSize> buf;
- buf.AppendFormatList( aFmt, list );
- RDebug::Print( buf );
- }
-#endif
-
-
#endif // SECUIDIALOGSTRACE_H
--- a/securitydialogs/secuidialognotifier/src/secuidialognotifier.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifier/src/secuidialognotifier.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -28,7 +28,7 @@
//
CSecuiDialogNotifier::~CSecuiDialogNotifier()
{
- TRACE( "CSecuiDialogNotifier::~CSecuiDialogNotifier" );
+ RDEBUG("0", 0);
Cancel();
}
@@ -38,7 +38,7 @@
//
CSecuiDialogNotifier* CSecuiDialogNotifier::NewL()
{
- TRACE( "CSecuiDialogNotifier::NewL, 1 =%d", 1 );
+ RDEBUG("0", 0);
CSecuiDialogNotifier* self = new( ELeave ) CSecuiDialogNotifier;
CleanupStack::PushL( self );
self->ConstructL();
@@ -52,7 +52,7 @@
//
void CSecuiDialogNotifier::Release()
{
- TRACE( "CSecuiDialogNotifier::Release" );
+ RDEBUG("0", 0);
delete this;
}
@@ -62,7 +62,7 @@
//
CSecuiDialogNotifier::TNotifierInfo CSecuiDialogNotifier::RegisterL()
{
- TRACE( "CSecuiDialogNotifier::RegisterL, 1 =%d", 1 );
+ RDEBUG("0", 0);
return Info();
}
@@ -72,7 +72,7 @@
//
CSecuiDialogNotifier::TNotifierInfo CSecuiDialogNotifier::Info() const
{
- TRACE( "CSecuiDialogNotifier::Info, 1 =%d", 1 );
+ RDEBUG("0", 0);
TNotifierInfo info;
static const TUid KUidSecuiDialogNotifier = { 0x10005988 };
@@ -90,26 +90,26 @@
void CSecuiDialogNotifier::StartL( const TDesC8& aBuffer, TInt aReplySlot,
const RMessagePtr2& aMessage )
{
- TRACE( "CSecuiDialogNotifier::StartL, begin" );
+ RDEBUG("0", 0);
TRAPD( err, DoStartL( aBuffer, aReplySlot, aMessage ) );
- TRACE( "CSecuiDialogNotifier::StartL, DoStartL err=%d", err );
+ RDEBUG("err", err);
if( err )
{
if( iSecuiDialogs && !iIsSecuiDialogsDeleted )
{
- TRACE( "CSecuiDialogNotifier::StartL, deleting iSecuiDialogs" );
+ RDEBUG("0", 0);
delete iSecuiDialogs;
iSecuiDialogs = NULL;
}
if( !aMessage.IsNull() )
{
- TRACE( "CSecuiDialogNotifier::StartL, completing message" );
+ RDEBUG("0", 0);
aMessage.Complete( err );
}
}
- TRACE( "CSecuiDialogNotifier::StartL, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -127,10 +127,10 @@
//
void CSecuiDialogNotifier::Cancel()
{
- TRACE( "CSecuiDialogNotifier::Cancel" );
+ RDEBUG("0", 0);
if( iSecuiDialogs && !iIsSecuiDialogsDeleted )
{
- TRACE( "CSecuiDialogNotifier::Cancel, deleting iSecuiDialogs" );
+ RDEBUG("0", 0);
delete iSecuiDialogs;
iSecuiDialogs = NULL;
}
@@ -151,7 +151,7 @@
//
CSecuiDialogNotifier::CSecuiDialogNotifier()
{
- TRACE( "CSecuiDialogNotifier::CSecuiDialogNotifier" );
+ RDEBUG("0", 0);
}
// ---------------------------------------------------------------------------
@@ -169,7 +169,7 @@
void CSecuiDialogNotifier::DoStartL( const TDesC8& aBuffer, TInt aReplySlot,
const RMessagePtr2& aMessage )
{
- TRACE( "CSecuiDialogNotifier::DoStartL, 1 =%d", 1 );
+ RDEBUG("0", 0);
iSecuiDialogs = CSecuiDialogs::NewL( iIsSecuiDialogsDeleted );
iSecuiDialogs->StartLD( aBuffer, aReplySlot, aMessage );
--- a/securitydialogs/secuidialognotifier/src/secuidialognotifiersrv.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifier/src/secuidialognotifiersrv.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -44,13 +44,13 @@
//
TInt RSecuiDialogNotifierSrv::Connect()
{
- TRACE( "RSecuiDialogNotifierSrv::Connect" );
+ RDEBUG("0", 0);
const TInt KMaxCreateSessionAttepmts = 2;
TInt retry = KMaxCreateSessionAttepmts;
FOREVER
{
TInt err = CreateSession( KSecuiDialogNotifierServerName, Version() );
- TRACE( "RSecuiDialogNotifierSrv::Connect, create session err=%d", err );
+ RDEBUG("err", err);
if( err != KErrNotFound && err != KErrServerTerminated )
{
return err;
@@ -89,7 +89,7 @@
const TDesC8& aInputBuffer, TDes8& aOutputBuffer,
TRequestStatus& aStatus )
{
- TRACE( "RSecuiDialogNotifierSrv::SecuiDialogOperation" );
+ RDEBUG("0", 0);
iArgs = TIpcArgs( &aInputBuffer, &aOutputBuffer );
SendReceive( aOperation, iArgs, aStatus );
}
@@ -100,7 +100,7 @@
//
void RSecuiDialogNotifierSrv::CancelOperation()
{
- TRACE( "RSecuiDialogNotifierSrv::CancelOperation" );
+ RDEBUG("0", 0);
SendReceive( KSecuiDialogCancelOperation );
}
@@ -110,12 +110,12 @@
//
TInt RSecuiDialogNotifierSrv::StartServer()
{
- TRACE( "RSecuiDialogNotifierSrv::StartServer, begin" );
+ RDEBUG("0", 0);
RProcess server;
TInt err = server.Create( KSecuiDialogNotifierServerName, KNullDesC );
if( err )
{
- TRACE( "RSecuiDialogNotifierSrv::StartServer, create failed, err=%d", err );
+ RDEBUG("err", err);
return err;
}
@@ -130,7 +130,7 @@
server.Kill( KErrNone );
}
- TRACE( "RSecuiDialogNotifierSrv::StartServer, waiting rendezvous" );
+ RDEBUG("WaitForRequest", 0);
User::WaitForRequest( status );
if( server.ExitType() == EExitPanic )
{
@@ -142,7 +142,7 @@
}
server.Close();
- TRACE( "RSecuiDialogNotifierSrv::StartServer, end err=%d", err );
+ RDEBUG("err", err);
return err;
}
--- a/securitydialogs/secuidialognotifier/src/secuidialogs.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifier/src/secuidialogs.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -37,7 +37,7 @@
//
CSecuiDialogs::~CSecuiDialogs()
{
- TRACE( "CSecuiDialogs::~CSecuiDialogs, begin" );
+ RDEBUG("0", 0);
Cancel();
iServer.Close();
delete iInputBuffer;
@@ -45,7 +45,7 @@
delete iOutputBuffer;
iOutputBuffer = NULL;
iIsDeleted = ETrue;
- TRACE( "CSecuiDialogs::~CSecuiDialogs, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -55,32 +55,32 @@
void CSecuiDialogs::StartLD( const TDesC8& aBuffer, TInt aReplySlot,
const RMessagePtr2& aMessage )
{
- TRACE( "CSecuiDialogs::StartLD, begin" );
+ RDEBUG("0", 0);
User::LeaveIfError( iServer.Connect() );
const TInt* ptr = reinterpret_cast< const TInt* >( aBuffer.Ptr() );
iOperation = static_cast< TSecurityDialogOperation >( *ptr & KSecurityDialogOperationMask );
iReplySlot = aReplySlot;
- TRACE( "CSecuiDialogs::StartLD, iReplySlot 0x%08x", iReplySlot );
+ RDEBUG("iReplySlot", iReplySlot);
- TRACE( "CSecuiDialogs::StartLD, message 0x%08x", iMessagePtr.Handle() );
+ RDEBUG("iMessagePtr.Handle()", iMessagePtr.Handle());
iMessagePtr = aMessage;
- TRACE( "CSecuiDialogs::StartLD, iOperation=%d", iOperation );
+ RDEBUG("iOperation", iOperation);
TSecurityNotificationPckg pckg;
pckg.Copy( aBuffer );
- TRACE( "CSecuiDialogs::StartLD, Copy=%d", 1 );
+ RDEBUG("0", 0);
TInt iStartup = pckg().iStartup;
- TRACE( "CSecuiDialogs::StartLD, iStartup=%d", iStartup );
+ RDEBUG("iStartup", iStartup);
TInt iEvent = pckg().iEvent;
- TRACE( "CSecuiDialogs::StartLD, iEvent=%d", iEvent );
+ RDEBUG("iEvent", iEvent);
TInt lOperation = 0x0000;
if(iStartup)
lOperation = 0x1000;
lOperation += iEvent;
iOperation = static_cast< TSecurityDialogOperation >( lOperation );
- TRACE( "CSecuiDialogs::StartLD, new iOperation=%d", iOperation );
+ RDEBUG("new iOperation", iOperation);
__ASSERT_DEBUG( iOutputBuffer == NULL, User::Invariant() );
TInt outputBufLen = 0;
@@ -91,7 +91,7 @@
}
else
{
- TRACE( "CSecuiDialogs::StartLD, not allowed iOperation =%d", iOperation );
+ RDEBUG("not allowed iOperation", iOperation);
User::Leave( KErrNotSupported );
}
@@ -100,17 +100,17 @@
if( iOutputBuffer )
{
- TRACE( "CSecuiDialogs::StartLD, iOutputPtr.Set outputBufLen=%d", outputBufLen );
+ RDEBUG("outputBufLen", outputBufLen);
iOutputPtr.Set( static_cast< TUint8* >( iOutputBuffer ), outputBufLen, outputBufLen );
iServer.SecuiDialogOperation( iOperation, *iInputBuffer, iOutputPtr, iStatus );
}
else
{
- TRACE( "CSecuiDialogs::StartLD, Leave KErrNotSupported=%d", KErrNotSupported );
+ RDEBUG("KErrNotSupported", KErrNotSupported);
User::Leave( KErrNotSupported );
}
SetActive();
- TRACE( "CSecuiDialogs::StartLD, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -119,26 +119,26 @@
//
void CSecuiDialogs::RunL()
{
- TRACE( "CSecuiDialogs::RunL, iStatus.Int()=%d", iStatus.Int() );
+ RDEBUG("0", 0);
TInt error = iStatus.Int();
+ RDEBUG("error", error);
User::LeaveIfError( error );
__ASSERT_DEBUG( iOutputPtr.Ptr(), User::Invariant() );
- TRACE( "CSecuiDialogs::RunL, calling iMessagePtr.WriteL" );
- TRACE( "CSecuiDialogs::RunL, iReplySlot 0x%08x", iReplySlot );
+ RDEBUG("iReplySlot", iReplySlot);
TInt maxx = iMessagePtr.GetDesMaxLength(iReplySlot);
- TRACE( "CSecuiDialogs::RunL, maxx 0x%08x", maxx );
+ RDEBUG("maxx", maxx);
TInt curr = iMessagePtr.GetDesLength(iReplySlot);
- TRACE( "CSecuiDialogs::RunL, curr 2 0x%08x", curr );
+ RDEBUG("curr", curr);
// no need to copy. Besides, it seems to crash because it's too long
// iMessagePtr.WriteL( iReplySlot, iOutputPtr );
- TRACE( "CSecuiDialogs::RunL, called iMessagePtr.WriteL" );
+ RDEBUG("not called WriteL", 0);
- TRACE( "CSecuiDialogs::RunL, completing message 0x%08x", iMessagePtr.Handle() );
+ RDEBUG("completing iMessagePtr.Handle()", iMessagePtr.Handle());
iMessagePtr.Complete( error );
- TRACE( "CSecuiDialogs::RunL, deleting this" );
+ RDEBUG("0", 0);
delete this;
- TRACE( "CSecuiDialogs::RunL, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -147,14 +147,14 @@
//
void CSecuiDialogs::DoCancel()
{
- TRACE( "CSecuiDialogs::DoCancel, begin" );
+ RDEBUG("0", 0);
iServer.CancelOperation();
if( !iMessagePtr.IsNull() )
{
- TRACE( "CSecuiDialogs::DoCancel, completing message 0x%08x", iMessagePtr.Handle() );
+ RDEBUG("completing iMessagePtr.Handle()", iMessagePtr.Handle());
iMessagePtr.Complete( KErrCancel );
}
- TRACE( "CSecuiDialogs::DoCancel(), end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -163,17 +163,17 @@
//
TInt CSecuiDialogs::RunError( TInt aError )
{
- TRACE( "CSecuiDialogs::RunError, aError=%d", aError );
+ RDEBUG("aError", aError);
if( !iMessagePtr.IsNull() )
{
- TRACE( "CSecuiDialogs::RunError, completing message 0x%08x", iMessagePtr.Handle() );
+ RDEBUG("completing iMessagePtr.Handle()", iMessagePtr.Handle());
iMessagePtr.Complete( aError );
}
- TRACE( "CSecuiDialogs::RunError, deleting this" );
+ RDEBUG("0", 0);
delete this;
- TRACE( "CSecuiDialogs::RunError, end" );
+ RDEBUG("0x99", 0x99);
return KErrNone;
}
@@ -184,7 +184,7 @@
CSecuiDialogs::CSecuiDialogs( TBool& aIsDeleted ) : CActive( CActive::EPriorityLow ),
iIsDeleted( aIsDeleted ), iOutputPtr( NULL, 0, 0 )
{
- TRACE( "CSecuiDialogs::CSecuiDialogs" );
+ RDEBUG("0", 0);
CActiveScheduler::Add( this );
iIsDeleted = EFalse;
}
--- a/securitydialogs/secuidialognotifiersrv/group/secuidialognotifiersrv.mmp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifiersrv/group/secuidialognotifiersrv.mmp Thu Oct 14 13:56:11 2010 +0300
@@ -31,20 +31,10 @@
SOURCE secuidialognotifierserver.cpp
SOURCE secuidialognotifiersession.cpp
SOURCE secuidialogoperation.cpp
-// SOURCE secuidialogoperserverauthfail.cpp
SOURCE secuidialogoperbasicpinquery.cpp
-SOURCE untrustedcertquery.cpp
LIBRARY euser.lib // Base classes
LIBRARY efsrv.lib // RFs
-LIBRARY ctframework.lib // CServerAuthenticationFailureInput
-LIBRARY x509.lib // CX509Certificate
-LIBRARY x500.lib // CX500DistinguishedName
-LIBRARY crypto.lib // CSignedObject
-LIBRARY certstore.lib // CUnifiedCertStore
-LIBRARY DevTokenClient.lib // CTrustSitesStore
-LIBRARY HbCore.lib // CHbDeviceDialogSymbian
-LIBRARY HbWidgets.lib // CHbDeviceMessageBoxSymbian
LIBRARY secui.lib // CSecQueryUi
LIBRARY etelmm.lib
LIBRARY etel.lib
--- a/securitydialogs/secuidialognotifiersrv/inc/secuidialogstrace.h Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifiersrv/inc/secuidialogstrace.h Thu Oct 14 13:56:11 2010 +0300
@@ -20,31 +20,11 @@
#include <e32debug.h> // RDebug
-
-// TODO: replace with OST tracing
#ifdef _DEBUG
-#define TRACE( a, ARGS... ) { RDebug::Printf( "%s %s (%u) value=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 ); DebugPrint( _L( a ), ##ARGS ) ; };
+ #define RDEBUG( x, y ) RDebug::Printf( "%s %s (%u) %s=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, x, y );
#else
-#define TRACE( a, ARGS... )
+ #define RDEBUG( x, y )
#endif
-
-// ---------------------------------------------------------------------------
-// DebugPrint()
-// ---------------------------------------------------------------------------
-//
-#ifdef _DEBUG
-const TInt KMaxPrintSize = 256;
-inline void DebugPrint( TRefByValue<const TDesC> aFmt, ... )
- {
- VA_LIST list;
- VA_START( list, aFmt );
- TBuf<KMaxPrintSize> buf;
- buf.AppendFormatList( aFmt, list );
- RDebug::Print( buf );
- }
-#endif
-
-
#endif // SECUIDIALOGSTRACE_H
--- a/securitydialogs/secuidialognotifiersrv/inc/untrustedcertquery.h Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +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: Displays untrusted certificate dialog
-*
-*/
-
-#ifndef C_UNTRUSTEDCERTQUERY_H
-#define C_UNTRUSTEDCERTQUERY_H
-
-#include <e32base.h> // CActive
-#include <hb/hbcore/hbdevicedialogsymbian.h> // MHbDeviceDialogObserver
-#include <securitydefs.h> // TValidationError
-
-class CHbDeviceDialogSymbian;
-class CHbSymbianVariantMap;
-
-
-/**
-* Displays untrusted certificate query.
-* Untrusted certificate query dialog is displayed for secure connection
-* (SSL/TLS) server authentication failure errors. CCTUntrustedCertQuery
-* class uses UntrustedCertificateDialog device dialog to show the query.
-*/
-NONSHARABLE_CLASS( CUntrustedCertQuery ) : public CActive, public MHbDeviceDialogObserver
- {
- public: // constructors and destructor
- static CUntrustedCertQuery* NewL( TValidationError aValidationError,
- const TDesC8& aCertificate, const TDesC& aServerName,
- TBool aCanHandlePermanentAccept );
- ~CUntrustedCertQuery();
-
- public: // new functions
- enum TResponse {
- EQueryRejected,
- EQueryAccepted,
- EQueryAcceptedPermanently
- };
- void ShowQueryAndWaitForResponseL( TResponse& aResponse );
-
- protected: // from CActive
- void DoCancel();
- void RunL();
-
- private: // from MHbDeviceDialogObserver
- void DataReceived( CHbSymbianVariantMap& aData );
- void DeviceDialogClosed( TInt aCompletionCode );
-
- private: // new functions
- CUntrustedCertQuery( TValidationError aValidationError,
- const TDesC8& aCertificate, const TDesC& aServerName,
- TBool aCanHandlePermanentAccept );
- void ConstructL();
-
- private: // data
- TValidationError iValidationError;
- const TDesC8& iCertificate;
- const TDesC& iServerName;
- TBool iCanHandlePermanentAccept;
- CActiveSchedulerWait *iWait;
- TInt iWaitCompletionCode;
- CHbDeviceDialogSymbian* iDeviceDialog;
- CHbSymbianVariantMap* iVariantMap;
- TResponse iResponse;
- };
-
-#endif // C_UNTRUSTEDCERTQUERY_H
-
--- a/securitydialogs/secuidialognotifiersrv/src/secuidialognotifierserver.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifiersrv/src/secuidialognotifierserver.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -69,7 +69,7 @@
//
CSecuiDialogNotifierServer::~CSecuiDialogNotifierServer()
{
- TRACE( "CSecuiDialogNotifierServer::~CSecuiDialogNotifierServer" );
+ RDEBUG("0", 0);
}
// ---------------------------------------------------------------------------
@@ -78,7 +78,7 @@
//
void CSecuiDialogNotifierServer::AddSession()
{
- TRACE( "CSecuiDialogNotifierServer::AddSession" );
+ RDEBUG("iSessionCount", iSessionCount);
++iSessionCount;
}
@@ -88,11 +88,11 @@
//
void CSecuiDialogNotifierServer::RemoveSession()
{
- TRACE( "CSecuiDialogNotifierServer::RemoveSession" );
+ RDEBUG("iSessionCount", iSessionCount);
--iSessionCount;
if( iSessionCount == 0 )
{
- TRACE( "CSecuiDialogNotifierServer::RemoveSession, shutting down" );
+ RDEBUG("CActiveScheduler::Stop 0", 0);
CActiveScheduler::Stop();
}
}
@@ -104,13 +104,13 @@
CSession2* CSecuiDialogNotifierServer::NewSessionL( const TVersion &aVersion,
const RMessage2& /*aMessage*/ ) const
{
- TRACE( "CSecuiDialogNotifierServer::NewSessionL" );
+ RDEBUG("0", 0);
TVersion version( KSecuiDialogNotifierServerMajorVersionNumber,
KSecuiDialogNotifierServerMinorVersionNumber,
KSecuiDialogNotifierServerBuildVersionNumber );
if( !User::QueryVersionSupported( version, aVersion ) )
{
- TRACE( "CSecuiDialogNotifierServer::NewSessionL, version not supported" );
+ RDEBUG("KErrNotSupported", KErrNotSupported);
User::Leave( KErrNotSupported );
}
@@ -124,7 +124,7 @@
CSecuiDialogNotifierServer::CSecuiDialogNotifierServer() :
CPolicyServer( CActive::EPriorityStandard, KSecuiDialogNotifierServerPolicy )
{
- TRACE( "CSecuiDialogNotifierServer::CSecuiDialogNotifierServer" );
+ RDEBUG("0", 0);
}
// ---------------------------------------------------------------------------
--- a/securitydialogs/secuidialognotifiersrv/src/secuidialognotifierservermain.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifiersrv/src/secuidialognotifierservermain.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -26,22 +26,23 @@
//
LOCAL_C void MainL()
{
- TRACE( "SecuiDialogNotifierServer: MainL" );
+ RDEBUG("0", 0);
CActiveScheduler* scheduler = new( ELeave ) CActiveScheduler;
CleanupStack::PushL( scheduler );
CActiveScheduler::Install( scheduler );
CSecuiDialogNotifierServer* server = CSecuiDialogNotifierServer::NewLC();
User::LeaveIfError( User::RenameThread( KSecuiDialogNotifierServerName ) );
- TRACE( "SecuiDialogNotifierServer: MainL, rendezvous" );
+ RDEBUG("Rendezvous 0", 0);
RProcess::Rendezvous( KErrNone );
- TRACE( "SecuiDialogNotifierServer: MainL, activescheduler start" );
+ RDEBUG("CActiveScheduler 0", 0);
CActiveScheduler::Start();
- TRACE( "SecuiDialogNotifierServer: MainL, cleanup" );
+ RDEBUG("PopAndDestroy 0", 0);
CleanupStack::PopAndDestroy( server );
CleanupStack::PopAndDestroy( scheduler );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
--- a/securitydialogs/secuidialognotifiersrv/src/secuidialognotifiersession.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifiersrv/src/secuidialognotifiersession.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -18,10 +18,8 @@
#include "secuidialognotifiersession.h" // CSecuiDialogNotifierSession
#include "secuidialognotifierserver.h" // CSecuiDialogNotifierServer
#include "secuidialognotifierservername.h" // KSecuiDialogsCancelOperation
-// #include "secuidialogoperserverauthfail.h" // CServerAuthFailOperation
#include "secuidialogoperbasicpinquery.h" // CBasicPinQueryOperation
#include "secuidialogstrace.h" // TRACE macro
-#include <secdlgimpldefs.h> // TSecurityDialogOperation
#include <keyguardaccessapi.h>
const TInt KInputParam = 0;
@@ -36,7 +34,7 @@
//
CSecuiDialogNotifierSession* CSecuiDialogNotifierSession::NewL()
{
- TRACE( "CBasicPinQueryOperation::RunL, 1 =%d", 1 );
+ RDEBUG("0", 0);
CSecuiDialogNotifierSession* self = new( ELeave ) CSecuiDialogNotifierSession;
CleanupStack::PushL( self );
self->ConstructL();
@@ -50,13 +48,13 @@
//
CSecuiDialogNotifierSession::~CSecuiDialogNotifierSession()
{
- TRACE( "CSecuiDialogNotifierSession::~CSecuiDialogNotifierSession, begin" );
+ RDEBUG("0", 0);
Server().RemoveSession();
delete iOperationHandler;
iOperationHandler = NULL;
delete iInputBuffer;
iInputBuffer = NULL;
- TRACE( "CSecuiDialogNotifierSession::~CSecuiDialogNotifierSession, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -65,7 +63,7 @@
//
void CSecuiDialogNotifierSession::CreateL()
{
- TRACE( "CSecuiDialogNotifierSession::~CSecuiDialogNotifierSession" );
+ RDEBUG("0", 0);
Server().AddSession();
}
@@ -75,13 +73,12 @@
//
void CSecuiDialogNotifierSession::ServiceL( const RMessage2& aMessage )
{
- TRACE( "CSecuiDialogNotifierSession::ServiceL, message 0x%08x", aMessage.Handle() );
+ RDEBUG("aMessage.Handle()", aMessage.Handle());
TRAPD( error, DispatchMessageL( aMessage ) );
- TRACE( "CSecuiDialogNotifierSession::ServiceL, dispatched, error %d", error );
+ RDEBUG("error", error);
if( error && !aMessage.IsNull() )
{
- TRACE( "CSecuiDialogNotifierSession::ServiceL, completing msg 0x%08x",
- aMessage.Handle() );
+ RDEBUG("Complete aMessage.Handle()", aMessage.Handle());
aMessage.Complete( error );
}
}
@@ -92,10 +89,10 @@
//
void CSecuiDialogNotifierSession::OperationComplete()
{
- TRACE( "CSecuiDialogNotifierSession::OperationComplete, begin" );
+ RDEBUG("0", 0);
delete iOperationHandler;
iOperationHandler = NULL;
- TRACE( "CSecuiDialogNotifierSession::OperationComplete, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -104,7 +101,7 @@
//
CSecuiDialogNotifierSession::CSecuiDialogNotifierSession()
{
- TRACE( "CSecuiDialogNotifierSession::CSecuiDialogNotifierSession" );
+ RDEBUG("0", 0);
}
// ---------------------------------------------------------------------------
@@ -113,7 +110,7 @@
//
void CSecuiDialogNotifierSession::ConstructL()
{
- TRACE( "CSecuiDialogNotifierSession::ConstructL" );
+ RDEBUG("0", 0);
}
// ---------------------------------------------------------------------------
@@ -132,42 +129,39 @@
//
void CSecuiDialogNotifierSession::DispatchMessageL( const RMessage2& aMessage )
{
- TRACE( "CSecuiDialogNotifierSession::DispatchMessageL, begin" );
+ RDEBUG("0", 0);
if( !IsOperationCancelled( aMessage ) )
{
TInt lOperation = aMessage.Function();
- TSecurityDialogOperation operation =
- static_cast< TSecurityDialogOperation >( lOperation );
- TRACE( "CSecuiDialogNotifierSession::DispatchMessageL, operation=%d", operation );
// from AskSecCodeInAutoLockL
if(lOperation==0x100+6 /*RMobilePhone::EPhonePasswordRequired*/)
{
- TRACE( "CSecuiDialogNotifierSession::DispatchMessageL, query from AskSecCodeInAutoLockL . No need to start Autolock.exe =%d", 0 );
+ RDEBUG("query from AskSecCodeInAutoLockL . No need to start Autolock.exe", 0);
}
else
{
CKeyguardAccessApi* iKeyguardAccess = CKeyguardAccessApi::NewL( );
- TRACE( "CBasicPinQueryOperation::RunL, 1 =%d", 1 );
+ RDEBUG("0", 0);
TInt err = iKeyguardAccess->ShowKeysLockedNote( );
- TRACE( "CBasicPinQueryOperation::RunL, err =%d", err );
+ RDEBUG("err", err);
delete iKeyguardAccess;
}
- TRACE( "CBasicPinQueryOperation::RunL, lOperation =%d", lOperation );
+ RDEBUG("lOperation", lOperation);
if( lOperation >= 0x1000 ) // flag for iStartup
lOperation -= 0x1000;
- TRACE( "CBasicPinQueryOperation::RunL, new lOperation =%d", lOperation );
+ RDEBUG("new lOperation", lOperation);
if( lOperation < 0x200 )
{
BasicPinOperationL( aMessage );
}
else
{
- TRACE( "CBasicPinQueryOperation::RunL, lOperation =%d", lOperation );
+ RDEBUG("KErrNotSupported", KErrNotSupported);
User::Leave( KErrNotSupported );
}
}
- TRACE( "CSecuiDialogNotifierSession::DispatchMessageL, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -181,11 +175,10 @@
{
if( iOperationHandler )
{
- TRACE( "CSecuiDialogNotifierSession::CheckIfOperationCancelledL, cancelling" );
+ RDEBUG("0", 0);
iOperationHandler->CancelOperation();
}
- TRACE( "CSecuiDialogNotifierSession::CheckIfOperationCancelledL, completing msg 0x%08x",
- aMessage.Handle() );
+ RDEBUG("completing aMessage.Handle()", aMessage.Handle());
aMessage.Complete( KErrNone );
isCancelled = ETrue;
}
@@ -199,7 +192,7 @@
void CSecuiDialogNotifierSession::GetInputBufferL( const RMessage2& aMessage )
{
TInt inputLength = aMessage.GetDesLength( KInputParam );
- TRACE( "CSecuiDialogNotifierSession::GetInputBufferL, inputLength=%d", inputLength );
+ RDEBUG("inputLength", inputLength);
__ASSERT_ALWAYS( inputLength > 0, User::Leave( KErrCorrupt ) );
if( iInputBuffer )
{
@@ -209,23 +202,16 @@
iInputBuffer = HBufC8::NewL( inputLength );
TPtr8 inputBufferPtr( iInputBuffer->Des() );
aMessage.ReadL( KInputParam, inputBufferPtr );
- TRACE( "CSecuiDialogNotifierSession::GetInputBufferL, read complete" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
// CSecuiDialogNotifierSession::ServerAuthenticationFailureL()
// ---------------------------------------------------------------------------
//
-void CSecuiDialogNotifierSession::ServerAuthenticationFailureL( const RMessage2& aMessage )
+void CSecuiDialogNotifierSession::ServerAuthenticationFailureL( const RMessage2& /* aMessage */ )
{
- TRACE( "CSecuiDialogNotifierSession::ServerAuthenticationFailureL, begin" );
- GetInputBufferL( aMessage );
-
- ASSERT( iOperationHandler == NULL );
- // iOperationHandler = CServerAuthFailOperation::NewL( *this, aMessage, KOutputParam );
- // iOperationHandler->StartL( *iInputBuffer );
-
- TRACE( "CSecuiDialogNotifierSession::ServerAuthenticationFailureL, end" );
+ RDEBUG("not used 0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -234,13 +220,13 @@
//
void CSecuiDialogNotifierSession::BasicPinOperationL( const RMessage2& aMessage )
{
- TRACE( "CSecuiDialogNotifierSession::BasicPinOperationL, begin" );
+ RDEBUG("0", 0);
GetInputBufferL( aMessage );
ASSERT( iOperationHandler == NULL );
iOperationHandler = CBasicPinQueryOperation::NewL( *this, aMessage, KOutputParam );
iOperationHandler->StartL( *iInputBuffer );
- TRACE( "CSecuiDialogNotifierSession::BasicPinOperationL, end" );
+ RDEBUG("0x99", 0x99);
}
--- a/securitydialogs/secuidialognotifiersrv/src/secuidialogoperation.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifiersrv/src/secuidialogoperation.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -32,8 +32,7 @@
TInt aReplySlot ) : CActive( CActive::EPriorityStandard ), iObserver( aObserver ),
iMessage( aMessage ), iReplySlot( aReplySlot )
{
- TRACE( "CSecuiDialogOperation::CSecuiDialogOperation, iMessage 0x%08x",
- iMessage.Handle() );
+ RDEBUG("aMessage.Handle()", aMessage.Handle());
CActiveScheduler::Add( this );
}
@@ -43,9 +42,9 @@
//
CSecuiDialogOperation::~CSecuiDialogOperation()
{
- TRACE( "CSecuiDialogOperation::~CSecuiDialogOperation, begin" );
+ RDEBUG("0", 0);
Cancel();
- TRACE( "CSecuiDialogOperation::~CSecuiDialogOperation, end" );
+ RDEBUG("0x99", 0x99);
}
// ---------------------------------------------------------------------------
@@ -54,13 +53,13 @@
//
TInt CSecuiDialogOperation::RunError( TInt aError )
{
- TRACE( "CSecuiDialogOperation::RunError, aError=%d", aError );
+ RDEBUG("aError", aError);
if( !iMessage.IsNull() )
{
- TRACE( "CSecuiDialogOperation::RunError, completing message 0x%08x",
- iMessage.Handle() );
+ RDEBUG("completing message iMessage.Handle()", iMessage.Handle());
iMessage.Complete( aError );
}
+ RDEBUG("0x99", 0x99);
return KErrNone;
}
@@ -68,13 +67,8 @@
// CSecuiDialogOperation::ShowWarningNoteL()
// ---------------------------------------------------------------------------
//
-void CSecuiDialogOperation::ShowWarningNoteL( const TDesC& aMessage )
+void CSecuiDialogOperation::ShowWarningNoteL( const TDesC& /* aMessage */ )
{
- CHbDeviceMessageBoxSymbian *note =
- CHbDeviceMessageBoxSymbian::NewL( CHbDeviceMessageBoxSymbian::EWarning );
- CleanupStack::PushL( note );
- note->SetTextL( aMessage );
- (void)note->ExecL(); // waits for response or timeout
- CleanupStack::PopAndDestroy( note );
+ RDEBUG("not used 0", 0);
}
--- a/securitydialogs/secuidialognotifiersrv/src/secuidialogoperbasicpinquery.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/securitydialogs/secuidialognotifiersrv/src/secuidialogoperbasicpinquery.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -1,28 +1,26 @@
/*
-* 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: Basic PIN query operation in secui dialog
-*
-*/
+ * 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: Basic PIN query operation in secui dialog
+ *
+ */
#include "secuidialogoperbasicpinquery.h" // CBasicPinQueryOperation
#include "secuidialogoperationobserver.h" // MSecuiDialogOperationObserver
#include <hb/hbcore/hbtextresolversymbian.h> // HbTextResolverSymbian
#include "secuidialogstrace.h" // TRACE macro
-
// TODO: fix this
#include "../../../securitydialogs/SecUi/Inc/SecQueryUi.h" // CSecQueryUi
-
#include <secui.h>
#include <secuisecurityhandler.h>
#include <gsmerror.h>
@@ -31,21 +29,11 @@
#include <startupdomainpskeys.h>
#include <featmgr.h>
-const TInt KPhoneIndex( 0 );
-const TInt KTriesToConnectServer( 2 );
-const TInt KTimeBeforeRetryingServerConnection( 50000 );
-
-_LIT( KMmTsyModuleName, "PhoneTsy");
+const TInt KPhoneIndex(0);
+const TInt KTriesToConnectServer(2);
+const TInt KTimeBeforeRetryingServerConnection(50000);
-// Descriptors for different password queries
-_LIT( KBasicPinQueryKeyStorePassphrase, "Key store passphrase" );
-_LIT( KBasicPinQueryNewKeyStorePassphrase, "New key store passphrase" );
-_LIT( KBasicPinQueryImportedKeyFilePassphrase, "Passphrase of the imported key file" );
-_LIT( KBasicPinQueryExportedKeyFilePassphrase, "Passphrase of the exported key file" );
-_LIT( KBasicPinQueryPKCS12, "PKCS12");
-
-
-
+_LIT( KMmTsyModuleName, "PhoneTsy");
// ======== MEMBER FUNCTIONS ========
@@ -53,13 +41,11 @@
// CBasicPinQueryOperation::NewL()
// ---------------------------------------------------------------------------
//
-CBasicPinQueryOperation* CBasicPinQueryOperation::NewL(
- MSecuiDialogOperationObserver& aObserver, const RMessage2& aMessage,
- TInt aReplySlot )
+CBasicPinQueryOperation* CBasicPinQueryOperation::NewL(MSecuiDialogOperationObserver& aObserver, const RMessage2& aMessage, TInt aReplySlot)
{
- TRACE( "CBasicPinQueryOperation::NewL, aMessage 0x%08x", aMessage.Handle() );
- TRACE( "CBasicPinQueryOperation::NewL, aMessage.Function = 0x%08x", aMessage.Function() );
- return new( ELeave ) CBasicPinQueryOperation( aObserver, aMessage, aReplySlot );
+ RDEBUG("aMessage.Handle()", aMessage.Handle());
+ RDEBUG("aMessage.Function()", aMessage.Function());
+ return new (ELeave) CBasicPinQueryOperation(aObserver, aMessage, aReplySlot);
}
// ---------------------------------------------------------------------------
@@ -68,24 +54,24 @@
//
CBasicPinQueryOperation::~CBasicPinQueryOperation()
{
- TRACE( "CBasicPinQueryOperation::~CBasicPinQueryOperation" );
+ RDEBUG("0", 0);
Cancel();
- iPinInput = NULL; // not owned
+ iPinInput = NULL; // not owned
}
// ---------------------------------------------------------------------------
// CBasicPinQueryOperation::StartL()
// ---------------------------------------------------------------------------
//
-void CBasicPinQueryOperation::StartL( const TDesC8& aBuffer )
+void CBasicPinQueryOperation::StartL(const TDesC8& aBuffer)
{
- TRACE( "CBasicPinQueryOperation::StartL" );
- iPinInput = reinterpret_cast< const TPINInput* >( aBuffer.Ptr() );
- ASSERT( iPinInput != NULL );
+ RDEBUG("0", 0);
+ iPinInput = reinterpret_cast<const TPINInput*> (aBuffer.Ptr());
+ ASSERT(iPinInput != NULL);
iStatus = KRequestPending;
TRequestStatus* status = &iStatus;
- User::RequestComplete( status, KErrNone );
+ User::RequestComplete(status, KErrNone);
SetActive();
}
@@ -95,7 +81,7 @@
//
void CBasicPinQueryOperation::CancelOperation()
{
- TRACE( "CBasicPinQueryOperation::CancelOperation" );
+ RDEBUG("0", 0);
// nothing to do
}
@@ -105,193 +91,129 @@
//
void CBasicPinQueryOperation::RunL()
{
- TRACE( "CBasicPinQueryOperation::RunL, iStatus.Int()=%d", iStatus.Int() );
- User::LeaveIfError( iStatus.Int() );
+ RDEBUG("iStatus.Int()", iStatus.Int());
+ User::LeaveIfError(iStatus.Int());
- TBool isRetry = ( iPinInput->iOperation & EPINValueIncorrect );
- if( isRetry )
+ TBool isRetry = (iPinInput->iOperation & EPINValueIncorrect);
+ if (isRetry)
{
// Show "Invalid PIN code" error note, as previous attempt was failed.
// TODO: localized UI string needed
- _LIT( KInvalidPinCode, "Invalid PIN code" );
- ShowWarningNoteL( KInvalidPinCode );
- }
-TRACE( "CBasicPinQueryOperation::RunL, iPinInput->iOperation=%d", iPinInput->iOperation );
-
- HBufC* caption = NULL;
- if( iPinInput->iPIN.iPINLabel == KBasicPinQueryKeyStorePassphrase )
- {
- TRACE( "CBasicPinQueryOperation::RunL, KBasicPinQueryKeyStorePassphrase =%d", 1 );
-
- // TODO: localized UI string needed
- _LIT( KText, "Keystore password:" );
- caption = KText().AllocLC();
+ _LIT(KInvalidPinCode, "Invalid PIN code");
+ ShowWarningNoteL( KInvalidPinCode);
}
- else if( iPinInput->iPIN.iPINLabel == KBasicPinQueryNewKeyStorePassphrase )
- {
- TRACE( "CBasicPinQueryOperation::RunL, KBasicPinQueryNewKeyStorePassphrase =%d", 1 );
-
- // "Keystore password must be created for using private keys."
- // SecUi creates two input fields when caption contains two labels
- // separated with a vertical bar. SecUi verifies that user types the
- // same passphrase in both fields.
- // TODO: localized UI strings needed
- _LIT( KText, "Create keystore password:|Verify:" );
- caption = KText().AllocLC();
- }
- else if( iPinInput->iPIN.iPINLabel == KBasicPinQueryImportedKeyFilePassphrase )
- {
- TRACE( "CBasicPinQueryOperation::RunL, KBasicPinQueryImportedKeyFilePassphrase =%d", 1 );
+ RDEBUG("iPinInput->iOperation", iPinInput->iOperation);
- // "Enter code for imported key:"
- // TODO: localized UI strings needed
- _LIT( KText, "Enter code for imported key:|Verify:" );
- caption = KText().AllocLC();
- }
- else if( iPinInput->iPIN.iPINLabel == KBasicPinQueryExportedKeyFilePassphrase )
- {
- TRACE( "CBasicPinQueryOperation::RunL, KBasicPinQueryExportedKeyFilePassphrase =%d", 1 );
-
- // "Enter new code for exported key:"
- // TODO: localized UI strings needed
- _LIT( KText, "Enter new code for exported key:|Verify:" );
- caption = KText().AllocLC();
- }
- else if( iPinInput->iPIN.iPINLabel == KBasicPinQueryPKCS12 )
- {
- TRACE( "CBasicPinQueryOperation::RunL, KBasicPinQueryPKCS12 =%d", 1 );
-
- // "Password for %U:", PKCS#12 password query prompt
- // TODO: localized UI string needed
- _LIT( KText, "Password for PKCS#12 file:" );
- caption = KText().AllocLC();
- }
- else
- {
- TRACE( "CBasicPinQueryOperation::RunL, else =%d", 1 );
-
- // "Enter code for %0U in %1U"
- // Data query for PIN request in keystore where %0U is the PIN's name %1U is the keystore's name.
- // TODO: EEnterPinNR
- _LIT( KText, "86" );
- caption = KText().AllocLC();
- }
iPinValue.Copy(_L("0"));
- TRACE( "CBasicPinQueryOperation::RunL, 1 =%d", 1 );
+ RDEBUG("0", 0);
TInt resultVerif = KErrNone;
- TRACE( "CBasicPinQueryOperation::RunL, 1 =%d", 1 );
+ RDEBUG("0", 0);
+
+ {
+ RMobilePhone iPhone;
+
+ TInt err(KErrGeneral);
+ RDEBUG("ESecurityQueryActive", ESecurityQueryActive);
+ err = RProperty::Set(KPSUidStartup, KStartupSecurityCodeQueryStatus, ESecurityQueryActive);
+ RDEBUG("err", err);
+ TInt thisTry(0);
+ RTelServer iTelServer;
+ RMmCustomAPI iCustomPhone;
+ while ((err = iTelServer.Connect()) != KErrNone && (thisTry++) <= KTriesToConnectServer)
{
- RMobilePhone iPhone;
+ User::After( KTimeBeforeRetryingServerConnection);
+ }
+ err = iTelServer.LoadPhoneModule(KMmTsyModuleName);
+ RTelServer::TPhoneInfo PhoneInfo;
+ err = iTelServer.SetExtendedErrorGranularity(RTelServer::EErrorExtended);
+ err = iTelServer.GetPhoneInfo(KPhoneIndex, PhoneInfo);
+ err = iPhone.Open(iTelServer, PhoneInfo.iName);
+ err = iCustomPhone.Open(iPhone);
+ RDEBUG("err", err);
+ CSecurityHandler* handler = new (ELeave) CSecurityHandler(iPhone);
+ CleanupStack::PushL(handler);
+ // TSecUi::InitializeLibL();
+ RDEBUG("0", 0);
+ RMobilePhone::TMobilePhoneSecurityEvent iEvent;
+ TInt lEvent = iPinInput->iOperation;
+ RDEBUG("lEvent", lEvent);
+ if (lEvent >= 0x1000) // flag for iStartUp
+ {
+ lEvent -= 0x1000;
+ }
+ iEvent = static_cast<RMobilePhone::TMobilePhoneSecurityEvent> (lEvent);
+ RDEBUG("iEvent", iEvent);
+ RDEBUG("iStartUp", iStartUp);
+ TRAPD(resultHandler, handler->HandleEventL(iEvent, iStartUp, resultVerif));
+ RDEBUG("resultHandler", resultHandler);
+ RDEBUG("resultVerif", resultVerif);
- TInt err( KErrGeneral);
- TRACE( "CBasicPinQueryOperation::RunL, ESecurityQueryActive =%d", ESecurityQueryActive );
- err = RProperty::Set(KPSUidStartup, KStartupSecurityCodeQueryStatus, ESecurityQueryActive);
- TRACE( "CBasicPinQueryOperation::RunL, err =%d", err );
-
- TInt thisTry( 0);
- RTelServer iTelServer;
- RMmCustomAPI iCustomPhone;
- while ( ( err = iTelServer.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
- {
- User::After( KTimeBeforeRetryingServerConnection );
- }
- err = iTelServer.LoadPhoneModule( KMmTsyModuleName );
- RTelServer::TPhoneInfo PhoneInfo;
- err = iTelServer.SetExtendedErrorGranularity( RTelServer::EErrorExtended ) ;
- err = iTelServer.GetPhoneInfo( KPhoneIndex, PhoneInfo ) ;
- err = iPhone.Open( iTelServer, PhoneInfo.iName ) ;
- err = iCustomPhone.Open( iPhone ) ;
- TRACE( "CBasicPinQueryOperation::RunL, err =%d", err );
- CSecurityHandler* handler = new(ELeave) CSecurityHandler(iPhone);
- CleanupStack::PushL(handler);
- // TSecUi::InitializeLibL();
- TRACE( "CBasicPinQueryOperation::RunL, TMobilePhoneSecurityEvent 1 =%d", 1 );
- RMobilePhone::TMobilePhoneSecurityEvent iEvent;
- TInt lEvent = iPinInput->iOperation;
- TRACE( "CBasicPinQueryOperation::RunL, lEvent =%d", lEvent );
- if( lEvent >= 0x1000 ) // flag for iStartUp
- {
- lEvent-=0x1000;
- }
- iEvent = static_cast<RMobilePhone::TMobilePhoneSecurityEvent>(lEvent);
- TRACE( "CBasicPinQueryOperation::RunL, iEvent =%d", iEvent );
- TRACE( "CBasicPinQueryOperation::RunL, TBool iStartUp =%d", iStartUp );
- TRAPD( resultHandler, handler->HandleEventL( iEvent, iStartUp, resultVerif ) );
- TRACE( "CBasicPinQueryOperation::RunL, resultHandler =%d", resultHandler );
- TRACE( "CBasicPinQueryOperation::RunL, resultVerif =%d", resultVerif );
-
- // if something went wrong cancel the code request
- if (resultHandler)
- {
- if(resultVerif==KErrNone) // if the process failed, then the result shoud also indicate the failure (unless it does it already)
- resultVerif = resultHandler;
- TRACE( "CBasicPinQueryOperation::RunL, iEvent =%d", iEvent );
- TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
- TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
- switch (iEvent)
- {
- case RMobilePhone::EUniversalPinRequired:
- if(wcdmaSupported || upinSupported)
- {
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityUniversalPin);
- }
- break;
- case RMobilePhone::EUniversalPukRequired:
- if(wcdmaSupported || upinSupported)
- {
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityUniversalPuk);
- }
- break;
- case RMobilePhone::EPin1Required:
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin1);
- break;
- case RMobilePhone::EPuk1Required:
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePuk1);
- break;
- case RMobilePhone::EPin2Required:
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin2);
- break;
- case RMobilePhone::EPuk2Required:
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePuk2);
- break;
- case RMobilePhone::EPhonePasswordRequired:
- iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePhonePassword);
- break;
- default:
- TRACE( "CBasicPinQueryOperation::RunL, default iEvent =%d", iEvent );
- break;
- }
- }
-
- // uninitialize security ui
- TRACE( "CBasicPinQueryOperation::RunL, PopAndDestroy(handler) =%d", 0 );
- CleanupStack::PopAndDestroy(handler); // handler
- TRACE( "CBasicPinQueryOperation::RunL, UnInitializeLib =%d", 1 );
- TSecUi::UnInitializeLib();
- TRACE( "CBasicPinQueryOperation::RunL, ESecurityQueryNotActive =%d", ESecurityQueryNotActive );
- err = RProperty::Set(KPSUidStartup, KStartupSecurityCodeQueryStatus, ESecurityQueryNotActive);
- TRACE( "CBasicPinQueryOperation::RunL, err =%d", err );
- //close ETel connection
- if (iTelServer.Handle())
- {
- TRACE( "CBasicPinQueryOperation::RunL, iPhone.Close =%d", 0 );
- iPhone.Close();
- iTelServer.UnloadPhoneModule(KMmTsyModuleName);
- iTelServer.Close();
- TRACE( "CBasicPinQueryOperation::RunL, iTelServer.Close =%d", 1 );
- }
+ // if something went wrong cancel the code request
+ if (resultHandler)
+ {
+ if (resultVerif == KErrNone) // if the process failed, then the result shoud also indicate the failure (unless it does it already)
+ resultVerif = resultHandler;
+ RDEBUG("iEvent", iEvent);
+ TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
+ TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
+ switch (iEvent)
+ {
+ case RMobilePhone::EUniversalPinRequired:
+ if (wcdmaSupported || upinSupported)
+ {
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityUniversalPin);
+ }
+ break;
+ case RMobilePhone::EUniversalPukRequired:
+ if (wcdmaSupported || upinSupported)
+ {
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityUniversalPuk);
+ }
+ break;
+ case RMobilePhone::EPin1Required:
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin1);
+ break;
+ case RMobilePhone::EPuk1Required:
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePuk1);
+ break;
+ case RMobilePhone::EPin2Required:
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePin2);
+ break;
+ case RMobilePhone::EPuk2Required:
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePuk2);
+ break;
+ case RMobilePhone::EPhonePasswordRequired:
+ iPhone.AbortSecurityCode(RMobilePhone::ESecurityCodePhonePassword);
+ break;
+ default:
+ RDEBUG("default iEvent", iEvent);
+ break;
+ }
}
-
- ReturnResultL( resultVerif );
+ // uninitialize security ui
+ RDEBUG("PopAndDestroy 0", 0);
+ CleanupStack::PopAndDestroy(handler); // handler
+ RDEBUG("UnInitializeLib 0", 0);
+ TSecUi::UnInitializeLib();
+ RDEBUG("ESecurityQueryNotActive", ESecurityQueryNotActive);
+ err = RProperty::Set(KPSUidStartup, KStartupSecurityCodeQueryStatus, ESecurityQueryNotActive);
+ RDEBUG("err", err);
+ //close ETel connection
+ if (iTelServer.Handle())
+ {
+ RDEBUG("iPhone.Close()", 0);
+ iPhone.Close();
+ iTelServer.UnloadPhoneModule(KMmTsyModuleName);
+ iTelServer.Close();
+ RDEBUG("0", 0);
+ }
+ }
- if( caption )
- {
- CleanupStack::PopAndDestroy( caption );
- caption = NULL;
- }
+ ReturnResultL(resultVerif);
+
}
// ---------------------------------------------------------------------------
@@ -300,40 +222,39 @@
//
void CBasicPinQueryOperation::DoCancel()
{
- TRACE( "CBasicPinQueryOperation::DoCancel" );
+ RDEBUG("0", 0);
}
// ---------------------------------------------------------------------------
// CBasicPinQueryOperation::CBasicPinQueryOperation()
// ---------------------------------------------------------------------------
//
-CBasicPinQueryOperation::CBasicPinQueryOperation(
- MSecuiDialogOperationObserver& aObserver, const RMessage2& aMessage,
- TInt aReplySlot ) : CSecuiDialogOperation( aObserver, aMessage, aReplySlot )
+CBasicPinQueryOperation::CBasicPinQueryOperation(MSecuiDialogOperationObserver& aObserver, const RMessage2& aMessage, TInt aReplySlot) :
+ CSecuiDialogOperation(aObserver, aMessage, aReplySlot)
{
- TRACE( "CBasicPinQueryOperation::CBasicPinQueryOperation, aMessage 0x%08x", aMessage.Handle() );
- TRACE( "CBasicPinQueryOperation::CBasicPinQueryOperation, aMessage.Function = 0x%08x", aMessage.Function() );
- iStartUp=EFalse;
- if(aMessage.Function()>=0x1000)
- iStartUp=ETrue;
+ RDEBUG("aMessage.Handle()", aMessage.Handle());
+ RDEBUG("aMessage.Function()", aMessage.Function());
+ iStartUp = EFalse;
+ if (aMessage.Function() >= 0x1000)
+ iStartUp = ETrue;
}
// ---------------------------------------------------------------------------
// CBasicPinQueryOperation::ReturnResultL()
// ---------------------------------------------------------------------------
//
-void CBasicPinQueryOperation::ReturnResultL( TInt aErrorCode )
+void CBasicPinQueryOperation::ReturnResultL(TInt aErrorCode)
{
- TRACE( "CBasicPinQueryOperation::ReturnResultL, begin, aErrorCode=%d", aErrorCode );
- if( aErrorCode <= KErrNone ) // TODO should skip WriteL is error?
+ RDEBUG("aErrorCode", aErrorCode);
+ if (aErrorCode <= KErrNone) // TODO should skip WriteL is error?
{
- TPINValueBuf output( iPinValue );
- iMessage.WriteL( iReplySlot, output );
+ TPINValueBuf output(iPinValue);
+ iMessage.WriteL(iReplySlot, output);
}
- TRACE( "CBasicPinQueryOperation::ReturnResultL, completing msg 0x%08x", iMessage.Handle() );
- iMessage.Complete( aErrorCode );
- TRACE( "CBasicPinQueryOperation::ReturnResultL, informing observer" );
+ RDEBUG("Complete iMessage.Handle()", iMessage.Handle());
+ iMessage.Complete(aErrorCode);
+ RDEBUG("informing observer 0", 0);
iObserver.OperationComplete();
- TRACE( "CBasicPinQueryOperation::ReturnResultL, end" );
+ RDEBUG("0x99", 0x99);
}
--- a/securitydialogs/secuidialognotifiersrv/src/untrustedcertquery.cpp Thu Oct 07 14:07:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +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: Displays untrusted certificate dialog
-*
-*/
-
-#include "untrustedcertquery.h" // CUntrustedCertQuery
-#include <hb/hbcore/hbsymbianvariant.h> // CHbSymbianVariantMap
-#include "secuidialogstrace.h" // TRACE macro
-
-// Note that the dialog type string, the parameters name strings, and the return code
-// name string and values must match to those defined in Qt-side untrusted certificate
-// dialog (in untrustedcertificatedefinitions.h file).
-
-// Device dialog type for untrusted certificate dialog
-_LIT( KUntrustedCertificateDialog, "com.nokia.untrustedcert/1.0" );
-
-// Variant map parameter names for untrusted certificate dialog
-_LIT( KUntrustedCertEncodedCertificate, "cert" ); // bytearray, mandatory
-_LIT( KUntrustedCertServerName, "host" ); // string, mandatory
-_LIT( KUntrustedCertValidationError, "err" ); // int (TValidationError), mandatory
-_LIT( KUntrustedCertTrustedSiteStoreFail, "tss" ); // any, prevents permanent acceptance
-
-// Dialog return code name and values
-_LIT( KUntrustedCertDialogResult, "result" ); // int
-const TInt KUntrustedCertDialogRejected = 0;
-const TInt KUntrustedCertDialogAccepted = 1;
-const TInt KUntrustedCertDialogAcceptedPermanently = 2;
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::NewL()
-// ---------------------------------------------------------------------------
-//
-CUntrustedCertQuery* CUntrustedCertQuery::NewL(
- TValidationError aValidationError, const TDesC8& aCertificate,
- const TDesC& aServerName, TBool aCanHandlePermanentAccept )
- {
- TRACE( "CUntrustedCertQuery::NewL" );
- CUntrustedCertQuery* self = new ( ELeave ) CUntrustedCertQuery(
- aValidationError, aCertificate, aServerName,
- aCanHandlePermanentAccept );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::~CUntrustedCertQuery()
-// ---------------------------------------------------------------------------
-//
-CUntrustedCertQuery::~CUntrustedCertQuery()
- {
- TRACE( "CUntrustedCertQuery::~CUntrustedCertQuery, begin" );
- Cancel();
- delete iWait;
- iWait = NULL;
- delete iDeviceDialog;
- iDeviceDialog = NULL;
- delete iVariantMap;
- iVariantMap = NULL;
- TRACE( "CUntrustedCertQuery::~CUntrustedCertQuery, end" );
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::ShowQueryAndWaitForResponseL()
-// ---------------------------------------------------------------------------
-//
-void CUntrustedCertQuery::ShowQueryAndWaitForResponseL( TResponse& aResponse )
- {
- TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, begin" );
- if( !iDeviceDialog )
- {
- iDeviceDialog = CHbDeviceDialogSymbian::NewL();
- }
- if( !iVariantMap )
- {
- iVariantMap = CHbSymbianVariantMap::NewL();
- }
-
- CHbSymbianVariant *variant = NULL;
- variant = CHbSymbianVariant::NewL( &iCertificate, CHbSymbianVariant::EBinary );
- User::LeaveIfError( iVariantMap->Add( KUntrustedCertEncodedCertificate, variant ) );
- variant = CHbSymbianVariant::NewL( &iValidationError, CHbSymbianVariant::EInt );
- User::LeaveIfError( iVariantMap->Add( KUntrustedCertValidationError, variant ) );
- variant = CHbSymbianVariant::NewL( &iServerName, CHbSymbianVariant::EDes );
- User::LeaveIfError( iVariantMap->Add( KUntrustedCertServerName, variant ) );
- if( !iCanHandlePermanentAccept )
- {
- variant = CHbSymbianVariant::NewL( &iCanHandlePermanentAccept, CHbSymbianVariant::EBool );
- User::LeaveIfError( iVariantMap->Add( KUntrustedCertTrustedSiteStoreFail, variant ) );
- }
-
- User::LeaveIfError( iDeviceDialog->Show( KUntrustedCertificateDialog, *iVariantMap, this ) );
- iStatus = KRequestPending;
- SetActive();
-
- TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, iWait start" );
- iWait->Start();
- TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, iWaitCompletionCode=%d",
- iWaitCompletionCode );
- User::LeaveIfError( iWaitCompletionCode );
- TRACE( "CUntrustedCertQuery::ShowQueryAndWaitForResponseL, iResponse=%d", iResponse );
- aResponse = iResponse;
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CUntrustedCertQuery::DoCancel()
- {
- TRACE( "CUntrustedCertQuery::DoCancel, begin" );
- if( iDeviceDialog )
- {
- TRACE( "CUntrustedCertQuery::DoCancel, cancelling device dialog" );
- iDeviceDialog->Cancel();
- }
-
- // Have to complete the request here, because cancelled device dialog does not
- // call DeviceDialogClosed() that normally completes it. The request needs to
- // be completed since CActive::Cancel() waits until the request is completed.
- TRACE( "CUntrustedCertQuery::DoCancel, completing self with KErrCancel" );
- TRequestStatus* status( &iStatus );
- User::RequestComplete( status, KErrCancel );
-
- // Normally the above request complete would trigger running RunL(). Now RunL()
- // is not run since the active object is already cancelled. Hence, have to stop
- // the waiting here so that iWait->Start() returns.
- iWaitCompletionCode = KErrCancel;
- if( iWait && iWait->IsStarted() )
- {
- TRACE( "CUntrustedCertQuery::DoCancel, stopping iWait" );
- iWait->AsyncStop();
- }
- TRACE( "CUntrustedCertQuery::DoCancel, end" );
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::RunL()
-// ---------------------------------------------------------------------------
-//
-void CUntrustedCertQuery::RunL()
- {
- TRACE( "CUntrustedCertQuery::RunL, iStatus.Int()=%d", iStatus.Int() );
- iWaitCompletionCode = iStatus.Int();
- if( iWait && iWait->IsStarted() )
- {
- TRACE( "CUntrustedCertQuery::RunL, stopping iWait" );
- iWait->AsyncStop();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::DataReceived()
-// ---------------------------------------------------------------------------
-//
-void CUntrustedCertQuery::DataReceived( CHbSymbianVariantMap& aData )
- {
- TRACE( "CUntrustedCertQuery::DataReceived" );
- const CHbSymbianVariant* variant = aData.Get( KUntrustedCertDialogResult );
- if( variant )
- {
- TInt* value = variant->Value<TInt>();
- if( value )
- {
- switch( *value )
- {
- case KUntrustedCertDialogRejected:
- TRACE( "CUntrustedCertQuery::DataReceived, rejected" );
- iResponse = EQueryRejected;
- break;
- case KUntrustedCertDialogAccepted:
- TRACE( "CUntrustedCertQuery::DataReceived, accepted" );
- iResponse = EQueryAccepted;
- break;
- case KUntrustedCertDialogAcceptedPermanently:
- TRACE( "CUntrustedCertQuery::DataReceived, accepted permanently" );
- iResponse = EQueryAcceptedPermanently;
- break;
- default:
- __ASSERT_DEBUG( EFalse, User::Invariant() );
- break;
- }
- }
- else
- {
- __ASSERT_DEBUG( EFalse, User::Invariant() );
- }
- }
- else
- {
- __ASSERT_DEBUG( EFalse, User::Invariant() );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::DeviceDialogClosed()
-// ---------------------------------------------------------------------------
-//
-void CUntrustedCertQuery::DeviceDialogClosed( TInt aCompletionCode )
- {
- TRACE( "CUntrustedCertQuery::DeviceDialogClosed, aCompletionCode=%d", aCompletionCode );
- if( IsActive() )
- {
- TRACE( "CUntrustedCertQuery::DeviceDialogClosed, request complete" );
- TRequestStatus* status( &iStatus );
- User::RequestComplete( status, aCompletionCode );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::CUntrustedCertQuery()
-// ---------------------------------------------------------------------------
-//
-CUntrustedCertQuery::CUntrustedCertQuery(
- TValidationError aValidationError, const TDesC8& aCertificate,
- const TDesC& aServerName, TBool aCanHandlePermanentAccept ) :
- CActive( CActive::EPriorityStandard ), iValidationError( aValidationError ),
- iCertificate( aCertificate ), iServerName( aServerName ),
- iCanHandlePermanentAccept( aCanHandlePermanentAccept ),
- iResponse( EQueryRejected )
- {
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------------------------
-// CUntrustedCertQuery::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CUntrustedCertQuery::ConstructL()
- {
- TRACE( "CUntrustedCertQuery::ConstructL" );
- iWait = new( ELeave ) CActiveSchedulerWait;
- }
-
--- a/wim/WimPlugin/src/WimCertStore.cpp Thu Oct 07 14:07:34 2010 +0300
+++ b/wim/WimPlugin/src/WimCertStore.cpp Thu Oct 14 13:56:11 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -1870,7 +1870,6 @@
iKeyInfos.Close();
delete iUnifiedKeyStore;
iUnifiedKeyStore = NULL;
- iCertsList->Reset();
}
}