diff -r 000000000000 -r 2c201484c85f cryptoservices/certificateandkeymgmt/swicertstore/CSWICertStoreImpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cryptoservices/certificateandkeymgmt/swicertstore/CSWICertStoreImpl.h Wed Jul 08 11:25:26 2009 +0100 @@ -0,0 +1,110 @@ +/* +* Copyright (c) 2004-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: +* CSWICertStoreImpl class implementation +* +*/ + + + + +/** + @file + @internalTechnology +*/ + +#ifndef __CSWICERTSTOREIMPL_H__ +#define __CSWICERTSTOREIMPL_H__ + +#include +#include +#include +#include +#include + +class MCTToken; +class CCTCertInfo; +class CSWICertStoreEntryList; +class CCertAttributeFilter; +class TCTTokenObjectHandle; +class CSWICertStoreEntry; +class TCertMetaInfo; + +/** + * This class implements the guts of the SWI cert store. It is mainly a cut + * down version of the filetokens cert store server. + */ +NONSHARABLE_CLASS(CSWICertStoreImpl) : public CActive + { +public: + static CSWICertStoreImpl* NewL(MCTToken& aToken, RFs& aFs); + virtual ~CSWICertStoreImpl(); + +public: + // For MCTCertStore + void ListL(RMPointerArray& aCerts, + const CCertAttributeFilter& aFilter); + CCTCertInfo* GetCertL(const TCTTokenObjectHandle& aHandle); + void ApplicationsL(const TCTTokenObjectHandle& aHandle, RArray& aAplications); + TBool IsApplicableL(const TCTTokenObjectHandle& aHandle, TUid aApplication); + TBool TrustedL(const TCTTokenObjectHandle& aHandle); + void RetrieveL(const TCTTokenObjectHandle& aHandle, TDes8& aEncodedCert); + + // Addtional meta-data accessors + const TCertMetaInfo& CertMetaInfoL(const TCTTokenObjectHandle& aHandle) const; + +private: + CSWICertStoreImpl(MCTToken& aToken, RFs& aFs); + void ConstructL(); + + // Open the Writable certstore and setup the iCEntryList + void SetupWritableCertStoreL(); + + // Open the ROM certstore and setup the iZEntryList + void SetupROMCertStoreL(); + void SetupCompositeROMCertStoreL(); + static void FilterCertificateListL(RMPointerArray& aCerts, + const CCertAttributeFilter& aFilter, const CSWICertStoreEntryList& aEntryList); + static void AddIfMatchesFilterL(RMPointerArray& aCerts, + const CCertAttributeFilter& aFilter, const CSWICertStoreEntry& aEntry); + const CSWICertStoreEntry* GetCSWICertStoreEntryL(const TCTTokenObjectHandle& aHandle, TBool& aCEntryHandle) const; + void MergeCertificateEntryListsL(const CSWICertStoreEntryList& aSourceList, TBool aIsZEntryList = EFalse ); + +protected: // From CActive + void DoCancel(); + void RunL(); + +private: + /// Cert store token + MCTToken& iToken; + + /// File server session + RFs& iFs; + + /// Persistent store containg the certs + CPermanentFileStore* iCStore; + CPermanentFileStore* iZStore; + + /// The list of certificates contained in the store. + CSWICertStoreEntryList* iCEntryList; + CSWICertStoreEntryList* iZEntryList; + + TInt iCertIndex; + RProperty iSwicertstoreProperty; + RPointerArray iZArrayOfStores; + /// Used to distinguish variant specific feature from the default. + TUint8 iPatchableConst; + }; + +#endif