diff -r 000000000000 -r 2c201484c85f cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.h Wed Jul 08 11:25:26 2009 +0100 @@ -0,0 +1,101 @@ +/* +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CFSCertAppsServer class implementation +* +*/ + + + + +/** + @file + @internalTechnology +*/ + +#ifndef __CFSCERTAPPSSERVER_H__ +#define __CFSCERTAPPSSERVER_H__ + +#include +#include +#include +#include + +class CFSCertAppsToken; +class CCertAppsSession; +class CCertAppsConduit; + +class CFSCertAppsServer : public CBase + { +public: + static CFSCertAppsServer* NewL(); + virtual ~CFSCertAppsServer(); + CCertAppsSession* CreateSessionL(); + +public: + void AddL(const TCertificateAppInfo& aClient); + void RemoveL(const TUid& aUid); + TInt ApplicationCountL() const; + void ApplicationsL(RArray& aAppArray) const; + void ApplicationL(const TUid& aUid, TCertificateAppInfo& aInfo) const; + +private: + CFSCertAppsServer(); + void ConstructL(); + + /// Finds an application and returns NULL if not found - if aIndex is not + /// null then index is copied there + const TCertificateAppInfo* FindApplication(const TUid& aUid, TInt* aIndex = NULL) const; + + /// Configures the object from the file store. Will create a new store + /// if one does not exist + void OpenStoreL(); + /// Opens a Composite store present under ROM drive. + void OpenCompositeStoreL(const TDesC& aFilename); + /// Attempt to load the cert apps from the given file + void ReadStoreContentsL(const TDesC& aFilename); + /// Create a new empty store + void CreateStoreL(const TDesC& aFilename); + /// aggregate the store files + void AggregateStoreFileL(const TDesC& aFile); + /// aggregate certificate client entries. + void MergeCertificateEntryListL(const RArray& aSourceList); + /// finds if an uid exists in the entry list + TBool FindUid(const TUid& aUid); + // TCleanup items used when creating a store or replacing a stream + static void DeleteStoreFile(TAny* aThis); + static void RevertStore(TAny* aStore); + + /// Replaces the store - called by both Add and Remove. + /// Leaves if failed. ExcludedIndex is the index into the + /// array to be excluded. -1 if none are excluded + void ReplaceAndCommitL(TInt aExcludedIndex = -1); + + /// Externalizes the array into a stream - commits it if successful + void WriteClientArrayL(RWriteStream& stream, TInt aExcludedIndex = -1) const; + +private: + /// The conduit object used for marshalling/unmarshalling client communications + CCertAppsConduit* iConduit; + RFs iFs; + /// The store where the client are stored + CPermanentFileStore* iStore; + TStreamId iId; + /// A cache of the contents of the store + RArray iClients; + /// Used to distinguish variant specific feature from the default. + TUint8 iPatchableConst; + }; + +#endif // __CFSCERTAPPSSERVER_H__