# HG changeset patch # User hgs # Date 1282292870 -10800 # Node ID 6ed68423b75947a4398ef261e6c4870284cfda87 # Parent eb08ec9af6e4740f256659543ea1c15e6958ce82 201033_01 diff -r eb08ec9af6e4 -r 6ed68423b759 cpsecplugins/devicelockplugin/src/cpdevicelockpluginview.cpp --- a/cpsecplugins/devicelockplugin/src/cpdevicelockpluginview.cpp Wed Aug 11 12:39:55 2010 +0300 +++ b/cpsecplugins/devicelockplugin/src/cpdevicelockpluginview.cpp Fri Aug 20 11:27:50 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++; diff -r eb08ec9af6e4 -r 6ed68423b759 gba/gbaserver/inc/dataretriever.h --- a/gba/gbaserver/inc/dataretriever.h Wed Aug 11 12:39:55 2010 +0300 +++ b/gba/gbaserver/inc/dataretriever.h Fri Aug 20 11:27:50 2010 +0300 @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include "M3GPPAuthenticationCallback.h" @@ -147,7 +147,7 @@ RSocketServ iSockServ; C3GPPBootstrapHttpHandler* iHttpHandler; // we own this MBootstrapCallBack* iBootstrapCallBack; // don't own this - RCmManagerExt iCmManagerExt; + RCmManager iCmManager; }; diff -r eb08ec9af6e4 -r 6ed68423b759 gba/gbaserver/src/dataretriever.cpp --- a/gba/gbaserver/src/dataretriever.cpp Wed Aug 11 12:39:55 2010 +0300 +++ b/gba/gbaserver/src/dataretriever.cpp Fri Aug 20 11:27:50 2010 +0300 @@ -21,10 +21,9 @@ #include #include #include -#include #include #include -#include +#include #include #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 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 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++; diff -r eb08ec9af6e4 -r 6ed68423b759 gba/sis/gba.pkg --- a/gba/sis/gba.pkg Wed Aug 11 12:39:55 2010 +0300 +++ b/gba/sis/gba.pkg Fri Aug 20 11:27:50 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 diff -r eb08ec9af6e4 -r 6ed68423b759 gba/sis/gba_stub.pkg --- a/gba/sis/gba_stub.pkg Wed Aug 11 12:39:55 2010 +0300 +++ b/gba/sis/gba_stub.pkg Fri Aug 20 11:27:50 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"} diff -r eb08ec9af6e4 -r 6ed68423b759 gba/sis/gba_stub.sis Binary file gba/sis/gba_stub.sis has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/group/bld.inf --- a/pkiutilities/group/bld.inf Wed Aug 11 12:39:55 2010 +0300 +++ b/pkiutilities/group/bld.inf Fri Aug 20 11:27:50 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 ) diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/data/20031DB3.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/data/20031DB3.rss Fri Aug 20 11:27:50 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 +#include + +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; + } + }; + } + }; + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/group/bld.inf Fri Aug 20 11:27:50 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 + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../rom/securitydialognotifier.iby CORE_MW_LAYER_IBY_EXPORT_PATH( securitydialognotifier.iby ) + +PRJ_MMPFILES +securitydialognotifier.mmp + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/group/securitydialognotifier.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/group/securitydialognotifier.mmp Fri Aug 20 11:27:50 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 + +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 diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/inc/securitydialognotifier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/inc/securitydialognotifier.h Fri Aug 20 11:27:50 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 // 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/inc/securitydialognotifiersrv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/inc/securitydialognotifiersrv.h Fri Aug 20 11:27:50 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 // RSessionBase +#include // 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/inc/securitydialogs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/inc/securitydialogs.h Fri Aug 20 11:27:50 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 // CActive +#include // 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/inc/securitydialogstrace.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/inc/securitydialogstrace.h Fri Aug 20 11:27:50 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 // 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 aFmt, ... ) + { + VA_LIST list; + VA_START( list, aFmt ); + TBuf buf; + buf.AppendFormatList( aFmt, list ); + RDebug::Print( buf ); + } +#endif + + +#endif // SECURITYDIALOGSTRACE_H + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/rom/securitydialognotifier.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/rom/securitydialognotifier.iby Fri Aug 20 11:27:50 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 + +ECOM_PLUGIN( securitydialognotifier.dll, securitydialognotifier.rsc ) + +#endif // SECURITYDIALOGNOTIFIER_IBY + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/src/securitydialogmain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/src/securitydialogmain.cpp Fri Aug 20 11:27:50 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 // TImplementationProxy definition + +const TInt KNumberOfImplementations = 1; + + +// ---------------------------------------------------------------------------- +// CreateNotifiersL() +// ---------------------------------------------------------------------------- +// +void CreateNotifiersL( CArrayPtr& aNotifierArray ) + { + CSecurityDialogNotifier* notifier = CSecurityDialogNotifier::NewL(); + CleanupStack::PushL( notifier ); + aNotifierArray.AppendL( notifier ); + CleanupStack::Pop( notifier ); + } + +// ---------------------------------------------------------------------------- +// NotifierArray() +// ---------------------------------------------------------------------------- +// +CArrayPtr* NotifierArray() + { + CArrayPtr* notifierArray = + new CArrayPtrFlat( 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; + } diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/src/securitydialognotifier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/src/securitydialognotifier.cpp Fri Aug 20 11:27:50 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 ); + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/src/securitydialognotifiersrv.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/src/securitydialognotifiersrv.cpp Fri Aug 20 11:27:50 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; +} + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/src/securitydialogs.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/src/securitydialogs.cpp Fri Aug 20 11:27:50 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; + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.cpp Fri Aug 20 11:27:50 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifdef Q_OS_SYMBIAN +#include // TValidationError +#include // TServerAuthenticationFailureInput, KUidSecurityDialogNotifier + +HBufC8* GetInputBufferL( const QString& server, const QByteArray& certificate, int reason ) + { + const TPtrC16 serverNameUnicode(reinterpret_cast(server.constData()), + server.length()); + const TPtrC8 encodedCert(reinterpret_cast(certificate.constData()), + certificate.length()); + + const TInt KServerNameMaxLength = 512; + TBuf8 serverName; + serverName.Copy(serverNameUnicode); + + TServerAuthenticationFailureInput serverAuthenticationInput; + serverAuthenticationInput.iOperation = EServerAuthenticationFailure; + serverAuthenticationInput.iFailureReason = static_cast(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 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 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)); + } + } +} + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.h Fri Aug 20 11:27:50 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 + +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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.iby Fri Aug 20 11:27:50 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__ diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.pkg Fri Aug 20 11:27:50 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" + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglauncher.pro Fri Aug 20 11:27:50 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 " \ + "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" diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglaunchermain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/srvauthfaildlglaunchermain.cpp Fri Aug 20 11:27:50 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(); +} + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/IntermediateCert.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/IntermediateCert.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/RootCert.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/RootCert.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert1.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert1.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert2_noCN.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert2_noCN.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert3_exp.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert3_exp.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert4_exp2.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert4_exp2.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert5_alg.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert5_alg.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert6_key.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert6_key.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert8_aia.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert8_aia.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert9_san.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/ServerCert9_san.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/SevverCert7_ocsp.cer Binary file pkiutilities/securitydialognotifier/tsrc/srvauthfaildlglauncher/testCerts/SevverCert7_ocsp.cer has changed diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/group/bld.inf Fri Aug 20 11:27:50 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 + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../rom/securitydialognotifiersrv.iby CORE_MW_LAYER_IBY_EXPORT_PATH( securitydialognotifiersrv.iby ) + +PRJ_MMPFILES +securitydialognotifiersrv.mmp + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/group/securitydialognotifiersrv.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/group/securitydialognotifiersrv.mmp Fri Aug 20 11:27:50 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 + +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 diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/securitydialognotifierserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialognotifierserver.h Fri Aug 20 11:27:50 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 // 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/securitydialognotifierservername.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialognotifierservername.h Fri Aug 20 11:27:50 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/securitydialognotifiersession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialognotifiersession.h Fri Aug 20 11:27:50 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 // 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/securitydialogoperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperation.h Fri Aug 20 11:27:50 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 // 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/securitydialogoperationobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperationobserver.h Fri Aug 20 11:27:50 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/securitydialogoperserverauthfail.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogoperserverauthfail.h Fri Aug 20 11:27:50 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 // TValidationError +#include // RMPointerArray +#include // RFs +#include // 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 iCertInfos; + TInt iRetrieveCertIndex; + HBufC8* iRetrievedCertBuffer; + + enum { + EInitialiseCertStore, + EListTrustedSiteCerts, + ERetrieveTrustedSiteCert, + ESavingServerCert + } iMode; + }; + +#endif // SECURITYDIALOGOPERSERVERAUTHFAIL_H + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/securitydialogstrace.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/securitydialogstrace.h Fri Aug 20 11:27:50 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 // 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 aFmt, ... ) + { + VA_LIST list; + VA_START( list, aFmt ); + TBuf buf; + buf.AppendFormatList( aFmt, list ); + RDebug::Print( buf ); + } +#endif + + +#endif // SECURITYDIALOGSTRACE_H + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/inc/untrustedcertquery.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/inc/untrustedcertquery.h Fri Aug 20 11:27:50 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 // CActive +#include // MHbDeviceDialogObserver +#include // 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 + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/rom/securitydialognotifiersrv.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/rom/securitydialognotifiersrv.iby Fri Aug 20 11:27:50 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 + +file=ABI_DIR\BUILD_DIR\securitydialognotifiersrv.exe sys\bin\securitydialognotifiersrv.exe + +#endif // SECURITYDIALOGNOTIFIERSRV_IBY + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/src/securitydialognotifierserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/src/securitydialognotifierserver.cpp Fri Aug 20 11:27:50 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 ); + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/src/securitydialognotifierservermain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/src/securitydialognotifierservermain.cpp Fri Aug 20 11:27:50 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; + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/src/securitydialognotifiersession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/src/securitydialognotifiersession.cpp Fri Aug 20 11:27:50 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 // 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" ); + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/src/securitydialogoperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/src/securitydialogoperation.cpp Fri Aug 20 11:27:50 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; + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/src/securitydialogoperserverauthfail.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/src/securitydialogoperserverauthfail.cpp Fri Aug 20 11:27:50 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 +#include // CUnifiedCertStore +#include // CCTCertInfo +#include // 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; + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/securitydialognotifiersrv/src/untrustedcertquery.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/securitydialognotifiersrv/src/untrustedcertquery.cpp Fri Aug 20 11:27:50 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 // 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(); + 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; + } + diff -r eb08ec9af6e4 -r 6ed68423b759 pkiutilities/untrustedcertificatedialog/src/untrustedcertificatewidget.cpp --- a/pkiutilities/untrustedcertificatedialog/src/untrustedcertificatewidget.cpp Wed Aug 11 12:39:55 2010 +0300 +++ b/pkiutilities/untrustedcertificatedialog/src/untrustedcertificatewidget.cpp Fri Aug 20 11:27:50 2010 +0300 @@ -24,7 +24,6 @@ #include #include #include -#include 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); diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/Autolock/Autolock.pro --- a/securitydialogs/Autolock/Autolock.pro Wed Aug 11 12:39:55 2010 +0300 +++ b/securitydialogs/Autolock/Autolock.pro Fri Aug 20 11:27:50 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 diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/Autolock/bld.inf --- a/securitydialogs/Autolock/bld.inf Wed Aug 11 12:39:55 2010 +0300 +++ b/securitydialogs/Autolock/bld.inf Fri Aug 20 11:27:50 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) diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/Autolock/conf/lock.confml Binary file securitydialogs/Autolock/conf/lock.confml has changed diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/Autolock/conf/lock_10283322.crml Binary file securitydialogs/Autolock/conf/lock_10283322.crml has changed diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/Autolock/rom/Autolock.iby --- a/securitydialogs/Autolock/rom/Autolock.iby Wed Aug 11 12:39:55 2010 +0300 +++ b/securitydialogs/Autolock/rom/Autolock.iby Fri Aug 20 11:27:50 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 diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp --- a/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Wed Aug 11 12:39:55 2010 +0300 +++ b/securitydialogs/SecUi/Src/SecUiSecurityHandler.cpp Fri Aug 20 11:27:50 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("$")); diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp --- a/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Wed Aug 11 12:39:55 2010 +0300 +++ b/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp Fri Aug 20 11:27:50 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("|")); diff -r eb08ec9af6e4 -r 6ed68423b759 securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialogplugin.cpp --- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialogplugin.cpp Wed Aug 11 12:39:55 2010 +0300 +++ b/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationdialogplugin.cpp Fri Aug 20 11:27:50 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