--- a/cpsecplugins/devicelockplugin/src/cpdevicelockpluginview.cpp Wed Aug 18 10:40:08 2010 +0300
+++ b/cpsecplugins/devicelockplugin/src/cpdevicelockpluginview.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -380,7 +380,7 @@
{
RDEBUG("mHack", mHack);
//The following If-Else condition should be removed once orbit team fix the issue with datachanged() signal
- /****************************************************************************************************************/
+ /****************************************************************************************************************
if ((mHack % 2) == 0) //need to capture second datachanged() signal , not first one.
{
mHack++;
--- a/gba/gbaserver/inc/dataretriever.h Wed Aug 18 10:40:08 2010 +0300
+++ b/gba/gbaserver/inc/dataretriever.h Thu Sep 02 21:22:45 2010 +0300
@@ -26,7 +26,7 @@
#include <http.h>
#include <es_sock.h>
#include <commdbconnpref.h>
-#include <cmmanagerext.h>
+#include <cmmanager.h>
#include <hash.h>
#include "M3GPPAuthenticationCallback.h"
@@ -147,7 +147,7 @@
RSocketServ iSockServ;
C3GPPBootstrapHttpHandler* iHttpHandler; // we own this
MBootstrapCallBack* iBootstrapCallBack; // don't own this
- RCmManagerExt iCmManagerExt;
+ RCmManager iCmManager;
};
--- a/gba/gbaserver/src/dataretriever.cpp Wed Aug 18 10:40:08 2010 +0300
+++ b/gba/gbaserver/src/dataretriever.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -21,10 +21,9 @@
#include <commdb.h>
#include <es_enum.h>
#include <centralrepository.h>
-#include <cmconnectionmethodext.h>
#include <cmconnectionmethoddef.h>
#include <cmpluginpacketdatadef.h>
-#include <cmdestinationext.h>
+#include <cmdestination.h>
#include <http/thttpevent.h>
#include "dataretriever.h"
#include "GbaCommon.h"
@@ -103,7 +102,7 @@
{
iHttpHandler = C3GPPBootstrapHttpHandler::NewL( this, iBootstrapCallBack );
iInternalState = EReadyForRequest;
- iCmManagerExt.OpenL();
+ iCmManager.OpenL();
}
@@ -120,7 +119,7 @@
iHTTPSession.Close();
iConnection.Close();
iSockServ.Close();
- iCmManagerExt.Close();
+ iCmManager.Close();
if ( iInternalState == EMakeRequestCalled )
{
@@ -356,11 +355,11 @@
RArray<TUint32> destIdArray;
CleanupClosePushL( destIdArray );
CleanupCounter++;
- iCmManagerExt.AllDestinationsL( destIdArray );
+ iCmManager.AllDestinationsL( destIdArray );
for ( TInt i = 0; i< destIdArray.Count(); i++ )
{
- RCmDestinationExt dest = iCmManagerExt.DestinationL( destIdArray[i] );
+ RCmDestination dest = iCmManager.DestinationL( destIdArray[i] );
CleanupClosePushL( dest );
CleanupCounter++;
@@ -409,11 +408,11 @@
RArray<TUint32> destIdArray;
CleanupClosePushL( destIdArray );
CleanupCounter++;
- iCmManagerExt.AllDestinationsL( destIdArray );
+ iCmManager.AllDestinationsL( destIdArray );
for ( TInt i = 0; i< destIdArray.Count(); i++ )
{
- RCmDestinationExt dest = iCmManagerExt.DestinationL( destIdArray[i] );
+ RCmDestination dest = iCmManager.DestinationL( destIdArray[i] );
CleanupClosePushL( dest );
CleanupCounter++;
--- a/gba/sis/gba.pkg Wed Aug 18 10:40:08 2010 +0300
+++ b/gba/sis/gba.pkg Thu Sep 02 21:22:45 2010 +0300
@@ -17,7 +17,7 @@
&EN
; Header
-#{"GBA"},(0x20029F08), 1, 0, 0, TYPE=SA,RU
+#{"GBA"},(0x20029F08), 1, 1, 0, TYPE=SA,RU
; Localised Vendor name
%{"Nokia"}
@@ -27,8 +27,8 @@
"..\data\gba_license.txt"-"", FT, TA
-; Product dependency for Series 60 v5.1
- [0x10283160], 0, 0, 0, {"Series60ProductID"}
+; Product dependency for Symbian^4
+ [0x20032DE7], 0, 0, 0, {"Series60ProductID"}
; Files to install
--- a/gba/sis/gba_stub.pkg Wed Aug 18 10:40:08 2010 +0300
+++ b/gba/sis/gba_stub.pkg Thu Sep 02 21:22:45 2010 +0300
@@ -17,7 +17,7 @@
&EN
; Header
-#{"GBA"}, (0x20029F08), 1, 0, 0, TYPE=SA
+#{"GBA"}, (0x20029F08), 1, 1, 0, TYPE=SA
; Localised Vendor name
%{"Nokia"}
Binary file gba/sis/gba_stub.sis has changed
--- a/pkiutilities/group/bld.inf Wed Aug 18 10:40:08 2010 +0300
+++ b/pkiutilities/group/bld.inf Thu Sep 02 21:22:45 2010 +0300
@@ -18,9 +18,10 @@
#include "../x509certnameparser/group/bld.inf"
#include "../PKCS12/group/bld.inf"
-#include "../CTSecurityDialogs/Group/bld.inf"
#include "../CertSaver/group/bld.inf"
#include "../DeviceToken/Group/bld.inf"
+#include "../securitydialognotifier/group/bld.inf"
+#include "../securitydialognotifiersrv/group/bld.inf"
//Stub SIS
PRJ_EXPORTS
@@ -30,8 +31,6 @@
// export iby files
../rom/x509certnameparser.iby CORE_MW_LAYER_IBY_EXPORT_PATH( x509certnameparser.iby )
../rom/pkcs12.iby CORE_MW_LAYER_IBY_EXPORT_PATH( pkcs12.iby )
-../rom/CTSecurityDialogs.iby CORE_MW_LAYER_IBY_EXPORT_PATH( CTSecurityDialogs.iby )
-../rom/CTSecurityDialogs_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH( CTSecurityDialogs_resources.iby )
../rom/certmanui_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH( certmanui_resources.iby ) // needed by CTSecurityDialogs
../rom/CertSaver.iby CORE_MW_LAYER_IBY_EXPORT_PATH( CertSaver.iby )
../rom/CertSaver_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH( CertSaver_resources.iby )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/data/20031DB3.rss Thu Sep 02 21:22:45 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: Security dialog notifier plug-in resource file.
+*
+*/
+
+
+#include <ecom/registryinfov2.rh>
+#include <uikon.hrh>
+
+RESOURCE REGISTRY_INFO r_registry
+ {
+ resource_format_version = RESOURCE_FORMAT_VERSION_2;
+ dll_uid = 0x20031DB3;
+ interfaces =
+ {
+ INTERFACE_INFO
+ {
+ interface_uid = KUikonUidPluginInterfaceNotifiers;
+ implementations =
+ {
+ IMPLEMENTATION_INFO
+ {
+ implementation_uid = 0x101F883C;
+ version_no = 1;
+ display_name = "SecurityDialogs Plugin";
+ default_data = "SecurityDialogs";
+ opaque_data = "0";
+ rom_only = 1;
+ }
+ };
+ }
+ };
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/group/bld.inf Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 dialog notifier
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../rom/securitydialognotifier.iby CORE_MW_LAYER_IBY_EXPORT_PATH( securitydialognotifier.iby )
+
+PRJ_MMPFILES
+securitydialognotifier.mmp
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/group/securitydialognotifier.mmp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* 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 dialog notifier
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET securitydialognotifier.dll
+CAPABILITY CAP_ECOM_PLUGIN
+TARGETTYPE PLUGIN
+UID 0x10009D8D 0x20031DB3
+VENDORID VID_DEFAULT
+
+SOURCEPATH ../data
+START RESOURCE 20031DB3.rss
+TARGET securitydialognotifier.rsc
+END
+
+MW_LAYER_SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore /epoc32/include/mw/hb/hbwidgets
+USERINCLUDE ../inc
+
+SOURCEPATH ../src
+SOURCE securitydialogmain.cpp
+SOURCE securitydialognotifier.cpp
+SOURCE securitydialognotifiersrv.cpp
+SOURCE securitydialogs.cpp
+
+LIBRARY euser.lib
+LIBRARY eiksrv.lib
+LIBRARY ctframework.lib
+
+SMPSAFE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/inc/securitydialognotifier.h Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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 dialog notifier
+*
+*/
+
+#ifndef SECURITYDIALOGNOTIFIER_H
+#define SECURITYDIALOGNOTIFIER_H
+
+#include <eiknotapi.h> // MEikSrvNotifierManager
+
+class CSecurityDialogs;
+
+
+/**
+ * Security Dialog Notifier
+ * CSecurityDialogNotifier is a RNotifier that implements security dialogs
+ * defined in secdlgimpldefs.h (see TSecurityDialogOperation operations).
+ */
+NONSHARABLE_CLASS( CSecurityDialogNotifier ) : public CBase, public MEikSrvNotifierBase2
+ {
+ public: // constructors and destructor
+ static CSecurityDialogNotifier* NewL();
+ ~CSecurityDialogNotifier();
+
+ private: // from MEikSrvNotifierBase2
+ void Release();
+ TNotifierInfo RegisterL();
+ TNotifierInfo Info() const;
+ void StartL( const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage );
+ TPtrC8 StartL( const TDesC8& aBuffer );
+ void Cancel();
+ TPtrC8 UpdateL( const TDesC8& aBuffer );
+
+ private: // new functions
+ CSecurityDialogNotifier();
+ void ConstructL();
+ void DoStartL( const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage );
+
+ private: // data
+ CSecurityDialogs* iSecurityDialogs;
+ TBool iIsSecurityDialogsDeleted;
+ };
+
+#endif // SECURITYDIALOGNOTIFIER_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/inc/securitydialognotifiersrv.h Thu Sep 02 21:22:45 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 dialog notifier server, client-side API.
+*
+*/
+
+#ifndef SECURITYDIALOGNOTIFIERSRV_H
+#define SECURITYDIALOGNOTIFIERSRV_H
+
+#include <e32std.h> // RSessionBase
+#include <secdlgimpldefs.h> // TSecurityDialogOperation
+
+
+/**
+ * Security Dialog Notifier Server API
+ * Security dialogs provide TSecurityDialogOperation functionality defined in secdlgimpldefs.h.
+ * Implementation consist of two components: a notifier DLL (CSecurityDialogNotifier, ECom DLL)
+ * and a server executable (CSecurityDialogNotifierSrv). CSecurityDialogNotifier runs in UIKON
+ * server that has limited capabilities. It passes the requests to the server component
+ * (CSecurityDialogNotifierSrv) that provides the actual functionality.
+ */
+NONSHARABLE_CLASS( RSecurityDialogNotifierSrv ) : public RSessionBase
+ {
+ public: // constructors and destructor
+ RSecurityDialogNotifierSrv();
+ ~RSecurityDialogNotifierSrv();
+
+ public: // new functions
+ TInt Connect();
+ TVersion Version() const;
+ void SecurityDialogOperation( TSecurityDialogOperation aOperation,
+ const TDesC8& aInputBuffer, TDes8& aOutputBuffer,
+ TRequestStatus& aStatus );
+ void CancelOperation();
+
+ private: // new functions
+ TInt StartServer();
+
+ private: // data
+ TIpcArgs iArgs;
+ };
+
+#endif // SECURITYDIALOGNOTIFIERSRV_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/inc/securitydialogs.h Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* 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: CSecurityDialogs active object
+*
+*/
+
+#ifndef SECURITYDIALOGS_H
+#define SECURITYDIALOGS_H
+
+#include <e32base.h> // CActive
+#include <secdlgimpldefs.h> // TSecurityDialogOperation
+#include "securitydialognotifiersrv.h" // RSecurityDialogNotifierSrv
+
+
+/**
+ * Security Dialogs
+ * CSecurityDialogs class provides implementation for the security dialog
+ * operations (TSecurityDialogOperation) defined in secdlgimpldefs.h.
+ * When RNotifier class is used to open security dialogs, CSecurityDialogNotifier
+ * class calls CSecurityDialogs to show the requested dialogs. CSecurityDialogs
+ * uses RSecurityDialogNotifierSrv server to do the actual work.
+ */
+NONSHARABLE_CLASS( CSecurityDialogs ) : public CActive
+ {
+ public: // constructors and destructor
+ static CSecurityDialogs* NewL( TBool& aIsDeleted );
+ ~CSecurityDialogs();
+
+ public: // new functions
+ /**
+ * Starts handling the requested operation.
+ * @param aBuffer - Data passed from client RNotifier::StartNotifierAndGetResponse() call
+ * @param aReplySlot - Identifies which message argument to use for the reply
+ * @param aMessage - Encapsulates the client request
+ */
+ void StartLD( const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage );
+
+ protected: // from CActive
+ void RunL();
+ void DoCancel();
+ TInt RunError( TInt aError );
+
+ private: // new functions
+ CSecurityDialogs( TBool& aIsDeleted );
+
+ private: // data
+ TBool& iIsDeleted;
+
+ TInt iRetry;
+ TInt iReplySlot;
+ RMessagePtr2 iMessagePtr;
+ TSecurityDialogOperation iOperation;
+
+ RSecurityDialogNotifierSrv iServer;
+ HBufC8* iInputBuffer;
+ TAny* iOutputBuffer;
+ TPtr8 iOutputPtr;
+ };
+
+#endif // SECURITYDIALOGS_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/inc/securitydialogstrace.h Thu Sep 02 21:22:45 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: TRACE macros for security dialogs
+*
+*/
+
+#ifndef SECURITYDIALOGSTRACE_H
+#define SECURITYDIALOGSTRACE_H
+
+#include <e32debug.h> // RDebug
+
+
+// TODO: replace with OST tracing
+#ifdef _DEBUG
+#define TRACE( a, ARGS... ) DebugPrint( _L( a ), ##ARGS )
+#else
+#define TRACE( a, ARGS... )
+#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 // SECURITYDIALOGSTRACE_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/rom/securitydialognotifier.iby Thu Sep 02 21:22:45 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: Security dialog notifier
+*
+*/
+
+#ifndef SECURITYDIALOGNOTIFIER_IBY
+#define SECURITYDIALOGNOTIFIER_IBY
+#include <bldvariant.hrh>
+
+ECOM_PLUGIN( securitydialognotifier.dll, securitydialognotifier.rsc )
+
+#endif // SECURITYDIALOGNOTIFIER_IBY
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/src/securitydialogmain.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* 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 Dialog notifier entry point
+*
+*/
+
+#include "securitydialognotifier.h" // CSecurityDialogNotifier
+#include <ecom/implementationproxy.h> // TImplementationProxy definition
+
+const TInt KNumberOfImplementations = 1;
+
+
+// ----------------------------------------------------------------------------
+// CreateNotifiersL()
+// ----------------------------------------------------------------------------
+//
+void CreateNotifiersL( CArrayPtr<MEikSrvNotifierBase2>& aNotifierArray )
+ {
+ CSecurityDialogNotifier* notifier = CSecurityDialogNotifier::NewL();
+ CleanupStack::PushL( notifier );
+ aNotifierArray.AppendL( notifier );
+ CleanupStack::Pop( notifier );
+ }
+
+// ----------------------------------------------------------------------------
+// NotifierArray()
+// ----------------------------------------------------------------------------
+//
+CArrayPtr<MEikSrvNotifierBase2>* NotifierArray()
+ {
+ CArrayPtr<MEikSrvNotifierBase2>* notifierArray =
+ new CArrayPtrFlat<MEikSrvNotifierBase2>( KNumberOfImplementations );
+ if( notifierArray )
+ {
+ TRAPD( err, CreateNotifiersL( *notifierArray ) );
+ if( err )
+ {
+ TInt count = notifierArray->Count();
+ while( count-- )
+ {
+ (*notifierArray)[ count ]->Release();
+ }
+ delete notifierArray;
+ notifierArray = NULL;
+ }
+ }
+ return notifierArray;
+ }
+
+// ----------------------------------------------------------------------------
+// Provides a key value pair table, that ECOM uses to identify
+// the correct construction function for the requested interface.
+// ----------------------------------------------------------------------------
+//
+const TImplementationProxy ImplementationTable[] =
+ {
+ // UID is the implementation uid defined in .rss file
+ IMPLEMENTATION_PROXY_ENTRY( 0x101F883C, NotifierArray )
+ };
+
+// ----------------------------------------------------------------------------
+// Main entry function used to return an instance of the proxy table.
+// ----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+ {
+ aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
+ return ImplementationTable;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/src/securitydialognotifier.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* 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 dialog notifier
+*
+*/
+
+#include "securitydialognotifier.h" // CSecurityDialogNotifier
+#include "securitydialogs.h" // CSecurityDialogs
+#include "securitydialogstrace.h" // TRACE macro
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::~CSecurityDialogNotifier()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifier::~CSecurityDialogNotifier()
+ {
+ TRACE( "CSecurityDialogNotifier::~CSecurityDialogNotifier" );
+ Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::NewL()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifier* CSecurityDialogNotifier::NewL()
+ {
+ CSecurityDialogNotifier* self = new( ELeave ) CSecurityDialogNotifier;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::Release()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifier::Release()
+ {
+ TRACE( "CSecurityDialogNotifier::Release" );
+ delete this;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::RegisterL()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifier::TNotifierInfo CSecurityDialogNotifier::RegisterL()
+ {
+ return Info();
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::Info()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifier::TNotifierInfo CSecurityDialogNotifier::Info() const
+ {
+ TNotifierInfo info;
+ info.iUid = KUidSecurityDialogNotifier;
+ info.iChannel = KUidSecurityDialogNotifier;
+ info.iPriority = ENotifierPriorityAbsolute;
+ return info;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::StartL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifier::StartL( const TDesC8& aBuffer, TInt aReplySlot,
+ const RMessagePtr2& aMessage )
+ {
+ TRACE( "CSecurityDialogNotifier::StartL, begin" );
+
+ TRAPD( err, DoStartL( aBuffer, aReplySlot, aMessage ) );
+ TRACE( "CSecurityDialogNotifier::StartL, DoStartL err=%d", err );
+ if( err )
+ {
+ if( iSecurityDialogs && !iIsSecurityDialogsDeleted )
+ {
+ TRACE( "CSecurityDialogNotifier::StartL, deleting iSecurityDialogs" );
+ delete iSecurityDialogs;
+ iSecurityDialogs = NULL;
+ }
+ if( !aMessage.IsNull() )
+ {
+ TRACE( "CSecurityDialogNotifier::StartL, completing message" );
+ aMessage.Complete( err );
+ }
+ }
+
+ TRACE( "CSecurityDialogNotifier::StartL, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::StartL()
+// ---------------------------------------------------------------------------
+//
+TPtrC8 CSecurityDialogNotifier::StartL( const TDesC8& /*aBuffer*/ )
+ {
+ return KNullDesC8();
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::Cancel()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifier::Cancel()
+ {
+ TRACE( "CSecurityDialogNotifier::Cancel" );
+ if( iSecurityDialogs && !iIsSecurityDialogsDeleted )
+ {
+ TRACE( "CSecurityDialogNotifier::Cancel, deleting iSecurityDialogs" );
+ delete iSecurityDialogs;
+ iSecurityDialogs = NULL;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::UpdateL()
+// ---------------------------------------------------------------------------
+//
+TPtrC8 CSecurityDialogNotifier::UpdateL( const TDesC8& /*aBuffer*/ )
+ {
+ return KNullDesC8();
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::CSecurityDialogNotifier()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifier::CSecurityDialogNotifier()
+ {
+ TRACE( "CSecurityDialogNotifier::CSecurityDialogNotifier" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifier::ConstructL()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifier::DoStartL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifier::DoStartL( const TDesC8& aBuffer, TInt aReplySlot,
+ const RMessagePtr2& aMessage )
+ {
+ iSecurityDialogs = CSecurityDialogs::NewL( iIsSecurityDialogsDeleted );
+ iSecurityDialogs->StartLD( aBuffer, aReplySlot, aMessage );
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/src/securitydialognotifiersrv.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,148 @@
+/*
+* 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 dialog notifier server, client-side API.
+*
+*/
+
+#include "securitydialognotifiersrv.h" // RSecurityDialogNotifierSrv
+#include "../../securitydialognotifiersrv/inc/securitydialognotifierservername.h"
+#include "securitydialogstrace.h" // TRACE macro
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// RSecurityDialogNotifierSrv::RSecurityDialogNotifierSrv()
+// ---------------------------------------------------------------------------
+//
+RSecurityDialogNotifierSrv::RSecurityDialogNotifierSrv()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// RSecurityDialogNotifierSrv::~RSecurityDialogNotifierSrv()
+// ---------------------------------------------------------------------------
+//
+RSecurityDialogNotifierSrv::~RSecurityDialogNotifierSrv()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// RSecurityDialogNotifierSrv::Connect()
+// ---------------------------------------------------------------------------
+//
+TInt RSecurityDialogNotifierSrv::Connect()
+ {
+ TRACE( "RSecurityDialogNotifierSrv::Connect" );
+ const TInt KMaxCreateSessionAttepmts = 2;
+ TInt retry = KMaxCreateSessionAttepmts;
+ FOREVER
+ {
+ TInt err = CreateSession( KSecurityDialogNotifierServerName, Version() );
+ TRACE( "RSecurityDialogNotifierSrv::Connect, create session err=%d", err );
+ if( err != KErrNotFound && err != KErrServerTerminated )
+ {
+ return err;
+ }
+
+ if( --retry == 0 )
+ {
+ return err;
+ }
+
+ err = StartServer();
+ if( err != KErrNone && err != KErrAlreadyExists )
+ {
+ return err;
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// RSecurityDialogNotifierSrv::Version()
+// ---------------------------------------------------------------------------
+//
+TVersion RSecurityDialogNotifierSrv::Version() const
+ {
+ return TVersion( KSecurityDialogNotifierServerMajorVersionNumber,
+ KSecurityDialogNotifierServerMinorVersionNumber,
+ KSecurityDialogNotifierServerBuildVersionNumber );
+ }
+
+// ---------------------------------------------------------------------------
+// RSecurityDialogNotifierSrv::SecurityDialogOperationL()
+// ---------------------------------------------------------------------------
+//
+void RSecurityDialogNotifierSrv::SecurityDialogOperation(
+ TSecurityDialogOperation aOperation,
+ const TDesC8& aInputBuffer, TDes8& aOutputBuffer,
+ TRequestStatus& aStatus )
+ {
+ TRACE( "RSecurityDialogNotifierSrv::SecurityDialogOperation" );
+ iArgs = TIpcArgs( &aInputBuffer, &aOutputBuffer );
+ SendReceive( aOperation, iArgs, aStatus );
+ }
+
+// ---------------------------------------------------------------------------
+// RSecurityDialogNotifierSrv::CancelOperation()
+// ---------------------------------------------------------------------------
+//
+void RSecurityDialogNotifierSrv::CancelOperation()
+ {
+ TRACE( "RSecurityDialogNotifierSrv::CancelOperation" );
+ SendReceive( KSecurityDialogCancelOperation );
+ }
+
+// ---------------------------------------------------------------------------
+// RSecurityDialogNotifierSrv::StartServer()
+// ---------------------------------------------------------------------------
+//
+TInt RSecurityDialogNotifierSrv::StartServer()
+{
+ TRACE( "RSecurityDialogNotifierSrv::StartServer, begin" );
+ RProcess server;
+ TInt err = server.Create( KSecurityDialogNotifierServerName, KNullDesC );
+ if( err )
+ {
+ TRACE( "RSecurityDialogNotifierSrv::StartServer, create failed, err=%d", err );
+ return err;
+ }
+
+ TRequestStatus status;
+ server.Rendezvous( status );
+ if( status == KRequestPending )
+ {
+ server.Resume();
+ }
+ else
+ {
+ server.Kill( KErrNone );
+ }
+
+ TRACE( "RSecurityDialogNotifierSrv::StartServer, waiting rendezvous" );
+ User::WaitForRequest( status );
+ if( server.ExitType() == EExitPanic )
+ {
+ err = KErrGeneral;
+ }
+ else
+ {
+ err = status.Int();
+ }
+ server.Close();
+
+ TRACE( "RSecurityDialogNotifierSrv::StartServer, end err=%d", err );
+ return err;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/src/securitydialogs.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,187 @@
+/*
+* 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: CSecurityDialogs active object
+*
+*/
+
+#include "securitydialogs.h" // CSecurityDialogs
+#include "securitydialogstrace.h" // TRACE macro
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogs::NewL()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogs* CSecurityDialogs::NewL( TBool& aIsDeleted )
+ {
+ return new( ELeave ) CSecurityDialogs( aIsDeleted );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogs::~CSecurityDialogs()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogs::~CSecurityDialogs()
+ {
+ TRACE( "CSecurityDialogs::~CSecurityDialogs, begin" );
+ Cancel();
+ iServer.Close();
+ delete iInputBuffer;
+ iInputBuffer = NULL;
+ delete iOutputBuffer;
+ iOutputBuffer = NULL;
+ iIsDeleted = ETrue;
+ TRACE( "CSecurityDialogs::~CSecurityDialogs, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogs::StartLD()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogs::StartLD( const TDesC8& aBuffer, TInt aReplySlot,
+ const RMessagePtr2& aMessage )
+ {
+ TRACE( "CSecurityDialogs::StartLD, begin" );
+ User::LeaveIfError( iServer.Connect() );
+
+ const TInt* ptr = reinterpret_cast< const TInt* >( aBuffer.Ptr() );
+ iOperation = static_cast< TSecurityDialogOperation >( *ptr & KSecurityDialogOperationMask );
+ iReplySlot = aReplySlot;
+
+ TRACE( "CSecurityDialogs::StartLD, message 0x%08x", iMessagePtr.Handle() );
+ iMessagePtr = aMessage;
+
+ TRACE( "CSecurityDialogs::StartLD, iOperation=%d", iOperation );
+ __ASSERT_DEBUG( iOutputBuffer == NULL, User::Invariant() );
+ TInt outputBufLen = 0;
+ switch( iOperation )
+ {
+ case ESecureConnection:
+ case ESignText:
+ iOutputBuffer = new( ELeave ) TCTTokenObjectHandleBuf;
+ outputBufLen = sizeof( TCTTokenObjectHandleBuf );
+ break;
+ case EEnterPIN:
+ case EEnablePIN:
+ case EDisablePIN:
+ iOutputBuffer = new( ELeave ) TPINValueBuf;
+ outputBufLen = sizeof( TPINValueBuf );
+ break;
+ case EChangePIN:
+ case EUnblockPIN:
+ iOutputBuffer = new( ELeave ) TTwoPINOutputBuf;
+ outputBufLen = sizeof( TTwoPINOutputBuf );
+ break;
+ case EPINBlocked:
+ case ETotalBlocked:
+ break;
+ case EUnblockPINInClear:
+ iOutputBuffer = new( ELeave ) TUnblockPINInClearOutputBuf;
+ outputBufLen = sizeof( TUnblockPINInClearOutputBuf );
+ break;
+ case EServerAuthenticationFailure:
+ iOutputBuffer = new( ELeave ) TServerAuthenticationFailureOutputBuf;
+ outputBufLen = sizeof( TServerAuthenticationFailureOutputBuf );
+ break;
+ default:
+ User::Leave( KErrNotSupported );
+ break;
+ }
+
+ __ASSERT_DEBUG( iInputBuffer == NULL, User::Invariant() );
+ iInputBuffer = aBuffer.AllocL();
+
+ if( iOutputBuffer )
+ {
+ iOutputPtr.Set( static_cast< TUint8* >( iOutputBuffer ), outputBufLen, outputBufLen );
+ iServer.SecurityDialogOperation( iOperation, *iInputBuffer, iOutputPtr, iStatus );
+ }
+ else
+ {
+ User::Leave( KErrNotSupported );
+ }
+ SetActive();
+ TRACE( "CSecurityDialogs::StartLD, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogs::RunL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogs::RunL()
+ {
+ TRACE( "CSecurityDialogs::RunL, iStatus.Int()=%d", iStatus.Int() );
+ TInt error = iStatus.Int();
+ User::LeaveIfError( error );
+ __ASSERT_DEBUG( iOutputPtr.Ptr(), User::Invariant() );
+ iMessagePtr.WriteL( iReplySlot, iOutputPtr );
+
+ TRACE( "CSecurityDialogs::RunL, completing message 0x%08x", iMessagePtr.Handle() );
+ iMessagePtr.Complete( error );
+
+ TRACE( "CSecurityDialogs::RunL, deleting this" );
+ delete this;
+ TRACE( "CSecurityDialogs::RunL, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogs::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogs::DoCancel()
+ {
+ TRACE( "CSecurityDialogs::DoCancel, begin" );
+ iServer.CancelOperation();
+ if( !iMessagePtr.IsNull() )
+ {
+ TRACE( "CSecurityDialogs::DoCancel, completing message 0x%08x", iMessagePtr.Handle() );
+ iMessagePtr.Complete( KErrCancel );
+ }
+ TRACE( "CSecurityDialogs::DoCancel(), end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogs::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CSecurityDialogs::RunError( TInt aError )
+ {
+ TRACE( "CSecurityDialogs::RunError, aError=%d", aError );
+ if( !iMessagePtr.IsNull() )
+ {
+ TRACE( "CSecurityDialogs::RunError, completing message 0x%08x", iMessagePtr.Handle() );
+ iMessagePtr.Complete( aError );
+ }
+
+ TRACE( "CSecurityDialogs::RunError, deleting this" );
+ delete this;
+
+ TRACE( "CSecurityDialogs::RunError, end" );
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogs::CSecurityDialogs()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogs::CSecurityDialogs( TBool& aIsDeleted ) : CActive( CActive::EPriorityLow ),
+ iIsDeleted( aIsDeleted ), iOutputPtr( NULL, 0, 0 )
+ {
+ TRACE( "CSecurityDialogs::CSecurityDialogs" );
+ CActiveScheduler::Add( this );
+ iIsDeleted = EFalse;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,218 @@
+/*
+* 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: Test application for untrusted certificate dialog.
+*
+*/
+
+#include "srvauthfaildlglauncher.h"
+#include <HbMainWindow>
+#include <HbView>
+#include <HbLabel>
+#include <HbComboBox>
+#include <HbTextEdit>
+#include <HbCheckBox>
+#include <HbPushButton>
+#include <HbDeviceDialog>
+#include <HbMessageBox>
+#include <QDir>
+#include <QBuffer>
+#include <QGraphicsLinearLayout>
+
+
+#ifdef Q_OS_SYMBIAN
+#include <securitydefs.h> // TValidationError
+#include <secdlgimpldefs.h> // TServerAuthenticationFailureInput, KUidSecurityDialogNotifier
+
+HBufC8* GetInputBufferL( const QString& server, const QByteArray& certificate, int reason )
+ {
+ const TPtrC16 serverNameUnicode(reinterpret_cast<const TText*>(server.constData()),
+ server.length());
+ const TPtrC8 encodedCert(reinterpret_cast<const TText8*>(certificate.constData()),
+ certificate.length());
+
+ const TInt KServerNameMaxLength = 512;
+ TBuf8<KServerNameMaxLength> serverName;
+ serverName.Copy(serverNameUnicode);
+
+ TServerAuthenticationFailureInput serverAuthenticationInput;
+ serverAuthenticationInput.iOperation = EServerAuthenticationFailure;
+ serverAuthenticationInput.iFailureReason = static_cast<TValidationError>(reason);
+ serverAuthenticationInput.iServerNameLength = serverName.Length();
+ serverAuthenticationInput.iEncodedCertLength = encodedCert.Length();
+
+ TServerAuthenticationFailureInputBuf inputBuf( serverAuthenticationInput );
+
+ TInt bufferSize = sizeof( inputBuf ) + serverName.Length() + encodedCert.Length();
+ HBufC8* packedBuffer = HBufC8::NewL( bufferSize );
+ TPtr8 packedBufferPtr( packedBuffer->Des() );
+
+ packedBufferPtr.Append( inputBuf );
+ packedBufferPtr.Append( serverName );
+ packedBufferPtr.Append( encodedCert );
+
+ return packedBuffer;
+ }
+
+bool ShowDialogL( const QString& server, const QByteArray& certificate, int reason, bool cancel )
+ {
+ RNotifier notifier;
+ User::LeaveIfError( notifier.Connect() );
+ CleanupClosePushL( notifier );
+
+ HBufC8* buffer = GetInputBufferL( server, certificate, reason );
+ CleanupStack::PushL( buffer );
+
+ TRequestStatus status;
+ TPckgBuf<TServerAuthenticationFailureDialogResult> resultPckg;
+ notifier.StartNotifierAndGetResponse( status, KUidSecurityDialogNotifier,
+ *buffer, resultPckg );
+ if( cancel )
+ {
+ const TInt KTenSecDelay = 10000000;
+ User::After( KTenSecDelay );
+ notifier.CancelNotifier( KUidSecurityDialogNotifier );
+ }
+ User::WaitForRequest( status );
+ User::LeaveIfError( status.Int() );
+
+ CleanupStack::PopAndDestroy( buffer );
+ CleanupStack::PopAndDestroy( ¬ifier );
+ return( resultPckg() == EContinue );
+ }
+
+#endif // Q_OS_SYMBIAN
+
+
+const QString KTestCertDir = "c:/data/testCerts";
+
+SrvAuthFailDlgLauncher::SrvAuthFailDlgLauncher(int& argc, char* argv[])
+ : HbApplication(argc, argv), mMainWindow(0), mMainView(0)
+{
+ mMainWindow = new HbMainWindow();
+ mMainView = new HbView();
+ mMainView->setTitle(tr("SrvAuthFailDlgLauncher"));
+
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ layout->addItem(new HbLabel(tr("Server host name:")));
+ mHostName = new HbTextEdit(tr("some.host.com"));
+ layout->addItem(mHostName);
+ layout->addStretch();
+
+ layout->addItem(new HbLabel(tr("Certificate file:")));
+ mFilesList = new HbComboBox;
+ mFilesList->setEditable(false);
+ QDir dir(KTestCertDir);
+ if (dir.exists()) {
+ QFileInfoList list = dir.entryInfoList(QDir::Files);
+ QListIterator<QFileInfo> iter(list);
+ while (iter.hasNext()) {
+ const QFileInfo &info(iter.next());
+ mFilesList->addItem(info.fileName());
+ }
+ }
+ layout->addItem(mFilesList);
+ layout->addStretch();
+
+ layout->addItem(new HbLabel(tr("Validation result:")));
+ mValidationResult = new HbComboBox;
+ QStringList validationResults;
+ validationResults
+ << "EValidatedOK"
+ << "EChainHasNoRoot"
+ << "ESignatureInvalid"
+ << "EDateOutOfRange"
+ << "ENameIsExcluded"
+ << "ENameNotPermitted"
+ << "ENotCACert"
+ << "ECertificateRevoked"
+ << "EUnrecognizedCriticalExtension"
+ << "ENoBasicConstraintInCACert"
+ << "ENoAcceptablePolicy"
+ << "EPathTooLong"
+ << "ENegativePathLengthSpecified"
+ << "ENamesDontChain"
+ << "ERequiredPolicyNotFound"
+ << "EBadKeyUsage"
+ << "ERootCertNotSelfSigned"
+ << "ECriticalExtendedKeyUsage"
+ << "ECriticalCertPoliciesWithQualifiers"
+ << "ECriticalPolicyMapping"
+ << "ECriticalDeviceId"
+ << "ECriticalSid"
+ << "ECriticalVid"
+ << "ECriticalCapabilities";
+ mValidationResult->addItems(validationResults);
+ mValidationResult->setCurrentIndex(1); // EChainHasNoRoot
+ layout->addItem(mValidationResult);
+ layout->addStretch();
+
+ mCancelShortly = new HbCheckBox("Cancel after 10 seconds");
+ layout->addItem(mCancelShortly);
+
+ HbPushButton *button = 0;
+ button = new HbPushButton("Launch dialog");
+ connect(button, SIGNAL(clicked()), this, SLOT(activateDialog()));
+ layout->addItem(button);
+
+ button = new HbPushButton("Exit");
+ connect(button, SIGNAL(clicked()), qApp, SLOT(quit()));
+ layout->addItem(button);
+
+ mMainView->setLayout(layout);
+ mMainWindow->addView(mMainView);
+ mMainWindow->show();
+}
+
+SrvAuthFailDlgLauncher::~SrvAuthFailDlgLauncher()
+{
+ delete mMainView;
+ delete mMainWindow;
+}
+
+void SrvAuthFailDlgLauncher::activateDialog()
+{
+ QString server = mHostName->toPlainText();
+
+ QString fileName = mFilesList->currentText();
+ QFile file;
+ QDir::setCurrent(KTestCertDir);
+ file.setFileName(fileName);
+ file.open(QIODevice::ReadOnly);
+ QByteArray fileContent = file.readAll();
+ file.close();
+
+ int reason = mValidationResult->currentIndex();
+ bool cancel = mCancelShortly->isChecked();
+
+ int error = 0;
+ bool accepted = false;
+#ifdef Q_OS_SYMBIAN
+ TRAP( error, accepted = ShowDialogL(server, fileContent, reason, cancel) );
+#endif // Q_OS_SYMBIAN
+ if (!error) {
+ if (accepted) {
+ HbMessageBox::information(QString("Accepted"));
+ } else {
+ HbMessageBox::information(QString("Declined"));
+ }
+ } else {
+ if (error == KErrCancel) {
+ HbMessageBox::information(QString("Cancelled"));
+ } else {
+ HbMessageBox::information(QString("Failed, error %1").arg(error));
+ }
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.h Thu Sep 02 21:22:45 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 "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: Test application for untrusted certificate dialog.
+*
+*/
+
+#ifndef SRVAUTHFAILDLGLAUNCHER_H
+#define SRVAUTHFAILDLGLAUNCHER_H
+
+#include <hbapplication.h>
+
+class HbMainWindow;
+class HbView;
+class HbComboBox;
+class HbTextEdit;
+class HbCheckBox;
+
+
+class SrvAuthFailDlgLauncher : public HbApplication
+{
+ Q_OBJECT
+
+public: // constructor and destructor
+ SrvAuthFailDlgLauncher(int& argc, char* argv[]);
+ ~SrvAuthFailDlgLauncher();
+
+private slots: // new functions
+ void activateDialog();
+
+private: // data
+ HbMainWindow *mMainWindow;
+ HbView *mMainView;
+ HbComboBox *mFilesList;
+ HbTextEdit *mHostName;
+ HbComboBox *mValidationResult;
+ HbCheckBox *mCancelShortly;
+};
+
+#endif // SRVAUTHFAILDLGLAUNCHER_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.iby Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +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: Test application for untrusted certificate dialog.
+*
+*/
+
+
+#ifndef __SRVAUTHFAILDLGLAUNCHER_IBY__
+#define __SRVAUTHFAILDLGLAUNCHER_IBY__
+
+file=ABI_DIR/BUILD_DIR/srvauthfaildlglauncher.exe SHARED_LIB_DIR/srvauthfaildlglauncher.exe
+HB_UPGRADABLE_APP_REG_RSC( srvauthfaildlglauncher )
+S60_APP_RESOURCE( srvauthfaildlglauncher )
+
+#endif // __SRVAUTHFAILDLGLAUNCHER_IBY__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.pkg Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,43 @@
+;
+; 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: Test application for untrusted certificate dialog.
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"srvauthfaildlglauncher"},(0xE9bbd80d),1,0,0
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Manual PKG pre-rules from PRO files
+; Default dependency to Qt libraries
+(0x2001E61C), 4, 6, 3, {"Qt"}
+
+; Default HW/platform dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+
+; Executable and default resource files
+"/epoc32/release/armv5/urel/srvauthfaildlglauncher.exe" - "!:\sys\bin\srvauthfaildlglauncher.exe"
+"/epoc32/data/z/resource/apps/srvauthfaildlglauncher.rsc" - "!:\resource\apps\srvauthfaildlglauncher.rsc"
+"/epoc32/data/z/private/10003a3f/import/apps/srvauthfaildlglauncher_reg.rsc" - "!:\private\10003a3f\import\apps\srvauthfaildlglauncher_reg.rsc"
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.pro Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,43 @@
+#
+# 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: Test application for untrusted certificate dialog.
+#
+
+TEMPLATE = app
+TARGET = srvauthfaildlglauncher
+CONFIG += hb
+DEPENDPATH += .
+INCLUDEPATH += .
+
+HEADERS += srvauthfaildlglauncher.h
+SOURCES += srvauthfaildlglaunchermain.cpp srvauthfaildlglauncher.cpp
+
+symbian {
+ TARGET.CAPABILITY = CAP_APPLICATION
+}
+
+BLD_INF_RULES.prj_exports += \
+ "$${LITERAL_HASH}include <platform_paths.hrh>" \
+ "srvauthfaildlglauncher.iby CORE_APP_LAYER_IBY_EXPORT_PATH(srvauthfaildlglauncher.iby)" \
+ "testCerts/RootCert.cer /epoc32/winscw/c/data/testCerts/RootCert.cer" \
+ "testCerts/IntermediateCert.cer /epoc32/winscw/c/data/testCerts/IntermediateCert.cer" \
+ "testCerts/ServerCert1.cer /epoc32/winscw/c/data/testCerts/ServerCert1.cer" \
+ "testCerts/ServerCert2_noCN.cer /epoc32/winscw/c/data/testCerts/ServerCert2_noCN.cer" \
+ "testCerts/ServerCert3_exp.cer /epoc32/winscw/c/data/testCerts/ServerCert3_exp.cer" \
+ "testCerts/ServerCert4_exp2.cer /epoc32/winscw/c/data/testCerts/ServerCert4_exp2.cer" \
+ "testCerts/ServerCert5_alg.cer /epoc32/winscw/c/data/testCerts/ServerCert5_alg.cer" \
+ "testCerts/ServerCert6_key.cer /epoc32/winscw/c/data/testCerts/ServerCert6_key.cer" \
+ "testCerts/SevverCert7_ocsp.cer /epoc32/winscw/c/data/testCerts/ServerCert7_ocsp.cer" \
+ "testCerts/ServerCert8_aia.cer /epoc32/winscw/c/data/testCerts/ServerCert8_aia.cer" \
+ "testCerts/ServerCert9_san.cer /epoc32/winscw/c/data/testCerts/ServerCert9_san.cer"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglaunchermain.cpp Thu Sep 02 21:22:45 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: Test application for untrusted certificate dialog.
+*
+*/
+
+#include "srvauthfaildlglauncher.h"
+
+int main(int argc, char *argv[])
+{
+ SrvAuthFailDlgLauncher app(argc, argv);
+ return app.exec();
+}
+
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/IntermediateCert.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/RootCert.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert1.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert2_noCN.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert3_exp.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert4_exp2.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert5_alg.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert6_key.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert8_aia.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert9_san.cer has changed
Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/SevverCert7_ocsp.cer has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/group/bld.inf Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 dialog notifier server
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../rom/securitydialognotifiersrv.iby CORE_MW_LAYER_IBY_EXPORT_PATH( securitydialognotifiersrv.iby )
+
+PRJ_MMPFILES
+securitydialognotifiersrv.mmp
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/group/securitydialognotifiersrv.mmp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* 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 dialog notifier server
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET securitydialognotifiersrv.exe
+CAPABILITY CAP_SERVER
+TARGETTYPE EXE
+UID 0x0 0x20031DCE
+VENDORID VID_DEFAULT
+
+MW_LAYER_SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore /epoc32/include/mw/hb/hbwidgets
+USERINCLUDE ../inc
+
+SOURCEPATH ../src
+SOURCE securitydialognotifierservermain.cpp
+SOURCE securitydialognotifierserver.cpp
+SOURCE securitydialognotifiersession.cpp
+SOURCE securitydialogoperation.cpp
+SOURCE securitydialogoperserverauthfail.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 // CHbDeviceDialog
+
+SMPSAFE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialognotifierserver.h Thu Sep 02 21:22:45 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 "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 dialog notifier server
+*
+*/
+
+#ifndef SECURITYDIALOGNOTIFIERSERVER_H
+#define SECURITYDIALOGNOTIFIERSERVER_H
+
+#include <e32base.h> // CPolicyServer
+
+
+/**
+ * CSecurityDialogNotifierServer is the work-horse for TSecurityDialogOperation
+ * operations defined for security dialogs in secdlgimpldefs.h. It's client
+ * is CSecurityDialogs class in securitydialognotifier component.
+ */
+NONSHARABLE_CLASS( CSecurityDialogNotifierServer ) : public CPolicyServer
+ {
+ public: // constructor and destructor
+ static CSecurityDialogNotifierServer* NewLC();
+ ~CSecurityDialogNotifierServer();
+
+ public: // new functions
+ void AddSession();
+ void RemoveSession();
+
+ private: // from CServer2 (via CPolicyServer)
+ CSession2* NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const;
+
+ private: // new functions
+ CSecurityDialogNotifierServer();
+ void ConstructL();
+
+ private: // data
+ TInt iSessionCount;
+ };
+
+#endif // SECURITYDIALOGNOTIFIERSERVER_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialognotifierservername.h Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* 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 dialog notifier server name
+*
+*/
+
+#ifndef SECURITYDIALOGNOTIFIERSERVERNAME_H
+#define SECURITYDIALOGNOTIFIERSERVERNAME_H
+
+_LIT( KSecurityDialogNotifierServerName, "securitydialognotifiersrv" );
+const TInt KSecurityDialogNotifierServerMajorVersionNumber = 1;
+const TInt KSecurityDialogNotifierServerMinorVersionNumber = 0;
+const TInt KSecurityDialogNotifierServerBuildVersionNumber = 0;
+
+// See TSecurityDialogOperation in secdlgimpldefs.h for other function codes.
+const TInt KSecurityDialogCancelOperation = 0;
+
+#endif // SECURITYDIALOGNOTIFIERSERVERNAME_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialognotifiersession.h Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* 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 dialog notifier server session
+*
+*/
+
+#ifndef SECURITYDIALOGNOTIFIERSESSION_H
+#define SECURITYDIALOGNOTIFIERSESSION_H
+
+#include <e32base.h> // CSession2
+#include "securitydialogoperationobserver.h" // MSecurityDialogOperationObserver
+
+class CSecurityDialogNotifierServer;
+class CSecurityDialogOperation;
+
+
+/**
+ * CSecurityDialogNotifierSession is the session object in security
+ * dialog notifier server (CSecurityDialogNotifierServer).
+ */
+NONSHARABLE_CLASS( CSecurityDialogNotifierSession ) : public CSession2,
+ public MSecurityDialogOperationObserver
+ {
+ public: // constructor and destructor
+ static CSecurityDialogNotifierSession* NewL();
+ ~CSecurityDialogNotifierSession();
+
+ public: // from CSession2
+ void CreateL();
+ void ServiceL( const RMessage2& aMessage );
+
+ public: // from MSecurityDialogOperationObserver
+ void OperationComplete();
+
+ private: // new functions
+ CSecurityDialogNotifierSession();
+ void ConstructL();
+ CSecurityDialogNotifierServer& Server();
+ void DispatchMessageL( const RMessage2& aMessage );
+ TBool IsOperationCancelled( const RMessage2& aMessage );
+ void ServerAuthenticationFailureL( const RMessage2& aMessage );
+ void GetInputBufferL( const RMessage2& aMessage );
+
+ private: // data
+ HBufC8* iInputBuffer;
+ CSecurityDialogOperation* iOperationHandler;
+ };
+
+#endif // SECURITYDIALOGNOTIFIERSESSION_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperation.h Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* 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 CSecurityDialog operations
+*
+*/
+
+#ifndef SECURITYDIALOGOPERATION_H
+#define SECURITYDIALOGOPERATION_H
+
+#include <e32base.h> // CActive
+
+class MSecurityDialogOperationObserver;
+
+
+/**
+ * CSecurityDialogOperation is a base class for different kinds of operations
+ * defined for security dialogs in /epoc32/include/platform/secdlgimpldefs.h.
+ * TSecurityDialogOperation lists the possible operations. A derived class
+ * implements each operation separately. This base class works as common API
+ * between different operation classes and the main CSecurityDialog class.
+ */
+NONSHARABLE_CLASS( CSecurityDialogOperation ) : public CActive
+ {
+ protected: // constructor
+ CSecurityDialogOperation( MSecurityDialogOperationObserver& aObserver,
+ const RMessage2& aMessage, TInt aReplySlot );
+
+ public: // destructor
+ ~CSecurityDialogOperation();
+
+ public: // new function
+ virtual void StartL( const TDesC8& aBuffer ) = 0;
+ virtual void CancelOperation() = 0;
+
+ protected: // from CActive
+ TInt RunError( TInt aError );
+
+ protected: // data
+ MSecurityDialogOperationObserver& iObserver;
+ RMessage2 iMessage;
+ const TInt iReplySlot;
+ };
+
+#endif // SECURITYDIALOGOPERATION_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperationobserver.h Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* 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: Observer definition for CSecurityDialog operations
+*
+*/
+
+#ifndef SECURITYDIALOGOPERATIONOBSERVER_H
+#define SECURITYDIALOGOPERATIONOBSERVER_H
+
+
+/**
+ * CSecurityDialogOperations inform observer when they are complete.
+ * Completed operations can be deleted safely. Deleting an incomplete
+ * operation cancels the ongoing request.
+ */
+class MSecurityDialogOperationObserver
+ {
+ public:
+ virtual void OperationComplete() = 0;
+ };
+
+#endif // SECURITYDIALOGOPERATIONOBSERVER_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperserverauthfail.h Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* 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: Server authentication failure operation in security dialog
+*
+*/
+
+#ifndef SECURITYDIALOGOPERSERVERAUTHFAIL_H
+#define SECURITYDIALOGOPERSERVERAUTHFAIL_H
+
+#include "securitydialogoperation.h" // CSecurityDialogOperation
+#include <securitydefs.h> // TValidationError
+#include <ct/rmpointerarray.h> // RMPointerArray
+#include <f32file.h> // RFs
+#include <secdlgimpldefs.h> // TServerAuthenticationFailureDialogResult
+
+class MSecurityDialogOperationObserver;
+class CServerAuthenticationFailureInput;
+class CUnifiedCertStore;
+class MCTWritableCertStore;
+class CCertAttributeFilter;
+class CCTCertInfo;
+class CUntrustedCertQuery;
+
+
+/**
+ * CServerAuthFailOperation is a CSecurityDialogOperation that handles
+ * the EServerAuthenticationFailure operation.
+ */
+NONSHARABLE_CLASS( CServerAuthFailOperation ) : public CSecurityDialogOperation
+ {
+ public: // constructors and destructor
+ static CServerAuthFailOperation* NewL( MSecurityDialogOperationObserver& aObserver,
+ const RMessage2& aMessage, TInt aReplySlot );
+ ~CServerAuthFailOperation();
+
+ public: // from CSecurityDialogOperation
+ void StartL( const TDesC8& aBuffer );
+ void CancelOperation();
+
+ protected: // from CActive (via CSecurityDialogOperation)
+ void RunL();
+ void DoCancel();
+
+ private: // new functions
+ CServerAuthFailOperation( MSecurityDialogOperationObserver& aObserver,
+ const RMessage2& aMessage, TInt aReplySlot );
+ void InitializeUnifiedCertStoreL();
+ void ProcessServerAuthorizationFailureL();
+ void OpenTrustedSiteCertificateStoreL();
+ TBool IsAlreadyTrustedSiteL();
+ void StartFetchingTrustedSiteCertsL();
+ void ShowUntrustedCertificateDialogL();
+ void SaveServerCertToTrustedSiteCertStoreL();
+ void SaveServerNameToTrustedSitesStoreL();
+ void ReturnResultL( TServerAuthenticationFailureDialogResult aResult );
+ void RetrieveFirstTrustedSiteCertL();
+ void RetrieveNextTrustedSiteCertL();
+ TBool IsRetrievedCertSameAsServerCertL();
+
+ private: // data
+ CServerAuthenticationFailureInput* iInput;
+
+ TValidationError iAuthFailReason;
+ TPtrC8 iEncodedServerCert;
+ HBufC8* iServerCertFingerprint;
+ HBufC* iServerName;
+ HBufC* iCertLabel;
+
+ CUntrustedCertQuery* iUntrustedCertQuery;
+
+ RFs iFs;
+ CUnifiedCertStore* iCertStore;
+ MCTWritableCertStore* iTrustedSiteCertStore;
+ CCertAttributeFilter* iCertAttributeFilter;
+ RMPointerArray<CCTCertInfo> iCertInfos;
+ TInt iRetrieveCertIndex;
+ HBufC8* iRetrievedCertBuffer;
+
+ enum {
+ EInitialiseCertStore,
+ EListTrustedSiteCerts,
+ ERetrieveTrustedSiteCert,
+ ESavingServerCert
+ } iMode;
+ };
+
+#endif // SECURITYDIALOGOPERSERVERAUTHFAIL_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogstrace.h Thu Sep 02 21:22:45 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: TRACE macros for security dialogs
+*
+*/
+
+#ifndef SECURITYDIALOGSTRACE_H
+#define SECURITYDIALOGSTRACE_H
+
+#include <e32debug.h> // RDebug
+
+
+// TODO: replace with OST tracing
+#ifdef _DEBUG
+#define TRACE( a, ARGS... ) DebugPrint( _L( a ), ##ARGS )
+#else
+#define TRACE( a, ARGS... )
+#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 // SECURITYDIALOGSTRACE_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/inc/untrustedcertquery.h Thu Sep 02 21:22:45 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: 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
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/rom/securitydialognotifiersrv.iby Thu Sep 02 21:22:45 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: Security dialog notifier server
+*
+*/
+
+#ifndef SECURITYDIALOGNOTIFIERSRV_IBY
+#define SECURITYDIALOGNOTIFIERSRV_IBY
+#include <bldvariant.hrh>
+
+file=ABI_DIR\BUILD_DIR\securitydialognotifiersrv.exe sys\bin\securitydialognotifiersrv.exe
+
+#endif // SECURITYDIALOGNOTIFIERSRV_IBY
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/src/securitydialognotifierserver.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* 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 dialog notifier server
+*
+*/
+
+#include "securitydialognotifierserver.h" // CSecurityDialogNotifierServer
+#include "securitydialognotifiersession.h" // CSecurityDialogNotifierSession
+#include "securitydialognotifierservername.h" // KSecurityDialogNotifierServerName
+#include "securitydialogstrace.h" // TRACE macro
+
+
+const TUint KRangeCount = 1;
+
+const TInt KRanges[ KRangeCount ] =
+ {
+ 0
+ };
+
+const TUint8 KElementsIndex[ KRangeCount ] =
+ {
+ 0
+ };
+
+const TInt KUikonServerId = 0x10003a4a;
+const CPolicyServer::TPolicyElement KPolicyElements[] =
+ {
+ { _INIT_SECURITY_POLICY_S0( KUikonServerId ), CPolicyServer::EFailClient }
+ };
+
+const CPolicyServer::TPolicy KSecurityDialogNotifierServerPolicy =
+ {
+ CPolicyServer::EAlwaysPass,
+ KRangeCount,
+ KRanges,
+ KElementsIndex,
+ KPolicyElements
+ };
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierServer::NewLC()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifierServer* CSecurityDialogNotifierServer::NewLC()
+ {
+ CSecurityDialogNotifierServer* self = new( ELeave ) CSecurityDialogNotifierServer;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierServer::~CSecurityDialogNotifierServer()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifierServer::~CSecurityDialogNotifierServer()
+ {
+ TRACE( "CSecurityDialogNotifierServer::~CSecurityDialogNotifierServer" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierServer::AddSession()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierServer::AddSession()
+ {
+ TRACE( "CSecurityDialogNotifierServer::AddSession" );
+ ++iSessionCount;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierServer::RemoveSession()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierServer::RemoveSession()
+ {
+ TRACE( "CSecurityDialogNotifierServer::RemoveSession" );
+ --iSessionCount;
+ if( iSessionCount == 0 )
+ {
+ TRACE( "CSecurityDialogNotifierServer::RemoveSession, shutting down" );
+ CActiveScheduler::Stop();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierServer::NewSessionL()
+// ---------------------------------------------------------------------------
+//
+CSession2* CSecurityDialogNotifierServer::NewSessionL( const TVersion &aVersion,
+ const RMessage2& /*aMessage*/ ) const
+ {
+ TRACE( "CSecurityDialogNotifierServer::NewSessionL" );
+ TVersion version( KSecurityDialogNotifierServerMajorVersionNumber,
+ KSecurityDialogNotifierServerMinorVersionNumber,
+ KSecurityDialogNotifierServerBuildVersionNumber );
+ if( !User::QueryVersionSupported( version, aVersion ) )
+ {
+ TRACE( "CSecurityDialogNotifierServer::NewSessionL, version not supported" );
+ User::Leave( KErrNotSupported );
+ }
+
+ return CSecurityDialogNotifierSession::NewL();
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierServer::CSecurityDialogNotifierServer()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifierServer::CSecurityDialogNotifierServer() :
+ CPolicyServer( CActive::EPriorityStandard, KSecurityDialogNotifierServerPolicy )
+ {
+ TRACE( "CSecurityDialogNotifierServer::CSecurityDialogNotifierServer" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierServer::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierServer::ConstructL()
+ {
+ StartL( KSecurityDialogNotifierServerName );
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/src/securitydialognotifierservermain.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* 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 dialog notifier server
+*
+*/
+
+#include "securitydialognotifierserver.h" // CSecurityDialogNotifierServer
+#include "securitydialognotifierservername.h" // KSecurityDialogNotifierServerName
+#include "securitydialogstrace.h" // TRACE macro
+
+
+// ---------------------------------------------------------------------------
+// MainL()
+// ---------------------------------------------------------------------------
+//
+LOCAL_C void MainL()
+ {
+ TRACE( "SecurityDialogNotifierServer: MainL" );
+ CActiveScheduler* scheduler = new( ELeave ) CActiveScheduler;
+ CleanupStack::PushL( scheduler );
+ CActiveScheduler::Install( scheduler );
+
+ CSecurityDialogNotifierServer* server = CSecurityDialogNotifierServer::NewLC();
+ User::LeaveIfError( User::RenameThread( KSecurityDialogNotifierServerName ) );
+ TRACE( "SecurityDialogNotifierServer: MainL, rendezvous" );
+
+ RProcess::Rendezvous( KErrNone );
+ TRACE( "SecurityDialogNotifierServer: MainL, activescheduler start" );
+ CActiveScheduler::Start();
+
+ TRACE( "SecurityDialogNotifierServer: MainL, cleanup" );
+ CleanupStack::PopAndDestroy( server );
+ CleanupStack::PopAndDestroy( scheduler );
+ }
+
+// ---------------------------------------------------------------------------
+// E32Main()
+// ---------------------------------------------------------------------------
+//
+GLDEF_C TInt E32Main()
+ {
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+
+ TRAPD( err, MainL() );
+ __ASSERT_ALWAYS( !err, User::Panic( KSecurityDialogNotifierServerName, err ) );
+
+ delete cleanup;
+ return err;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/src/securitydialognotifiersession.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,220 @@
+/*
+* 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 dialog notifier server session
+*
+*/
+
+#include "securitydialognotifiersession.h" // CSecurityDialogNotifierSession
+#include "securitydialognotifierserver.h" // CSecurityDialogNotifierServer
+#include "securitydialognotifierservername.h" // KSecurityDialogsCancelOperation
+#include "securitydialogoperserverauthfail.h" // CServerAuthFailOperation
+#include "securitydialogstrace.h" // TRACE macro
+#include <secdlgimpldefs.h> // TSecurityDialogOperation
+
+const TInt KInputParam = 0;
+const TInt KOutputParam = 1;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::NewL()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifierSession* CSecurityDialogNotifierSession::NewL()
+ {
+ CSecurityDialogNotifierSession* self = new( ELeave ) CSecurityDialogNotifierSession;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::~CSecurityDialogNotifierSession()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifierSession::~CSecurityDialogNotifierSession()
+ {
+ TRACE( "CSecurityDialogNotifierSession::~CSecurityDialogNotifierSession, begin" );
+ Server().RemoveSession();
+ delete iOperationHandler;
+ iOperationHandler = NULL;
+ delete iInputBuffer;
+ iInputBuffer = NULL;
+ TRACE( "CSecurityDialogNotifierSession::~CSecurityDialogNotifierSession, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::CreateL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierSession::CreateL()
+ {
+ TRACE( "CSecurityDialogNotifierSession::~CSecurityDialogNotifierSession" );
+ Server().AddSession();
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::ServiceL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierSession::ServiceL( const RMessage2& aMessage )
+ {
+ TRACE( "CSecurityDialogNotifierSession::ServiceL, message 0x%08x", aMessage.Handle() );
+ TRAPD( error, DispatchMessageL( aMessage ) );
+ TRACE( "CSecurityDialogNotifierSession::ServiceL, dispatched, error %d", error );
+ if( error && !aMessage.IsNull() )
+ {
+ TRACE( "CSecurityDialogNotifierSession::ServiceL, completing msg 0x%08x",
+ aMessage.Handle() );
+ aMessage.Complete( error );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::OperationComplete()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierSession::OperationComplete()
+ {
+ TRACE( "CSecurityDialogNotifierSession::OperationComplete, begin" );
+ delete iOperationHandler;
+ iOperationHandler = NULL;
+ TRACE( "CSecurityDialogNotifierSession::OperationComplete, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::CSecurityDialogNotifierSession()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifierSession::CSecurityDialogNotifierSession()
+ {
+ TRACE( "CSecurityDialogNotifierSession::CSecurityDialogNotifierSession" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierSession::ConstructL()
+ {
+ TRACE( "CSecurityDialogNotifierSession::ConstructL" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::Server()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogNotifierServer& CSecurityDialogNotifierSession::Server()
+ {
+ return *static_cast< CSecurityDialogNotifierServer* >(
+ const_cast< CServer2* >( CSession2::Server() ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::DispatchMessageL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierSession::DispatchMessageL( const RMessage2& aMessage )
+ {
+ TRACE( "CSecurityDialogNotifierSession::DispatchMessageL, begin" );
+ if( !IsOperationCancelled( aMessage ) )
+ {
+ TSecurityDialogOperation operation =
+ static_cast< TSecurityDialogOperation >( aMessage.Function() );
+ TRACE( "CSecurityDialogNotifierSession::DispatchMessageL, operation=%d", operation );
+ switch( operation )
+ {
+ case ESecureConnection:
+ case ESignText:
+ case EEnterPIN:
+ case EEnablePIN:
+ case EDisablePIN:
+ case EChangePIN:
+ case EUnblockPIN:
+ case EPINBlocked:
+ case ETotalBlocked:
+ case EUnblockPINInClear:
+ User::Leave( KErrNotSupported );
+ break;
+ case EServerAuthenticationFailure:
+ ServerAuthenticationFailureL( aMessage );
+ break;
+ default:
+ User::Leave( KErrNotSupported );
+ break;
+ }
+ }
+ TRACE( "CSecurityDialogNotifierSession::DispatchMessageL, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::IsOperationCancelled()
+// ---------------------------------------------------------------------------
+//
+TBool CSecurityDialogNotifierSession::IsOperationCancelled( const RMessage2& aMessage )
+ {
+ TBool isCancelled = EFalse;
+ if( aMessage.Function() == KSecurityDialogCancelOperation )
+ {
+ if( iOperationHandler )
+ {
+ TRACE( "CSecurityDialogNotifierSession::CheckIfOperationCancelledL, cancelling" );
+ iOperationHandler->CancelOperation();
+ }
+ TRACE( "CSecurityDialogNotifierSession::CheckIfOperationCancelledL, completing msg 0x%08x",
+ aMessage.Handle() );
+ aMessage.Complete( KErrNone );
+ isCancelled = ETrue;
+ }
+ return isCancelled;
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::ServerAuthenticationFailureL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierSession::ServerAuthenticationFailureL( const RMessage2& aMessage )
+ {
+ TRACE( "CSecurityDialogNotifierSession::ServerAuthenticationFailureL, begin" );
+ GetInputBufferL( aMessage );
+
+ __ASSERT_DEBUG( iOperationHandler == NULL, User::Invariant() );
+ iOperationHandler = CServerAuthFailOperation::NewL( *this, aMessage, KOutputParam );
+ iOperationHandler->StartL( *iInputBuffer );
+
+ TRACE( "CSecurityDialogNotifierSession::ServerAuthenticationFailureL, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogNotifierSession::GetInputBufferL()
+// ---------------------------------------------------------------------------
+//
+void CSecurityDialogNotifierSession::GetInputBufferL( const RMessage2& aMessage )
+ {
+ TInt inputLength = aMessage.GetDesLength( KInputParam );
+ TRACE( "CSecurityDialogNotifierSession::GetInputBufferL, inputLength=%d", inputLength );
+ __ASSERT_ALWAYS( inputLength > 0, User::Leave( KErrCorrupt ) );
+ if( iInputBuffer )
+ {
+ delete iInputBuffer;
+ iInputBuffer = NULL;
+ }
+ iInputBuffer = HBufC8::NewL( inputLength );
+ TPtr8 inputBufferPtr( iInputBuffer->Des() );
+ aMessage.ReadL( KInputParam, inputBufferPtr );
+ TRACE( "CSecurityDialogNotifierSession::GetInputBufferL, read complete" );
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/src/securitydialogoperation.cpp Thu Sep 02 21:22:45 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: Base class for CSecurityDialog operations
+*
+*/
+
+#include "securitydialogoperation.h" // CSecurityDialogOperation
+#include "securitydialogoperationobserver.h" // MSecurityDialogOperationObserver
+#include "securitydialogstrace.h" // TRACE macro
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogOperation::CSecurityDialogOperation()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogOperation::CSecurityDialogOperation(
+ MSecurityDialogOperationObserver& aObserver, const RMessage2& aMessage,
+ TInt aReplySlot ) : CActive( CActive::EPriorityStandard ), iObserver( aObserver ),
+ iMessage( aMessage ), iReplySlot( aReplySlot )
+ {
+ TRACE( "CSecurityDialogOperation::CSecurityDialogOperation, iMessage 0x%08x",
+ iMessage.Handle() );
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogOperation::~CSecurityDialogOperation()
+// ---------------------------------------------------------------------------
+//
+CSecurityDialogOperation::~CSecurityDialogOperation()
+ {
+ TRACE( "CSecurityDialogOperation::~CSecurityDialogOperation, begin" );
+ Cancel();
+ TRACE( "CSecurityDialogOperation::~CSecurityDialogOperation, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CSecurityDialogOperation::RunError()
+// ---------------------------------------------------------------------------
+//
+TInt CSecurityDialogOperation::RunError( TInt aError )
+ {
+ TRACE( "CSecurityDialogOperation::RunError, aError=%d", aError );
+ if( !iMessage.IsNull() )
+ {
+ TRACE( "CSecurityDialogOperation::RunError, completing message 0x%08x",
+ iMessage.Handle() );
+ iMessage.Complete( aError );
+ }
+ return KErrNone;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/src/securitydialogoperserverauthfail.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,498 @@
+/*
+* 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: Server authentication failure operation in security dialog
+*
+*/
+
+#include "securitydialogoperserverauthfail.h" // CServerAuthFailOperation
+#include "securitydialogoperationobserver.h" // MSecurityDialogOperationObserver
+#include "untrustedcertquery.h" // CUntrustedCertQuery
+#include "../../DeviceToken/Inc/TrustedSitesStore.h" // CTrustSitesStore
+#include <mctwritablecertstore.h> // MCTWritableCertStore
+#include <unifiedcertstore.h> // CUnifiedCertStore
+#include <cctcertinfo.h> // CCTCertInfo
+#include <x509cert.h> // CX509Certificate
+#include "securitydialogstrace.h" // TRACE macro
+
+const TUid KTrustedSiteCertificatesTokenTypeUid = { 0x101FB66F };
+const TInt KMaxCommonNameLength = 64; // from RFC3280
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::NewL()
+// ---------------------------------------------------------------------------
+//
+CServerAuthFailOperation* CServerAuthFailOperation::NewL(
+ MSecurityDialogOperationObserver& aObserver, const RMessage2& aMessage,
+ TInt aReplySlot )
+ {
+ TRACE( "CServerAuthFailOperation::NewL, aMessage 0x%08x", aMessage.Handle() );
+ return new( ELeave ) CServerAuthFailOperation( aObserver, aMessage, aReplySlot );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::~CServerAuthFailOperation()
+// ---------------------------------------------------------------------------
+//
+CServerAuthFailOperation::~CServerAuthFailOperation()
+ {
+ TRACE( "CServerAuthFailOperation::~CServerAuthFailOperation, begin" );
+ Cancel();
+
+ delete iUntrustedCertQuery;
+ iUntrustedCertQuery = NULL;
+
+ delete iInput;
+ iInput = NULL;
+ delete iCertLabel;
+ iCertLabel = NULL;
+ delete iServerName;
+ iServerName = NULL;
+
+ delete iCertStore;
+ iCertStore = NULL;
+ iTrustedSiteCertStore = NULL; // not owned
+
+ delete iCertAttributeFilter;
+ iCertAttributeFilter = NULL;
+ delete iRetrievedCertBuffer;
+ iRetrievedCertBuffer = NULL;
+
+ iCertInfos.Close();
+ iFs.Close();
+ TRACE( "CServerAuthFailOperation::~CServerAuthFailOperation, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::StartL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::StartL( const TDesC8& aBuffer )
+ {
+ TRACE( "CServerAuthFailOperation::StartL, begin" );
+ __ASSERT_DEBUG( iInput == NULL, User::Invariant() );
+ iInput = CServerAuthenticationFailureInput::NewL( aBuffer );
+
+ iInput->GetEncodedCert( iEncodedServerCert );
+
+ TPtrC8 serverName;
+ iInput->GetServerName( serverName );
+ __ASSERT_DEBUG( iServerName == NULL, User::Invariant() );
+ iServerName = HBufC::NewL( serverName.Length() );
+ iServerName->Des().Copy( serverName );
+ TRACE( "CServerAuthFailOperation::StartL, iServerName=%S", iServerName );
+
+ iAuthFailReason = iInput->FailureReason();
+ TRACE( "CServerAuthFailOperation::StartL, iAuthFailReason=%d", iAuthFailReason );
+
+ InitializeUnifiedCertStoreL();
+ // This is async function, processing continues in RunL().
+ // Basically trusted site certificates are fetched and the
+ // server certificate is compared to them. If the server
+ // certificate is already in trusted site cert store, then
+ // connection is accepted silently. If it is not, then
+ // untrusted certificate dialog is displayed.
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::CancelOperation()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::CancelOperation()
+ {
+ TRACE( "CServerAuthFailOperation::CancelOperation, begin" );
+ Cancel();
+ if( iUntrustedCertQuery )
+ {
+ TRACE( "CServerAuthFailOperation::CancelOperation, cancelling untrusted query" );
+ iUntrustedCertQuery->Cancel();
+ }
+ if( !iMessage.IsNull() )
+ {
+ TRACE( "CServerAuthFailOperation::CancelOperation, completing message 0x%08x",
+ iMessage.Handle() );
+ iMessage.Complete( KErrCancel );
+ }
+ TRACE( "CServerAuthFailOperation::CancelOperation, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::RunL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::RunL()
+ {
+ TRACE( "CServerAuthFailOperation::RunL, iStatus.Int()=%d, iMode=%d",
+ iStatus.Int(), iMode );
+ User::LeaveIfError( iStatus.Int() );
+ switch( iMode )
+ {
+ case EInitialiseCertStore:
+ ProcessServerAuthorizationFailureL();
+ break;
+ case EListTrustedSiteCerts:
+ RetrieveFirstTrustedSiteCertL();
+ break;
+ case ERetrieveTrustedSiteCert:
+ if( IsRetrievedCertSameAsServerCertL() )
+ {
+ ReturnResultL( EContinue );
+ }
+ else
+ {
+ RetrieveNextTrustedSiteCertL();
+ }
+ break;
+ case ESavingServerCert:
+ SaveServerNameToTrustedSitesStoreL();
+ ReturnResultL( EContinue );
+ break;
+ default:
+ User::Leave( KErrGeneral );
+ break;
+ }
+ TRACE( "CServerAuthFailOperation::RunL(), end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::DoCancel()
+ {
+ TRACE( "CServerAuthFailOperation::DoCancel, iMode=%d", iMode );
+ switch( iMode )
+ {
+ case EInitialiseCertStore:
+ if( iCertStore )
+ {
+ iCertStore->CancelInitialize();
+ }
+ break;
+ case EListTrustedSiteCerts:
+ if( iTrustedSiteCertStore )
+ {
+ iTrustedSiteCertStore->CancelList();
+ }
+ break;
+ case ERetrieveTrustedSiteCert:
+ if( iTrustedSiteCertStore )
+ {
+ iTrustedSiteCertStore->CancelRetrieve();
+ }
+ break;
+ case ESavingServerCert:
+ if( iTrustedSiteCertStore )
+ {
+ iTrustedSiteCertStore->CancelAdd();
+ }
+ break;
+ default:
+ break;
+ }
+ TRACE( "CServerAuthFailOperation::DoCancel, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::CServerAuthFailOperation()
+// ---------------------------------------------------------------------------
+//
+CServerAuthFailOperation::CServerAuthFailOperation(
+ MSecurityDialogOperationObserver& aObserver, const RMessage2& aMessage,
+ TInt aReplySlot ) : CSecurityDialogOperation( aObserver, aMessage, aReplySlot )
+ {
+ TRACE( "CServerAuthFailOperation::CServerAuthFailOperation" );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::InitializeUnifiedCertStoreL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::InitializeUnifiedCertStoreL()
+ {
+ TRACE( "CServerAuthFailOperation::InitializeUnifiedCertStoreL" );
+ User::LeaveIfError( iFs.Connect() );
+ iCertStore = CUnifiedCertStore::NewL( iFs, ETrue );
+
+ iCertStore->Initialize( iStatus );
+ iMode = EInitialiseCertStore;
+ SetActive();
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::ProcessServerAuthorizationFailureL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::ProcessServerAuthorizationFailureL()
+ {
+ TRACE( "CServerAuthFailOperation::ProcessServerAuthorizationFailureL" );
+ OpenTrustedSiteCertificateStoreL();
+ if( IsAlreadyTrustedSiteL() )
+ {
+ StartFetchingTrustedSiteCertsL();
+ }
+ else
+ {
+ ShowUntrustedCertificateDialogL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::OpenTrustedSiteCertificateStoreL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::OpenTrustedSiteCertificateStoreL()
+ {
+ TRACE( "CServerAuthFailOperation::OpenTrustedSiteCertificateStoreL, begin" );
+ TInt count = iCertStore->WritableCertStoreCount();
+ for( TInt index = 0; ( index < count ) && !iTrustedSiteCertStore; index++ )
+ {
+ MCTWritableCertStore* certstore = &( iCertStore->WritableCertStore( index ) );
+ TUid tokenTypeUid = certstore->Token().Handle().iTokenTypeUid;
+ if( tokenTypeUid == KTrustedSiteCertificatesTokenTypeUid )
+ {
+ iTrustedSiteCertStore = certstore;
+ }
+ }
+ TRACE( "CServerAuthFailOperation::OpenTrustedSiteCertificateStoreL, store 0x%08x",
+ iTrustedSiteCertStore );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::IsAlreadyTrustedSiteL()
+// ---------------------------------------------------------------------------
+//
+TBool CServerAuthFailOperation::IsAlreadyTrustedSiteL()
+ {
+ TRACE( "CServerAuthFailOperation::IsAlreadyTrustedSiteL, begin" );
+ TBool isTrustedSite = EFalse;
+ if( iTrustedSiteCertStore )
+ {
+ CTrustSitesStore* trustedSitesStore = CTrustSitesStore::NewL();
+ CleanupStack::PushL( trustedSitesStore );
+
+ isTrustedSite = trustedSitesStore->IsTrustedSiteL( iEncodedServerCert, *iServerName );
+ if( isTrustedSite )
+ {
+ TBool isExpiredAccepted = trustedSitesStore->IsOutOfDateAllowedL(
+ iEncodedServerCert, *iServerName );
+ TRACE( "CServerAuthFailOperation::IsAlreadyTrustedSiteL, isExpiredAccepted=%d",
+ isExpiredAccepted );
+ if( !isExpiredAccepted && iAuthFailReason == EDateOutOfRange )
+ {
+ TRACE( "CServerAuthFailOperation::IsAlreadyTrustedSiteL, not accepted" );
+ isTrustedSite = EFalse;
+ }
+ }
+
+ CleanupStack::PopAndDestroy( trustedSitesStore );
+ }
+ TRACE( "CServerAuthFailOperation::IsAlreadyTrustedSiteL, isTrustedSite=%d", isTrustedSite );
+ return isTrustedSite;
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::StartFetchingTrustedSiteCertsL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::StartFetchingTrustedSiteCertsL()
+ {
+ TRACE( "CServerAuthFailOperation::StartFetchingTrustedSiteCertsL" );
+ __ASSERT_DEBUG( iCertAttributeFilter == NULL, User::Invariant() );
+ iCertAttributeFilter = CCertAttributeFilter::NewL();
+ iCertAttributeFilter->SetOwnerType( EPeerCertificate );
+ __ASSERT_DEBUG( iTrustedSiteCertStore != NULL, User::Invariant() );
+ iTrustedSiteCertStore->List( iCertInfos, *iCertAttributeFilter, iStatus );
+ iMode = EListTrustedSiteCerts;
+ SetActive();
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::ShowUntrustedCertificateDialogL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::ShowUntrustedCertificateDialogL()
+ {
+ TRACE( "CServerAuthFailOperation::ShowUntrustedCertificateDialogL, begin" );
+
+ // If trusted site certstore open has failed, then it is not possible to save
+ // the host name for permanent use. Hence, choice for permanent accept is not
+ // displayed if trusted site certstore open has failed. Other restrictions for
+ // permanent accept are defined in device dialog (UntrustedCertificateWidget).
+ TBool isTrustedSiteCertStoreOpened = ( iTrustedSiteCertStore != NULL );
+ __ASSERT_DEBUG( iUntrustedCertQuery == NULL, User::Invariant() );
+ iUntrustedCertQuery = CUntrustedCertQuery::NewL( iAuthFailReason, iEncodedServerCert,
+ *iServerName, isTrustedSiteCertStoreOpened );
+
+ CUntrustedCertQuery::TResponse response = CUntrustedCertQuery::EQueryRejected;
+ iUntrustedCertQuery->ShowQueryAndWaitForResponseL( response );
+ switch( response )
+ {
+ case CUntrustedCertQuery::EQueryAccepted:
+ ReturnResultL( EContinue );
+ break;
+ case CUntrustedCertQuery::EQueryAcceptedPermanently:
+ SaveServerCertToTrustedSiteCertStoreL();
+ break;
+ case CUntrustedCertQuery::EQueryRejected:
+ default:
+ ReturnResultL( EStop );
+ break;
+ }
+
+ TRACE( "CServerAuthFailOperation::ShowUntrustedCertificateDialogL, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::SaveServerCertToTrustedSiteCertStoreL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::SaveServerCertToTrustedSiteCertStoreL()
+ {
+ TRACE( "CServerAuthFailOperation::SaveServerCertToTrustedSiteCertStoreL" );
+
+ __ASSERT_DEBUG( iCertLabel == NULL, User::Invariant() );
+ CX509Certificate* serverCert = CX509Certificate::NewLC( iEncodedServerCert );
+ const CX500DistinguishedName& dName = serverCert->SubjectName();
+ HBufC* commonName = dName.ExtractFieldL( KX520CommonName );
+ if( commonName )
+ {
+ CleanupStack::PushL( commonName );
+ TInt commonNameLen = commonName->Length();
+ if( commonNameLen > 0 && commonNameLen <= KMaxCommonNameLength )
+ {
+ iCertLabel = commonName->AllocL();
+ }
+ CleanupStack::PopAndDestroy( commonName );
+ }
+ CleanupStack::PopAndDestroy( serverCert );
+
+ if( !iCertLabel )
+ {
+ iCertLabel = iServerName->AllocL();
+ }
+
+ iTrustedSiteCertStore->Add( *iCertLabel, EX509Certificate, EPeerCertificate,
+ NULL, NULL, iEncodedServerCert, iStatus );
+ iMode = ESavingServerCert;
+ SetActive();
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::SaveServerNameToTrustedSitesStoreL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::SaveServerNameToTrustedSitesStoreL()
+ {
+ TRACE( "CServerAuthFailOperation::SaveServerNameToTrustedSitesStoreL, begin" );
+ CTrustSitesStore* trustedSitesStore = CTrustSitesStore::NewL();
+ CleanupStack::PushL( trustedSitesStore );
+
+ // CTrustSitesStore::AddL() may leave or it may return an error code.
+ // It leaves if parameters are incorrect, and it returns error code if
+ // saving fails. Both kinds of errors are handled here in the same way.
+ TInt err = trustedSitesStore->AddL( iEncodedServerCert, *iServerName );
+ TRACE( "CServerAuthFailOperation::SaveServerNameToTrustedSitesStoreL, err=%d", err );
+ User::LeaveIfError( err );
+
+ CleanupStack::PopAndDestroy( trustedSitesStore );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::ReturnResultL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::ReturnResultL( TServerAuthenticationFailureDialogResult aResult )
+ {
+ TRACE( "CServerAuthFailOperation::ReturnResultL, aResult=%d", aResult );
+ TServerAuthenticationFailureOutputBuf output( aResult );
+ iMessage.WriteL( iReplySlot, output );
+ TRACE( "CServerAuthFailOperation::ReturnResultL, completing msg 0x%08x", iMessage.Handle() );
+ iMessage.Complete( KErrNone );
+ TRACE( "CServerAuthFailOperation::ReturnResultL, informing observer" );
+ iObserver.OperationComplete();
+ TRACE( "CServerAuthFailOperation::ReturnResultL, end" );
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::RetrieveFirstTrustedSiteCertL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::RetrieveFirstTrustedSiteCertL()
+ {
+ TRACE( "CServerAuthFailOperation::RetrieveFirstTrustedSiteCertL" );
+ __ASSERT_DEBUG( iRetrievedCertBuffer == NULL, User::Invariant() );
+ iRetrieveCertIndex = 0;
+
+ RetrieveNextTrustedSiteCertL();
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::RetrieveNextTrustedSiteCertL()
+// ---------------------------------------------------------------------------
+//
+void CServerAuthFailOperation::RetrieveNextTrustedSiteCertL()
+ {
+ TRACE( "CServerAuthFailOperation::RetrieveNextTrustedSiteCertL" );
+ if( iRetrieveCertIndex < iCertInfos.Count() )
+ {
+ CCTCertInfo& cert = *( iCertInfos[ iRetrieveCertIndex ] );
+
+ if( iRetrievedCertBuffer )
+ {
+ delete iRetrievedCertBuffer;
+ iRetrievedCertBuffer = NULL;
+ }
+ iRetrievedCertBuffer = HBufC8::NewL( cert.Size() );
+ TPtr8 buffer = iRetrievedCertBuffer->Des();
+
+ iTrustedSiteCertStore->Retrieve( cert, buffer, iStatus );
+ iMode = ERetrieveTrustedSiteCert;
+ SetActive();
+ }
+ else
+ {
+ ShowUntrustedCertificateDialogL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CServerAuthFailOperation::IsRetrievedCertSameAsServerCertL()
+// ---------------------------------------------------------------------------
+//
+TBool CServerAuthFailOperation::IsRetrievedCertSameAsServerCertL()
+ {
+ TRACE( "CServerAuthFailOperation::IsRetrievedCertSameAsServerCertL, begin" );
+ TBool isSame = EFalse;
+ CX509Certificate* cert = CX509Certificate::NewLC( *iRetrievedCertBuffer );
+
+ if( !iServerCertFingerprint )
+ {
+ CX509Certificate* serverCert = CX509Certificate::NewLC( iEncodedServerCert );
+ iServerCertFingerprint = serverCert->Fingerprint().AllocL();
+ CleanupStack::PopAndDestroy( serverCert );
+ }
+
+ if( cert->Fingerprint() == *iServerCertFingerprint )
+ {
+ isSame = ETrue;
+ }
+
+ CleanupStack::PopAndDestroy( cert );
+ TRACE( "CServerAuthFailOperation::IsRetrievedCertSameAsServerCertL, isSame=%d", isSame );
+ return isSame;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/securitydialognotifiersrv/src/untrustedcertquery.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -0,0 +1,250 @@
+/*
+* 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 "securitydialogstrace.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/pkiutilities/untrustedcertificatedialog/src/untrustedcertificatewidget.cpp Wed Aug 18 10:40:08 2010 +0300
+++ b/pkiutilities/untrustedcertificatedialog/src/untrustedcertificatewidget.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -24,7 +24,6 @@
#include <hbgroupbox.h>
#include <hbtextedit.h>
#include <QGraphicsLinearLayout>
-#include <QDebug>
const int KUnknownError = -5; // KErrNotSupported
@@ -85,8 +84,7 @@
Q_ASSERT(mCertificateDetailsText == 0);
mCertificateDetailsText = new HbTextEdit;
- qDebug() << "fixing Certificatedialog.length() to 63";
- QString certificateDetails = mCertificateInfo->certificateDetails(mServerName).left(63);
+ QString certificateDetails = mCertificateInfo->certificateDetails(mServerName);
mCertificateDetailsText->setPlainText(certificateDetails);
mCertificateDetailsText->setReadOnly(true);
--- a/securitydialogs/Autolock/Autolock.pro Wed Aug 18 10:40:08 2010 +0300
+++ b/securitydialogs/Autolock/Autolock.pro Thu Sep 02 21:22:45 2010 +0300
@@ -27,8 +27,10 @@
CONFIG += mobility
MOBILITY = publishsubscribe
+#TRANSLATIONS = autolock.ts
+
XQSERVICE_ROOT=../..
-include(../../xqservicebase.pri)
+#include(../../xqservicebase.pri)
include(src/Autolock.pri)
LIBS+=-lxqservice -lxqserviceutil -lflogger
@@ -36,13 +38,15 @@
LIBS += -lsecui -letelmm -letel -lcustomapi -lcentralrepository
LIBS += -lcone -lws32 -lkeylockpolicyapi
LIBS += -lpower_save_display_mode
+LIBS += -ltstaskmonitorclient # for TsTaskSettings
+LIBS += -lavkon # for KeySounds
SERVICE.FILE = service_conf.xml
SERVICE.OPTIONS = embeddable
SERVICE.OPTIONS += hidden
libFiles.sources = Autolock.exe
-libFiles.path = "!:\sys\bin"
+#libFiles.path = "!:\sys\bin"
DEPLOYMENT += libFiles
RESOURCES += Autolock.qrc
@@ -57,7 +61,10 @@
BLD_INF_RULES.prj_exports += "./rom/Autolock.iby CORE_APP_LAYER_IBY_EXPORT_PATH(Autolock.iby)"
BLD_INF_RULES.prj_exports += "./conf/Autolock.confml MW_LAYER_CONFML(Autolock.confml)"
+BLD_INF_RULES.prj_exports += "./conf/lock.confml MW_LAYER_CONFML(lock.confml)"
# remove CI_autolock.confml because CI already exports it
# BLD_INF_RULES.prj_exports += "./conf/CI_Autolock.confml MW_LAYER_CONFML(CI_Autolock.confml)"
BLD_INF_RULES.prj_exports += "./rom/AutolockSrv.iby CORE_APP_LAYER_IBY_EXPORT_PATH(AutolockSrv.iby)"
BLD_INF_RULES.prj_exports += "./PubSub/SecurityUIsPrivatePSKeys.h |../../inc/securityuisprivatepskeys.h"
+
+BLD_INF_RULES.prj_exports += "./conf/lock_10283322.crml MW_LAYER_CRML(lock_10283322.crml)"
\ No newline at end of file
--- a/securitydialogs/Autolock/bld.inf Wed Aug 18 10:40:08 2010 +0300
+++ b/securitydialogs/Autolock/bld.inf Thu Sep 02 21:22:45 2010 +0300
@@ -1,13 +1,13 @@
// ============================================================================
// * Makefile for building: Autolock
-// * Generated by qmake (2.01a) (Qt 4.6.3) on: 2010-05-24T09:03:29
+// * Generated by qmake (2.01a) (Qt 4.7.0) on: 2010-08-07T17:22:57
// * This file is generated by qmake and should not be modified by the
// * user.
// * Project: Autolock.pro
// * Template: app
// ============================================================================
-#define BLD_INF_AUTOLOCK_04D5822F
+#define BLD_INF_AUTOLOCK_04D793A7
prj_platforms
@@ -22,37 +22,773 @@
prj_extensions
START EXTENSION qt/qmake_extra_pre_targetdep.export
-OPTION PREDEP_TARGET E:/sf/mw/securitysrv/securitydialogs/Autolock/moc_Autolock.cpp
-OPTION DEPS E:/sf/mw/securitysrv/securitydialogs/SecUi/Inc/SecQueryUi.h E:/sf/mw/securitysrv/securitydialogs/Autolock/src/Autolock.h
-OPTION COMMAND /epoc32/tools/moc -DSYMBIAN -DUNICODE -DQT_KEYPAD_NAVIGATION -DQT_SOFTKEYS_ENABLED -DQT_USE_MATH_H_FLOATS -DHB_GESTURE_FW -DHB_EFFECTS -DHB_TEXT_MEASUREMENT_UTILITY -DQT_SVG_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"E:/epoc32/include/mw/QtCore" -I"E:/epoc32/include/mw/QtNetwork" -I"E:/epoc32/include/mw/QtGui" -I"E:/epoc32/include/mw/QtSvg" -I"E:/epoc32/include/mw" -I"E:/epoc32/include/mw/QtPublishSubscribe" -I"E:/sf/mw/qt/mkspecs/common/symbian" -I"E:/epoc32/include" -I"E:/epoc32/include/stdapis" -I"E:/epoc32/include/stdapis/sys" -I"E:/sf/mw/securitysrv/securitydialogs/Autolock" -I"E:/sf/mw/securitysrv/securitydialogs/Autolock/inc" -I"E:/sf/mw/securitysrv/securitydialogs/Autolock/autolockuseractivityservice" -I"E:/sf/mw/securitysrv/securitydialogs/Autolock/autolockuseractivityservice/inc" -I"E:/epoc32/include/platform/mw" -I"E:/epoc32/include/platform" -I"E:/epoc32/include/platform/loc" -I"E:/epoc32/include/platform/mw/loc" -I"E:/epoc32/include/platform/loc/sc" -I"E:/epoc32/include/platform/mw/loc/sc" -I"E:/epoc32/include/mw/hb/hbcore" -I"E:/epoc32/include/mw/hb/hbwidgets" -I"E:/epoc32/include/mw/hb/hbutils" -I"E:/epoc32/include/stdapis/stlportv5" -I"E:/epoc32/include/app" -I"E:/epoc32/include/platform/app" -I"E:/epoc32/include/platform/app/loc" -I"E:/epoc32/include/platform/app/loc/sc" -I"E:/sf/mw/securitysrv/securitydialogs/Autolock/src" -DSYMBIAN e:/sf/mw/securitysrv/securitydialogs/Autolock/src/Autolock.h -o e:/sf/mw/securitysrv/securitydialogs/Autolock/moc_Autolock.cpp
+OPTION PREDEP_TARGET A:/sf/mw/securitysrv/securitydialogs/Autolock/moc_Autolock.cpp
+OPTION DEPS A:/sf/mw/securitysrv/securitydialogs/SecUi/Inc/SecQueryUi.h A:/sf/mw/securitysrv/securitydialogs/Autolock/src/Autolock.h
+OPTION COMMAND /epoc32/tools/moc.exe -DSYMBIAN -DUNICODE -DQT_KEYPAD_NAVIGATION -DQT_SOFTKEYS_ENABLED -DQT_USE_MATH_H_FLOATS -DHB_HAVE_QT_MOBILITY -DHB_HAVE_PROTECTED_CHUNK -DHB_TOUCHFEEDBACK_TYPE_IS_LONGPRESS -DHB_GESTURE_FW -DHB_EFFECTS -DHB_TEXT_MEASUREMENT_UTILITY -DHB_HAVE_QT_MOBILITY -DHB_HAVE_PROTECTED_CHUNK -DHB_TOUCHFEEDBACK_TYPE_IS_LONGPRESS -DHB_GESTURE_FW -DHB_EFFECTS -DHB_TEXT_MEASUREMENT_UTILITY -DQT_SVG_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"A:/epoc32/include/mw/QtCore" -I"A:/epoc32/include/mw/QtNetwork" -I"A:/epoc32/include/mw/QtGui" -I"A:/epoc32/include/mw/QtSvg" -I"A:/epoc32/include/mw" -I"A:/epoc32/include/mw/QtPublishSubscribe" -I"A:/sf/mw/qt/mkspecs/common/symbian" -I"A:/epoc32/include" -I"A:/epoc32/include/stdapis" -I"A:/epoc32/include/stdapis/sys" -I"A:/epoc32/include/platform/mw" -I"A:/epoc32/include/platform" -I"A:/epoc32/include/platform/loc" -I"A:/epoc32/include/platform/mw/loc" -I"A:/epoc32/include/platform/loc/sc" -I"A:/epoc32/include/platform/mw/loc/sc" -I"A:/sf/mw/securitysrv/securitydialogs/Autolock" -I"A:/sf/mw/securitysrv/securitydialogs/Autolock/inc" -I"A:/sf/mw/securitysrv/securitydialogs/Autolock/autolockuseractivityservice" -I"A:/sf/mw/securitysrv/securitydialogs/Autolock/autolockuseractivityservice/inc" -I"A:/QtPublishSubscribe" -I"A:/epoc32/include/mw/hb/hbcore" -I"A:/epoc32/include/mw/hb/hbwidgets" -I"A:/epoc32/include/mw/hb/hbutils" -I"A:/epoc32/include/stdapis/stlportv5" -I"A:/sf/mw/securitysrv/securitydialogs/Autolock/src" -DSYMBIAN a:/sf/mw/securitysrv/securitydialogs/Autolock/src/Autolock.h -o a:/sf/mw/securitysrv/securitydialogs/Autolock/moc_Autolock.cpp
END
START EXTENSION qt/qmake_extra_pre_targetdep.export
-OPTION PREDEP_TARGET E:/sf/mw/securitysrv/securitydialogs/Autolock/qrc_Autolock.cpp
-OPTION DEPS E:/sf/mw/securitysrv/securitydialogs/Autolock/Autolock.qrc
-OPTION COMMAND /epoc32/tools/rcc -name Autolock e:/sf/mw/securitysrv/securitydialogs/Autolock/Autolock.qrc -o e:/sf/mw/securitysrv/securitydialogs/Autolock/qrc_Autolock.cpp
+OPTION PREDEP_TARGET A:/sf/mw/securitysrv/securitydialogs/Autolock/qrc_Autolock.cpp
+OPTION DEPS A:/sf/mw/securitysrv/securitydialogs/Autolock/Autolock.qrc A:/sf/mw/securitysrv/securitydialogs/Autolock/iconnotifier.svg A:/sf/mw/securitysrv/securitydialogs/Autolock/qtg_large_device_lock.svg
+OPTION COMMAND /epoc32/tools/rcc.exe -name Autolock a:/sf/mw/securitysrv/securitydialogs/Autolock/Autolock.qrc -o a:/sf/mw/securitysrv/securitydialogs/Autolock/qrc_Autolock.cpp
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ar.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ar.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ar.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ar.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ar.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ar.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_eu.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_eu.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_eu.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_eu.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_eu.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_eu.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_bg.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_bg.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_bg.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_bg.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_bg.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_bg.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ca.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ca.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ca.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ca.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ca.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ca.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hr.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_hr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hr.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_hr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hr.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_hr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_cs.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_cs.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_cs.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_cs.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_cs.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_cs.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_da.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_da.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_da.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_da.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_da.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_da.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_nl.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_nl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_nl.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_nl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_nl.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_nl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_en.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_en.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_en.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_en.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_en.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_en.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_en_US.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_en_US.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_en_US.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_en_US.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_en_US.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_en_US.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_et.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_et.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_et.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_et.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_et.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_et.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fi.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_fi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fi.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_fi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fi.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_fi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fr.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_fr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fr.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_fr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fr.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_fr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fr_CA.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_fr_CA.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fr_CA.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_fr_CA.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_fr_CA.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_fr_CA.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_gl.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_gl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_gl.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_gl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_gl.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_gl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_de.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_de.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_de.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_de.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_de.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_de.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_el.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_el.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_el.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_el.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_el.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_el.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_he.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_he.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_he.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_he.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_he.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_he.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hi.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_hi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hi.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_hi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hi.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_hi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh_HK.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_zh_HK.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh_HK.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_zh_HK.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh_HK.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_zh_HK.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hu.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_hu.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hu.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_hu.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_hu.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_hu.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_is.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_is.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_is.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_is.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_is.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_is.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_id.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_id.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_id.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_id.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_id.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_id.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_it.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_it.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_it.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_it.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_it.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_it.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ja.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ja.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ja.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ja.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ja.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ja.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ko.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ko.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ko.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ko.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ko.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ko.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_lv.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_lv.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_lv.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_lv.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_lv.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_lv.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_lt.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_lt.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_lt.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_lt.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_lt.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_lt.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ms.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ms.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ms.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ms.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ms.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ms.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_no.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_no.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_no.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_no.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_no.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_no.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pl.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_pl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pl.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_pl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pl.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_pl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pt.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_pt.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pt.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_pt.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pt.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_pt.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pt_BR.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_pt_BR.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pt_BR.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_pt_BR.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_pt_BR.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_pt_BR.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_zh.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_zh.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_zh.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ro.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ro.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ro.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ro.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ro.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ro.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ru.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ru.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ru.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ru.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ru.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ru.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sr.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_sr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sr.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_sr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sr.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_sr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sk.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_sk.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sk.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_sk.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sk.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_sk.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sl.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_sl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sl.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_sl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sl.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_sl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_es.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_es.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_es.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_es.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_es.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_es.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_es_419.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_es_419.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_es_419.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_es_419.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_es_419.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_es_419.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sv.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_sv.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sv.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_sv.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_sv.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_sv.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_tl.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_tl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_tl.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_tl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_tl.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_tl.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh_TW.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_zh_TW.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh_TW.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_zh_TW.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_zh_TW.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_zh_TW.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_th.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_th.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_th.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_th.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_th.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_th.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_tr.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_tr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_tr.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_tr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_tr.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_tr.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_uk.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_uk.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_uk.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_uk.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_uk.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_uk.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ur.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_ur.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ur.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_ur.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_ur.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_ur.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_vi.ts
+OPTION QMFILE /epoc32/data/z/resource/qt/translations/calwidget_vi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_vi.ts
+OPTION QMFILE /epoc32/release/winscw/udeb/z/resource/qt/translations/calwidget_vi.qm
+END
+
+START EXTENSION qt/ts2qm
+OPTION TSFILE /epoc32/include/platform/qt/translations/calwidget_vi.ts
+OPTION QMFILE /epoc32/release/winscw/urel/z/resource/qt/translations/calwidget_vi.qm
END
#if defined(WINSCW)
START EXTENSION qt/qmake_emulator_deployment
-OPTION DEPLOY_SOURCE e:/sf/mw/securitysrv/securitydialogs/Autolock/autolock.qcrml
-OPTION DEPLOY_TARGET E:/epoc32/winscw/c/resource/qt/crml/autolock.qcrml
+OPTION DEPLOY_SOURCE a:/sf/mw/securitysrv/securitydialogs/Autolock/autolock.qcrml
+OPTION DEPLOY_TARGET A:/epoc32/winscw/c/resource/qt/crml/autolock.qcrml
END
#endif
START EXTENSION qt/qmake_emulator_deployment
-OPTION DEPLOY_SOURCE e:/sf/mw/securitysrv/securitydialogs/Autolock/autolock.qcrml
-OPTION DEPLOY_TARGET E:/epoc32/data/z/resource/qt/crml/autolock.qcrml
+OPTION DEPLOY_SOURCE a:/sf/mw/securitysrv/securitydialogs/Autolock/autolock.qcrml
+OPTION DEPLOY_TARGET A:/epoc32/data/z/resource/qt/crml/autolock.qcrml
END
START EXTENSION qt/qmake_store_build
END
-START EXTENSION qt/qtextensions_pre_targetdep.export
-OPTION PREDEP_TARGET Autolock_reg.rss
-OPTION COMMAND xqsreg.exe Autolock 0x100059B5 service_conf.xml Autolock_reg.rss embeddable hidden
-END
prj_exports
./rom/Autolock.iby CORE_APP_LAYER_IBY_EXPORT_PATH(Autolock.iby)
+./conf/Autolock.confml MW_LAYER_CONFML(Autolock.confml)
+./conf/lock.confml MW_LAYER_CONFML(lock.confml)
+./rom/AutolockSrv.iby CORE_APP_LAYER_IBY_EXPORT_PATH(AutolockSrv.iby)
+./PubSub/SecurityUIsPrivatePSKeys.h |../../inc/securityuisprivatepskeys.h
+./conf/lock_10283322.crml MW_LAYER_CRML(lock_10283322.crml)
Binary file securitydialogs/Autolock/conf/lock.confml has changed
Binary file securitydialogs/Autolock/conf/lock_10283322.crml has changed
--- a/securitydialogs/Autolock/rom/Autolock.iby Wed Aug 18 10:40:08 2010 +0300
+++ b/securitydialogs/Autolock/rom/Autolock.iby Thu Sep 02 21:22:45 2010 +0300
@@ -21,7 +21,7 @@
S60_APP_EXE(Autolock)
S60_APP_BITMAP(Autolock)
-S60_APP_AIF_RSC(Autolock)
+//S60_APP_AIF_RSC(Autolock)
S60_APP_RESOURCE(Autolock)
file=ABI_DIR\BUILD_DIR\autolockuseractivityservice.dll SHARED_LIB_DIR\autolockuseractivityservice.dll
@@ -31,8 +31,8 @@
// file=ABI_DIR\BUILD_DIR\IndicatorAutolockPlugin.dll SHARED_LIB_DIR\IndicatorAutolockPlugin.dll
// Autolock_reg.rsc needs to be also in import\apps because this is where QtHighway searches for it.
-data=ZPRIVATE\10003a3f\import\apps\Autolock_reg.rsc private\10003a3f\import\apps\Autolock_reg.rsc
-
+data=ZSYSTEM\..\PRIVATE\10003a3f\import\apps\Autolock_reg.rsc private\10003a3f\import\apps\Autolock_reg.rsc
+
// this is already done in IndicatorAutolockPlugin.iby
// data=\epoc32\data\z\resource\plugins\indicators\indicatorautolockplugin.qtplugin \resource\plugins\indicators\indicatorautolockplugin.qtplugin
--- a/securitydialogs/Autolock/src/Autolock.cpp Wed Aug 18 10:40:08 2010 +0300
+++ b/securitydialogs/Autolock/src/Autolock.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -19,8 +19,6 @@
*
*/
-// #include "xqservicelog.h"
-
#include <QCoreApplication>
#include <QKeyEvent>
#include <QEvent>
@@ -44,6 +42,7 @@
#include <settingsinternalcrkeys.h> // CenRep keys
#include <w32std.h>
#include <eikenv.h>
+#include <aknsoundsystem.h>
#include <secuisecuritysettings.h>
#include <secui.h>
@@ -169,6 +168,7 @@
TInt lightsTimeout = 0;
CRepository* repository = NULL;
TInt cRresult = 0;
+ iLockCodeQueryInDisplay = EFalse;
Q_UNUSED(cRresult);
iProcessingEvent = -1;
@@ -358,7 +358,9 @@
if (aReason == ELockAppDisableDevicelock)
{
RDEBUG("calling AskSecCodeInAutoLockL", 0);
+ 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)
@@ -995,6 +997,12 @@
if (status == 0) // hide
{
// aReason is not important here, but let's check nevertheless
+ 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);
+
if (aReason != ELockAppDisableKeyguard && aReason != ELockAppDisableDevicelock)
{
RDEBUG("!!!!****!!!!! error. status=0 but aReason", aReason);
@@ -1009,6 +1017,7 @@
switchScreensaverMode( ESnsrViewTypeDisabled);
disconnect(iDeviceDialog, SIGNAL(dataReceived(QVariantMap)), this, SLOT(handleMessageFromScreensaver(QVariantMap)));
+ disconnect(iDeviceDialog, SIGNAL(deviceDialogClosed()), this, SLOT(handleScreensaverClosed()));
RDEBUG("signal disconnected", err);
// TODO this crashes for EDeviceDialogScreenSaver
err = iDeviceDialog->cancel();
@@ -1049,6 +1058,14 @@
}
else if (status == 1) // 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;
@@ -1075,6 +1092,7 @@
iDeviceDialog = new HbDeviceDialog(HbDeviceDialog::NoFlags, this);
// in theory this is needed only for screensaver, not for LockIcon. But it doesn't harm
connect(iDeviceDialog, SIGNAL(dataReceived(QVariantMap)), SLOT(handleMessageFromScreensaver(QVariantMap)));
+ connect(iDeviceDialog, SIGNAL(deviceDialogClosed()), SLOT(handleScreensaverClosed()));
iDeviceDialogCreated = EDeviceDialogCreated;
RDEBUG("new iDeviceDialogCreated", iDeviceDialogCreated);
}
--- a/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Wed Aug 18 10:40:08 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -261,7 +261,7 @@
lCancelSupported = ESecUiCancelSupported;
TBuf<0x100> title;
title.Zero();
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("AskSecCodeL"));
+ HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_sec_code"));
title.Append(stringHolder->Des());
CleanupStack::PopAndDestroy(stringHolder);
title.Append(_L("$"));
@@ -706,7 +706,7 @@
RDEBUG("lType", lType);
TBuf<0x100> title;
title.Zero();
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("PassPhraseRequiredL"));
+ HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_sec_code"));
title.Append(stringHolder->Des());
CleanupStack::PopAndDestroy(stringHolder);
queryAccepted = iSecQueryUi->SecQueryDialog(title, iSecUi_password, SEC_C_SECURITY_CODE_MIN_LENGTH, SEC_C_SECURITY_CODE_MAX_LENGTH, lType);
@@ -1541,7 +1541,7 @@
TBuf<0x100> title;
title.Zero();
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("Puk2RequiredL"));
+ HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_puk2_code"));
title.Append(stringHolder->Des());
CleanupStack::PopAndDestroy(stringHolder);
title.Append(_L("$"));
@@ -1606,9 +1606,13 @@
iQueryCanceled = EFalse;
TBuf<0x100> title;
title.Zero();
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("PIN2-New|PIN2-Verif"));
+ HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_pin2_code"));
title.Append(stringHolder->Des());
CleanupStack::PopAndDestroy(stringHolder);
+ title.Append(_L("|"));
+ HBufC* stringHolder2 = HbTextResolverSymbian::LoadLC(_L("Verify"));
+ title.Append(stringHolder2->Des());
+ CleanupStack::PopAndDestroy(stringHolder2);
// ESecUiCodeEtelReqest/ESecUiNone might be useful
queryAccepted = iSecQueryUi->SecQueryDialog(title, aNewPassword, SEC_C_PIN2_CODE_MIN_LENGTH, SEC_C_PIN2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
| secCodeType);
@@ -1842,7 +1846,7 @@
TBuf<0x100> title;
title.Zero();
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("UPuk1RequiredL"));
+ HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_puk_code"));
title.Append(stringHolder->Des());
CleanupStack::PopAndDestroy(stringHolder);
title.Append(_L("$"));
--- a/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Wed Aug 18 10:40:08 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -1726,7 +1726,7 @@
// this queries both, and verifies itself
TBuf<0x100> title;
title.Zero();
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_pin_code|PIN1-Ver"));
+ HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_pin_code"));
title.Append(stringHolder->Des());
CleanupStack::PopAndDestroy(stringHolder);
title.Append(_L("|"));
@@ -2122,7 +2122,7 @@
// this queries both, and verifies itself
TBuf<0x100> title;
title.Zero();
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_pin2_code PIN2-Ver"));
+ HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_pin2_code"));
title.Append(stringHolder->Des());
CleanupStack::PopAndDestroy(stringHolder);
title.Append(_L("|"));
--- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialogplugin.cpp Wed Aug 18 10:40:08 2010 +0300
+++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialogplugin.cpp Thu Sep 02 21:22:45 2010 +0300
@@ -122,6 +122,14 @@
#endif
info->group = CriticalGroup;
}
+ // The unlock-query must have lower priority, to get over change PIN code request.
+ else if( iqueryType == 0xB000000 )
+ {
+ #ifdef _DEBUG
+ RDebug::Printf( "SecUiNotificationDialogPlugin::deviceDialogInfo GenericDeviceDialogGroup=%x", GenericDeviceDialogGroup );
+ #endif
+ info->group = GenericDeviceDialogGroup;
+ }
}
// Return device dialog flags